
Shell Ruby interactif pour les tests autorisés de CVE-2025-55182 (react2shell)
______ \_____ ______ / /
| / / /| /_ \
| | / | | /
|| /_____ ___| /_______ /
/ / / /
(react2rubyshell)
> [!IMPORTANT]
>
> *AVERTISSEMENT : La responsabilité de toute action entreprise avec ce script incombe entièrement à la personne qui l'exécute. Utilisez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite de test.*
## Prérequis
- Ruby installé localement
- Bibliothèques standard Ruby : `json`, `net/http`, `optparse`, `readline`, `securerandom`, `shellwords`, `uri`
Aucune gemme externe requise.
## Installation
Clonez le dépôt, entrez dans le répertoire du projet et exécutez le script avec Ruby :
```bash
git clone https://github.com/hakkuri01/r2rs.git
cd r2rs
ruby r2rs.rb -h
ruby r2rs.rb -t CIBLE [options]
-t, --target CIBLE IP, nom d'hôte ou URL cible (obligatoire)
-p, --port PORT Port HTTP cible
-nb, --no-banner Supprimer la bannière de démarrage
-h, --help Afficher l'aide de la commande
Exemples :
ruby r2rs.rb -t 127.0.0.1
ruby r2rs.rb -t 127.0.0.1 -p 3000
ruby r2rs.rb -t http://127.0.0.1:3000
ruby r2rs.rb -t "https://example.test/app?debug=1" -p 8443
ruby r2rs.rb -nb -t 127.0.0.1 -p 3000
Si CIBLE ne contient pas de schéma, http:// est présumé. Les URL HTTPS sont prises en charge.
Si l'URL cible contient des caractères spéciaux pour le shell, comme ?, mettez-la entre guillemets :
ruby r2rs.rb -t "https://127.0.0.1/test?x=1"
Avant de lancer la session active, l'outil valide la cible avec une commande de sonde. Si la validation échoue, il affiche une erreur et se termine.
La session utilise HTTP : le Ruby local réutilise une seule connexion HTTP, envoie les commandes via le chemin de requête existant et affiche la réponse dans une invite interactive Readline. Le contexte de l'invite est initialisé au démarrage et rafraîchi après chaque commande en utilisant le nom d'utilisateur distant, le nom d'hôte et le répertoire de travail.
Tapez exit ou appuyez sur Ctrl-C pour fermer la session.
Ce mode ne nécessite intentionnellement ni Ruby, ni Python, ni socat, ni script, ni aucun autre assistant PTY côté cible. Pour cette raison, il ne s'agit pas d'un véritable PTY distant. Les programmes plein écran et sensibles au TTY, tels que vim, nano, su, ssh et les invites de mot de passe interactives, peuvent toujours être limités.