快捷搜索:  网络  CVE  渗透  后门  扫描  木马  黑客  as

Jenkins任意文件读取漏洞阐发

1、漏洞违景

漏洞编号:CVE-2018-1999002

漏洞等级:高危

Jenkins 7 月 18 日的安全通告修复了多个漏洞,其中 SECURITY-914 是由 Orange (博客链接:http://blog.orange.tw/)挖出的 Jenkins 未授权任意文件读取漏洞。

腾讯安全云鼎实验室安全研究人员对该漏洞进行阐发发现,行使这个漏洞,攻击者可以读取 Windows 服务器上的任意文件,对于 Linux,在特定前提下也能够进行文件读取。行使文件读取漏洞,攻击者可以获取到 Jenkins 的凭据信息,从而造成敏感信息泄露。另外,在很多时辰,Jenkins 的部分凭据以及其内用户的帐号暗码相同,获取到凭据信息后也能够直接登录 Jenkins 进行命令执行操作等。

二、漏洞阐发

Jenkins 在处理要求的时辰是通过 Stapler 进行处理的,Stapler 是一个 Java Web 框架。查看 web.xml 可知,Stapler 拦截了所有要求:

Jenkins任意文件读取漏洞分析

单步跟入 hudson.util.PluginServletFilter,最后会跟到 jenkins\core\src\main\java\hudson\Plugin.java 的  doDynamic 要领: 

Jenkins任意文件读取漏洞分析

可以发现,Jenkins 在 serve /plugin/SHORTNAME 这个 URL 的时辰,调用的是 StaplerResponse 的 serveLocalizedFile 要领处理静态文件的,继续跟入这个要领:

Jenkins任意文件读取漏洞分析其中 request.getLocale() 是 jetty-server-9.4.5.v20170502-sources.jar!\org\eclipse\jetty\server\Request.java  内的,其完成为: 

Jenkins任意文件读取漏洞分析

无比显然,Jetty 在获取 Locale 的时辰直接从 HTTP Headers 里取出 Accept-Language 头,用 - 宰割后返归了一个 Locale 对象。也就是我传入Accept-Language: ../../../aaaa-bbbbbb 时,那么我将会得到一个 Locale(“../../../aaaa”, “BBBBBB”)对象。

最后到跟入stapler-1.254-sources.jar!\org\kohsuke\stapler\Stapler.java:

Jenkins任意文件读取漏洞分析我们可以发现,Stapler 起首将后缀名单独取出,网络黑客,接着将 Jenkins 目录以及传入的 locale 的 language 和后缀名拼接,然后关上这个路径。那么攻击者只要要组织出以下 HTTP 要求即可造成文件读取: 

Jenkins任意文件读取漏洞分析最后 URL 拼接的现场为: 

Jenkins任意文件读取漏洞分析

在 Windows 下,不存在的目录可以通过 ../ 遍历过去的,而对于 Linux 则不行。那么这个漏洞在 Windows 下是可以任意文件读取的,而在 Linux 下则需要在 Jenkins plugins 目录下存在一个名字中存在 _ 的目录才可以。

Jenkins任意文件读取漏洞分析

3、行使方式

一般来说,文件读取漏洞很难转化为命令执行,对于 Jenkins 也是云云。无非 Jenkins 有一个 Credentials 模块,这个模块储存了 Jenkins 的一些凭据信息,很多时辰,其凭据的帐号暗码是以及 Jenkins 的帐号暗码相同的。无论怎么样,在成功行使文件读取漏洞后,都要将凭据信息读取并解密,以网络更多的信息。

要是我们想获取 Jenkins 的凭据信息的话,需要下列几个文件:

· credentials.xml

· secrets/hudson.util.Secret

· secrets/master.key

很荣幸的是这几个文件我们都可以行使文件读取漏洞读取出来。在 Shodan 上尝试获取国外 real world 的 Jenkins 的帐号暗码:

Jenkins任意文件读取漏洞分析当然,获取到的帐号暗码是不能直接登录的,然则略微修改一下用户名就可以成功的登录进去了: 

Jenkins任意文件读取漏洞分析

4、修复方案

虽然这个漏洞风险较大,然则无须太甚担心,因为默认装置 Jenkins 的时辰匿名用户是没有可读权限的。并且此漏洞在 Linux 上被行使的可能性较小。下列为推荐的修复方案:

➢针对此高危漏洞行使,腾讯云网站管家 WAF AI 引擎可检测并拦截,要是需要,可在腾讯云官网进一步了解 

➢在全局安全设置中将匿名用户的可读权限去掉

➢升级到最新版本的 Jenkins(2.121.2)

➢使用 Linux

*

您可能还会对下面的文章感兴趣: