
Démontre l'exploitation de CVE-2024-4577, une RCE PHP CGI sur Windows, y compris les étapes d'attaque, le déploiement d'un shell inversé et la simulation de ransomware avec analyse des journaux.
CVE-2024-4577 est une vulnérabilité de sécurité qui affecte les serveurs PHP dans les versions suivantes :
Cette vulnérabilité est une faille d'exécution de code à distance (RCE) qui se produit lors de l'utilisation de PHP CGI (Common Gateway Interface) sur des serveurs Windows. Le problème vient de l'interprétation erronée de certains caractères par Windows en raison de l'utilisation du mappage de caractères « Best Fit » dans certains paramètres de langue. Dans ce cas, le module PHP CGI interprète des caractères malveillants comme des options PHP, permettant aux attaquants d'exécuter des commandes malveillantes sur le serveur.
Vecteur d'attaque initial :
Pour exploiter la vulnérabilité, ajoutez la chaîne suivante à l'URL du site vulnérable :
?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
Utilisez Burp Suite pour intercepter cette requête et l'envoyer au Repeater.
Modifier la méthode de requête : Convertissez la requête interceptée en méthode POST et exécutez un simple code PHP, par exemple :
<?php phpinfo();
Si la vulnérabilité existe, la sortie affichera des informations relatives à la version de PHP.
Plusieurs méthodes peuvent être appliquées selon les objectifs de l'attaquant. Ma méthode préférée consistait à définir une exécution dans le répertoire de démarrage de Windows en utilisant Burp Suite. J'ai converti le script reverseshell.ps1 en un exécutable (exe) et je l'ai placé à cet endroit.
De la même manière, j'ai téléchargé le fichier ransomware.ps1 sur le système et j'ai réussi à exfiltrer des documents, ne laissant derrière moi que leurs versions chiffrées.
Avant de commencer l'attaque, il est nécessaire d'activer les journaux 4688. En analysant les journaux de sécurité 4688 sur ma machine Windows, j'ai constaté que l'attaque provenait d'Apache sous XAMPP. En consultant les fichiers Access.log, j'ai rencontré une requête anormale qui renvoyait un code d'état 200, ce qui m'a incité à rechercher cette URL dans mon navigateur. J'ai identifié la vulnérabilité et pris des précautions, comme la mise à jour de la version PHP ou la désactivation de la fonctionnalité PHP CGI.
Étant donné que le rançongiciel que j'ai créé n'était pas obscurci, mon code est visible dans les journaux PowerShell. Cela montre comment j'ai chiffré les données. Pour récupérer mes données, j'exécute le fichier encoded.ps1.
Cette simulation met en lumière les risques potentiels associés à CVE-2024-4577 et souligne l'importance de sécuriser les installations PHP. Maintenir PHP à jour et empêcher les mauvaises configurations des paramètres CGI peut réduire efficacement ces vulnérabilités.