Jenkins任意文件读取CVE-2018-1999002漏洞的示例分析

这篇文章主要介绍了Jenkins任意文件读取CVE-2018-1999002漏洞的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、    漏洞背景

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请求头设置阻断规则过滤该请求头中包含 ../的请求,防止攻击者利用该漏洞通过目录穿越读取任意文件。

感谢你能够认真阅读完这篇文章,希望小编分享的“Jenkins任意文件读取CVE-2018-1999002漏洞的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注行业资讯频道,更多相关知识等着你来学习!