Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析

admin 2022年4月9日16:48:45安全文章评论41 views2148字阅读7分9秒阅读模式

山东新潮信息

专业|专注|卓越|安全


Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析
Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析
Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析
Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析
Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析
Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析
Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析


声明:Tide安全团队原创文章,转载请声明出处!文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!


一、    漏洞背景

Jenkins官方发布最新安全通告,披露多个安全漏洞。其中,SECURITY-914是由Orange发现的Jenkins未授权任意文件读取漏洞,存在高危风险。

利用该漏洞,攻击者可以读取Windows系统服务器中的任意文件,且在特定而条件下也可以读取Linux系统服务器中的文件。通过利用该文件读取漏洞,攻击者可以获取Jenkins系统的凭证信息,导致用户的敏感信息遭到泄露。同时,Jenkins的部分凭证可能与其用户的帐号密码相同,攻击者获取到凭证信息后甚至可以直接登录Jenkins系统进行命令执行操作等。

二、    漏洞概要

谁应该读这个   使用Jenkins的开发者和用户  
漏洞的影响   在Jenkins的Stapler Web框架中存在任意文件读取漏洞。恶意攻击者可以通过发送精心构造的HTTP请求在未经授权的情况下获取Jenkin主进程可以访问的Jenkins文件系统中的任意文件内容。  
危害程度   高危  
建议   ·        将您的Jenkins weekly升级至2.133版本。  ·        将您的Jenkins LTS升级至2.121.2版本。  
受影响的软件   ·        Jenkins weekly 2.132及此前所有版本  ·        Jenkins LTS 2.121.1及此前所有版本  
CVE标识符   CVE-2018-1999002  

三、    搭建环境

安装漏洞影响范围内的Jenkins版本: Jenkins weekly 2.132及此前所有版本Jenkins LTS 2.121.1及此前所有版本,此处使用的是Jenkins LTS 2.121.1。

首先把jenkins的war包下载后放在tomcat webapps目录下,启动后自动解压war包或安装msi版本,或使用git从GitHub下载war包。

 Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析

    启动tomcat,访问http://localhost:8080,如果8080默认端口被占用,则可以在Jenkins安装路径下的Jenkins.xml文件中修改端口后访问。打开页面后需要解锁jenkins。在安装目录下找到initialAdminPassword文件复制密码输入到password输入框,点击continue即可进行下一步操作。

 Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析

安装插件后使用管理员进行登录,环境搭建完成。

 Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析

四、    触发条件

1.    进行全局安全配置,开启匿名具有可读权限。

 Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析

 

五、    漏洞分析

doDynamic这里用来处理请求中的包含的路径,比如/plugin/xxxx。

 Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析

 

跟入request.getLocale(),跳至Request.java

 Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析

getLocale()处理Http中的Accept-Language,根据-分为language和country,language为zh,country为cn,然后return Locale(language,country),如果不存在-,language即可使用../遍历,这时返回的结果即为Locale(language,””)。

 Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析

再看Stapler.java中的LocaleDrivenResourceSelector类的open方法,从注释来看,这段代码本身根据Accept-Language来返回不同文件,比如请求为/plugin/credentials/.ini,payload为_../../../../../../../../../../../windows/win,在linux下需要plugin下存在-名称目录可利用,但win下直接可以通过路径穿越绕过,达到任意文件读取效果。

六、    修复建议

1. 将您的Jenkins weekly升级至2.133版本,将您的Jenkins LTS升级至2.121.2版本。

2.如果您暂时不希望通过升级Jenkins版本解决该漏洞,建议您使用Web应用防火墙的精准访问控制功能对您的业务进行防护。

通过精准访问控制功能,针对Accept-Language这个HTTP请求头设置阻断规则过滤该请求头中包含 ../的请求,防止攻击者利用该漏洞通过目录穿越读取任意文件。

七、    参考链接

http://blog.orange.tw/?spm=a2c4g.11186623.2.14.177338f9d0FtTP

https://help.aliyun.com/document_detail/86684.html






E




N




D






Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析


gūan




zhù







men





Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,目前聚集了十多位专业的安全攻防技术研究人员,专注于网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等方向。

想了解更多Tide安全团队,请关注团队官网: http://www.TideSec.net 或长按二维码关注公众号:

Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析





原文始发于微信公众号(白帽子):Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月9日16:48:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析 http://cn-sec.com/archives/888805.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: