
React2Shell (CVE-2025-55182) Exploit
Un script Python fournissant un shell interactif pour exploiter la vulnérabilité critique RCE (CVE-2025-55182) dans les composants serveur React et les applications Next.js vulnérables. Cet exploit cible la faille de désérialisation qui permet une exécution de code à distance sans authentification. Il inclut un système modulaire pour ajouter des techniques de contournement WAF.
[!NOTE] Cet exploit est conçu pour interagir avec le point de terminaison du protocole RSC vulnérable. Les résultats d'exécution sont capturés via le mécanisme de réponse du serveur. Les commandes ne produisant aucune sortie renverront
(empty).
[!CAUTION] Ce code est uniquement à des fins de recherche et d'éducation. Il est destiné à aider à comprendre, détecter et corriger la vulnérabilité CVE-2025-55182. Ne l'utilisez pas contre des systèmes sans autorisation explicite.
L'utilisation de ce script se fait aux risques et périls de l'utilisateur, et le(s) auteur(s) décline(nt) toute responsabilité en cas d'utilisation abusive ou de conséquences imprévues.
En utilisant ce code, l'utilisateur reconnaît et accepte ce qui suit :
- L'utilisateur est seul responsable de toutes les conséquences légales découlant de l'utilisation de ce script.
- L'utilisateur ne tiendra pas le(s) auteur(s) responsable(s) de tout dommage, perte ou action en justice résultant de l'utilisation de ce code.
- L'utilisateur accepte de se conformer à toutes les lois et réglementations applicables.
- L'utilisateur reconnaît que l'utilisation de ce script contre des systèmes sans autorisation peut violer les lois et les conditions d'utilisation, entraînant potentiellement des sanctions sévères.
- Il est conseillé à l'utilisateur de consulter son propre conseiller juridique avant d'utiliser ce code.
Cet exploit dispose d'un système de modules de contournement WAF dynamique. Les modules sont stockés dans le répertoire waf_modules sous forme de fichiers Python séparés. Chaque module doit définir une fonction modify_request(body, headers) qui prend le corps et les en-têtes de requête par défaut, les modifie selon les besoins pour le contournement, et retourne le nouveau body, headers.
bypass_custom.py) dans le répertoire waf_modules contenant la fonction modify_request.--help pour voir les options de contournement disponibles (par exemple --bypass-custom pour bypass_custom.py). Utilisez l'option correspondante pour activer le module.Exemple : Un module bypass_vercel.py est inclus comme exemple, implémentant des techniques potentiellement efficaces contre les déploiements Vercel.
--modify-request)Le script permet la modification directe de certains attributs de l'objet requests.Session utilisé pour effectuer des requêtes HTTP. Cela offre un contrôle granulaire sur des aspects comme la vérification SSL, les délais d'attente, et potentiellement d'autres paramètres de session.
--modify-request <KEY> <VALUE>. Le <KEY> correspond à un attribut de l'objet requests.Session (par exemple verify, timeout).<VALUE> : true/false deviennent des booléens, les chaînes numériques deviennent des entiers ou flottants, sinon il reste une chaîne.--modify-request verify True--modify-request verify False (équivalent à l'ancienne option --insecure)python CVE-2025-55182.py --help-modify-request pour une visualisation arborescente des options courantes.requirements.txt)python -m venv venv et source venv/bin/activate sur les systèmes de type Unix ou venv\Scripts\activate sur Windows).
pip install -r requirements.txt
waf_modules :
mkdir waf_modules
bypass_vercel.py) dans ce répertoire.Configurer un environnement vulnérable (pour test uniquement) :
docker run --rm -p 127.0.0.1:3000:3000 ghcr.io/l4rm4nd/cve-2025-55182:latest
Plus d'informations : https://github.com/l4rm4nd/CVE-2025-55182
Exécuter le script :
python CVE-2025-55182.py --help # Pour voir toutes les options, y compris les contournements WAF
# Exemple avec un module de contournement :
python CVE-2025-55182.py --host 127.0.0.1 --port 3000 --endpoint / --bypass-vercel
Si vous n'utilisez pas d'arguments en ligne de commande, le script demandera interactivement l'hôte, le port et le point de terminaison.
Interagir avec le shell :
exit ou quit pour terminer la session du shell.