威胁描述: 利用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中写出要读取文件后缀名,即可读取文件。这样读取需要登陆。 但当安全策略中开启匿名用户有读写权限的时候,不需要登陆即可读取文件。 修复方式: 在全局安全配置中将匿名用户的可读权限去掉 升级到最新版本的 Jenkins(2.121.2) 使用 Linux对于这种漏洞 漏洞检测: 我司“兰眼下一代威胁感知系统”已经可以检测该漏洞
京公网安备 11010802024705号 京ICP备20030588号 Copyright © 兰云科技 www.lanysec.com 版权所有