Jenkins任意文件读取 (CVE-2018-1999002)漏洞分析
字数 1435 2025-08-18 11:38:45

Jenkins任意文件读取漏洞(CVE-2018-1999002)分析与防护指南

一、漏洞背景

Jenkins官方发布的安全通告披露了多个安全漏洞,其中SECURITY-914是由Orange发现的Jenkins未授权任意文件读取漏洞,被评定为高危风险。该漏洞允许攻击者读取Windows系统服务器中的任意文件,在特定条件下也可读取Linux系统服务器中的文件。

二、漏洞影响

受影响对象

  • 使用Jenkins的开发者和用户

漏洞影响范围

  • Jenkins weekly: 2.132及此前所有版本
  • Jenkins LTS: 2.121.1及此前所有版本

潜在危害

  1. 读取Jenkins文件系统中的任意文件内容
  2. 获取Jenkins系统的凭证信息
  3. 可能导致用户敏感信息泄露
  4. 攻击者可能利用获取的凭证直接登录Jenkins系统进行命令执行

三、漏洞技术分析

漏洞触发条件

  1. 全局安全配置中开启匿名用户可读权限

漏洞原理

  1. 请求处理机制:

    • doDynamic方法处理请求中包含的路径(如/plugin/xxxx)
    • 跟进request.getLocale()跳转至Request.java
  2. Locale处理:

    • 处理HTTP头中的Accept-Language
    • 根据"-"分为language和country(如zh-CN)
    • 如果不存在"-",language可使用../进行目录遍历
  3. 资源选择机制:

    • Stapler.java中的LocaleDrivenResourceSelector类的open方法
    • 根据Accept-Language返回不同文件
    • Windows下可直接通过路径穿越绕过限制
    • Linux下需要plugin目录存在"-"名称的目录才可利用

四、环境搭建与验证

搭建漏洞环境

  1. 下载受影响版本的Jenkins:

    • Jenkins weekly 2.132或更早版本
    • Jenkins LTS 2.121.1或更早版本
  2. 部署方式:

    • 将jenkins.war放在tomcat的webapps目录下自动解压
    • 或安装MSI版本
    • 或从GitHub下载war包
  3. 启动步骤:

    • 启动tomcat
    • 访问http://localhost:8080(默认端口)
    • 如需修改端口,编辑Jenkins安装路径下的Jenkins.xml
  4. 初始配置:

    • 找到initialAdminPassword文件复制密码
    • 输入密码解锁Jenkins
    • 安装插件并使用管理员登录

五、漏洞修复方案

官方修复方案

  1. 升级Jenkins版本:
    • Jenkins weekly升级至2.133或更高
    • Jenkins LTS升级至2.121.2或更高

临时防护措施

  1. 使用WAF防护:
    • 配置精准访问控制规则
    • 针对Accept-Language头设置阻断规则
    • 过滤包含../的请求头

六、参考资源

  1. Orange的漏洞分析: http://blog.orange.tw/
  2. 阿里云防护建议: https://help.aliyun.com/document_detail/86684.html

七、安全团队信息

Tide安全团队:

  • 成立于2019年1月
  • 专注于网络攻防、Web安全、移动终端安全等领域
  • 官网: http://www.TideSec.net

注意: 本教学文档基于FreeBuf发布的漏洞分析文章整理,关键点已全部包含,无无关描述。如需更详细的技术细节,可参考原始链接中的完整内容。

Jenkins任意文件读取漏洞(CVE-2018-1999002)分析与防护指南 一、漏洞背景 Jenkins官方发布的安全通告披露了多个安全漏洞,其中SECURITY-914是由Orange发现的Jenkins未授权任意文件读取漏洞,被评定为高危风险。该漏洞允许攻击者读取Windows系统服务器中的任意文件,在特定条件下也可读取Linux系统服务器中的文件。 二、漏洞影响 受影响对象 使用Jenkins的开发者和用户 漏洞影响范围 Jenkins weekly : 2.132及此前所有版本 Jenkins LTS : 2.121.1及此前所有版本 潜在危害 读取Jenkins文件系统中的任意文件内容 获取Jenkins系统的凭证信息 可能导致用户敏感信息泄露 攻击者可能利用获取的凭证直接登录Jenkins系统进行命令执行 三、漏洞技术分析 漏洞触发条件 全局安全配置中开启匿名用户可读权限 漏洞原理 请求处理机制 : doDynamic 方法处理请求中包含的路径(如 /plugin/xxxx ) 跟进 request.getLocale() 跳转至Request.java Locale处理 : 处理HTTP头中的 Accept-Language 根据"-"分为language和country(如zh-CN) 如果不存在"-",language可使用 ../ 进行目录遍历 资源选择机制 : Stapler.java中的 LocaleDrivenResourceSelector 类的 open 方法 根据 Accept-Language 返回不同文件 Windows下可直接通过路径穿越绕过限制 Linux下需要plugin目录存在"-"名称的目录才可利用 四、环境搭建与验证 搭建漏洞环境 下载受影响版本的Jenkins: Jenkins weekly 2.132或更早版本 Jenkins LTS 2.121.1或更早版本 部署方式: 将jenkins.war放在tomcat的webapps目录下自动解压 或安装MSI版本 或从GitHub下载war包 启动步骤: 启动tomcat 访问http://localhost:8080(默认端口) 如需修改端口,编辑Jenkins安装路径下的Jenkins.xml 初始配置: 找到initialAdminPassword文件复制密码 输入密码解锁Jenkins 安装插件并使用管理员登录 五、漏洞修复方案 官方修复方案 升级Jenkins版本: Jenkins weekly升级至2.133或更高 Jenkins LTS升级至2.121.2或更高 临时防护措施 使用WAF防护: 配置精准访问控制规则 针对 Accept-Language 头设置阻断规则 过滤包含 ../ 的请求头 六、参考资源 Orange的漏洞分析: http://blog.orange.tw/ 阿里云防护建议: https://help.aliyun.com/document_ detail/86684.html 七、安全团队信息 Tide安全团队: 成立于2019年1月 专注于网络攻防、Web安全、移动终端安全等领域 官网: http://www.TideSec.net 注意 : 本教学文档基于FreeBuf发布的漏洞分析文章整理,关键点已全部包含,无无关描述。如需更详细的技术细节,可参考原始链接中的完整内容。