ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Jira未授权SSRF漏洞(CVE-2019-8451)

2021-12-31 17:03:10  阅读:277  来源: 互联网

标签:Jira jira SSRF url atlassian gadgets 漏洞 2019 servlet


漏洞描述

Jira的/plugins/servlet/gadgets/makeRequest资源存在SSRF漏洞,原因在于JiraWhitelist这个类的逻辑缺陷,成功利用此漏洞的远程攻击者可以以Jira服务端的身份访问内网资源。经分析,此漏洞无需任何凭据即可触发。

漏洞危害

远程攻击者可以利用此漏洞以Jira服务端的身份访问内网资源。

漏洞影响版本

Jira < 8.4.0

漏洞分析

两个关键信息点:
• 漏洞点在/plugins/servlet/gadgets/makeRequest
• 原因在于JiraWhitelist这个类的逻辑缺陷
首先直接去访问http://192.168.60.244:8080/plugins/servlet/gadgets/makeRequest会报404
在这里插入图片描述然后开始按照以往Jira/Confluence的漏洞搜索方法
在这里插入图片描述
然而通过这一点并没有搜出来直接到漏洞点的地方。换另一条思路,搜索:JiraWhitelist
在这里插入图片描述
找到了这个类是在atlassian-jira/WEB-INF/classes目录下,于是在IDEA中直接将这个目录加到Library中(否则调试无法进入),然后在其可疑方法allows下断点
在这里插入图片描述
发起一个/plugins/servlet/gadgets/makeRequest的请求,但是这个时候没能直接触发到断点。后来找到了一个跟这个比较像的url:/plugins/servlet/gadgets/dashboard-diagnostics深入跟进了一下,发现原来是所有/plugins/servlet开头的url会交给某一些类处理,而这是在web.xml中配置的:
在这里插入图片描述在这里插入图片描述这里url中的/plugins/servlet匹配到了servlet-module-container-servlet对应的servlet为:com.atlassian.jira.plugin.servlet.ServletModuleContainerServlet。然后后面通过request.getPathInfo()来获取url后面的内容。参考:https://blog.csdn.net/turkeyzhou/article/details/3270289
在这里插入图片描述获取到之后,去一个Map里查找
在这里插入图片描述找到这个pathInfo对应的Servlet descriptor
在这里插入图片描述然后根据这个descriptor找到具体的Servlet类
在这里插入图片描述这里显示已经找到了:
在这里插入图片描述这个Servlet为com.atlassian.gadgets.shindig.servlet.XsrfMakeRequestServlet。
至此终于定位到了处理具体请求的地方。
跟进这个类atlassian-jira/WEB-INF/atlassian-bundled-plugins/atlassian-gadgets- opensocial-plugin-4.3.9.jar!/com/atlassian/gadgets/shindig/servlet /XsrfMakeRequestServlet的doGet方法。
可以看到这里对请求中的请求头X-Atlassian-Token: no-check做了判断,如果请求中没有这个请求头,则直接响应404了。
在这里插入图片描述注:这个请求头是官方提供的一种绕过Jira自身CSRF防御的方式,用于告诉Jira不对此请求进行CSRF防御,方便在自动化脚本中使用。具体介绍可以参考:https://developer.atlassian.com/server/jira/platform/form-token-handling/
到这里就解释了为什么直接访问这个url会响应404了。
带上这个请求头,继续调试。跟进其父类即org.apache.shindig.gadgets.servlet.MakeRequestServlet的doGet方法。由于这个包没有在Jira提供的jar包中找到,最后去这里:https://repo1.maven.org/maven2/org/apache/shindig/shindig-gadgets/2.5.2/shindig-gadgets-2.5.2.jar 找了一个jar包作为Library供IDEA调试。最后跟进到了atlassian-jira/WEB-INF/classes/com /atlassian/jira/dashboard/JiraWhitelist#allows方法中,对请求中的url参数进行判断。
在这里插入图片描述如果请求中的 url满足以Jira服务的canonicalBaseUrl开头,则认为这个url符合白名单的规则:这里应该就是漏洞描述中atlassian-jira/WEB-INF/classes/com/atlassian/jira/dashboard/JiraWhitelist#allows方法的逻辑缺陷了。
符合白名单的规则就接着使用atlassian-jira-6.4.14-standalone/atlassian-jira/WEB-INF/lib/httpclient-4.3.6.jar!/org/apache/http/client/utils/URIUtils这个工具类将url中的协议名、Host名、端口等提取出来。
在这里插入图片描述在这里插入图片描述在这里插入图片描述通过跟踪代码,发现它只判断了url是否以<jira服务的协议://ip:port>开头,所以poc中能进行SSRF请求的协议只能是HTTP/HTTPS。

环境搭建

  1. 开启docker环境
    docker-compose build
    docker-compose up -d
    在这里插入图片描述
  2. 访问ip:8080进行安装,选择第二个
    在这里插入图片描述
  3. 按照提示继续即可

在这里插入图片描述在这里插入图片描述在这里插入图片描述4. 生成JIRA使用许可证
在这里插入图片描述5. 生成之后找到License Key,回到页面填上License Key继续安装
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
6. 至此,安装完毕

在这里插入图片描述

漏洞复现

  1. 先访问ip:8080,然后刷新抓包,将数据包替换为如下Poc:
GET /plugins/servlet/gadgets/makeRequest?url=http://10.206.1.8:8080@www.baidu.com HTTP/1.1
Host: 10.206.1.8:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchangeb;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
X-Atlassian-Token: no-check
Connection: close
  1. 通过bupsuit进行请求如下,在响应中可以看到成功探测目标系统存在ssrf漏洞:
    在这里插入图片描述3. 通过bupsuit进行请求如下,在响应中可以看到探测失败则会显示响应500:
    在这里插入图片描述

POC验证:

使用方法:python3 poc.py -u http://192.168.60.244:8080
在这里插入图片描述

修复建议

升级到8.4.0及以上版本

标签:Jira,jira,SSRF,url,atlassian,gadgets,漏洞,2019,servlet
来源: https://blog.csdn.net/weixin_42181573/article/details/122258713

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有