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
React2Shell — Ma recherche sur la CVE-2025-55182 | Kitploit
Outils/GitHubGitHub/i3r1h0n/react2shell
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubi3r1h0n/react2shell

React2Shell

Ma recherche sur la CVE-2025-55182

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

React2Shell (CVE-2025-55182)

Aperçu

Ce dépôt contient mes recherches sur la CVE-2025-55182, également appelée vulnérabilité React2Shell. Le dépôt se compose de deux parties principales : le stand et l'exploit.

Références

Quelques informations sur cette faille de sécurité :

  • NIST
  • Article de HackerOne
  • Résumé de Vercel
  • Article de WIZ
  • Page web de l'auteur
  • PoC original

Cause racine

La vulnérabilité est fondamentalement un manque de validation des entrées utilisateur. Mais ce n'est pas si simple =)

Les parties Client React et Server React utilisent le React Flight Protocol pour échanger des données. Voici une bonne présentation pour vous familiariser rapidement avec.

Exemple de morceaux de message du React Flight Protocol :

root@kitploit:~
{
    "0": (None, '["$1"]'),
    "1": (None, '{"object":"fruit","name":"$2:fruitName"}'),
    "2": (None, '{"fruitName":"cherry"}'),
}

Les morceaux du RFP peuvent se référencer les uns les autres à l'aide de l'opérateur $. Lorsque les morceaux sont ensuite désérialisés côté serveur, ces liens sont résolus. Un point clé ici est que nous pouvons accéder au prototype de l'objet à partir de cela.

En manipulant le prototype, nous pouvons forcer V8 à attendre notre .then(). La charge utile résultante peut ressembler à ceci :

root@kitploit:~
{
    "then": "$1:__proto__:then",
    "status": "resolved_model",
    "reason": -1,
    "value": '{"then": "$B0"}',
    "_response": {
        "_prefix": f"return foo; ",
        "_formData": {
            "get": "$1:constructor:constructor",
        },
    },
}

Je n'entrerai pas trop dans les détails du fonctionnement réel de cette chaîne de gadgets. Si vous voulez en savoir plus, lisez une excellente analyse ici par Moritz Sanft.

Vous pouvez également consulter la comparaison de versions GitHub, avant et après le correctif, si vous souhaitez approfondir cette faille.

Stand

J'ai créé une application react/next.js simple, qui utilise (voir stand/package.json) :

root@kitploit:~
"dependencies": {
  "next": "16.0.6",
  "react": "19.2.0",
  "react-dom": "19.2.0"
},

Juste une page simple avec du contenu textuel, créée avec create-next-app :

Pour démarrer, exécutez ceci dans le répertoire stand :

root@kitploit:~
docker compose up --build -d

Ensuite, naviguez vers http://localhost:3000 dans votre navigateur.

Exploit

L'exploitation est simple. Il suffit d'envoyer des morceaux RFP spécialement construits avec notre charge utile au serveur via une requête POST. Voir exploit/src/main.py. Il inclut également une vérification simple pour savoir si le serveur est vulnérable ou non : il tente d'exécuter une commande whoami ; si le délai d'attente est dépassé, le serveur utilise très probablement une version corrigée.

Vous pouvez voir la charge utile RFP dans exploit/resource/chunk.json.

Avant d'exécuter l'exploit, n'oubliez pas de configurer un listener netcat et de mettre à jour exploit/resource/config.toml avec votre hôte et votre port, afin d'obtenir un reverse shell.

Bon pwn !

Crédits

Un grand respect à Lachlan Davidson, qui a découvert la vulnérabilité, maple, qui a trouvé un bon gadget, et aussi Moritz Sanft, qui a partagé son PoC et rédigé une excellente analyse.

produit par I3r1h0n.

Télécharger l’outil