EN
lanyun
technologies
银河实验室 深谙安全之道,热衷技术创新
LABORATORIES 银河实验室

威胁描述

  利用jenkins的该漏洞,通过构造恶意的http请求,可以造成主机的任意文件读取,windows平台和linux平台都可以读取,linux平台下,需要满足特定的条件。

CVE编号:cve-2018-1999002

受威胁版本:CloudBeesJenkins 2.132及之前版本和2.121.1及之前版本

 

漏洞分析:

  当请求为xxx/plugin/.ini的时候,jenkins\core\src\main\java\hudson\Plugin.java 的 doDynamic 方法会处理这个请求。

\

 在处理过程中,调用的是taplerResponse的 serveLocalizedFile 方法处理静态文件,追踪该方法

\

在方法中调用了request.getLocale(),其实现为

\

这是用来处理http_header中的Accept-Language,并且用“-“分割后返回了一个 Locale 对象,也就是当Accept-Language: ../../../1111-222时,那么我将会得到一个 Locale("../../../1111", "2222")对象,我们要将payload也是放在这里

之后是stapler-1.254-sources.jar!\org\kohsuke\stapler\Stapler.java:

\

通过stapler将后缀名取出,然后再通过来Accept-Language返回的对象将两个结合起来成一个文件名,通过这样的形式进行访问该文件,同时造成了漏洞,我们请求的url,base为空,构造恶意的Accept-Language正好将windows的目录遍历过去,达到读取文件的效果。

漏洞复现

  我们采用window平台下的环境。在Accept-Language中构造../来跳过目录,在url中写出要读取文件后缀名,即可读取文件。这样读取需要登陆。

\

但当安全策略中开启匿名用户有读写权限的时候,不需要登陆即可读取文件。

\

 

 

修复方式:

  1. 在全局安全配置中将匿名用户的可读权限去掉

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

  3. 使用 Linux对于这种漏洞

漏洞检测:

我司“兰眼下一代威胁感知系统”已经可以检测该漏洞

\

 

京公网安备 11010802024705号  京ICP备20030588号 Copyright © 兰云科技 www.lanysec.com 版权所有