
Интерактивная оболочка Ruby для авторизованного тестирования CVE-2025-55182 (react2shell)
__________ __________________ _________
\______ \\_____ \______ \/ _____/
| _/ / ____/| _/\_____ \
| | \/ \| | \/ \
|____|_ /\_______ \____|_ /_______ /
\/ \/ \/ \/
(react2rubyshell)
[!IMPORTANT]
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Ответственность за любые действия, совершённые с использованием этого скрипта, ложится исключительно на лицо, его запускающее. Используйте его только против систем, которыми вы владеете или на тестирование которых у вас есть явное разрешение.
json, net/http, optparse, readline, securerandom, shellwords, uriВнешние гемы не требуются.
Клонируйте репозиторий, войдите в каталог проекта и запустите скрипт с помощью Ruby:
git clone https://github.com/hakkuri01/r2rs.git
cd r2rs
ruby r2rs.rb -h
ruby r2rs.rb -t ЦЕЛЬ [параметры]
-t, --target ЦЕЛЬ IP-адрес цели, имя хоста или URL (обязательно)
-p, --port ПОРТ HTTP-порт цели
-nb, --no-banner Убрать стартовый баннер
-h, --help Показать справку по командам
Примеры:
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
Если TARGET не содержит схему, подразумевается http://. Поддерживаются HTTPS-URL.
Если URL цели содержит специальные для оболочки символы, например ?, заключайте его в кавычки:
ruby r2rs.rb -t "https://127.0.0.1/test?x=1"
Перед запуском активного сеанса инструмент проверяет цель с помощью пробной команды. Если проверка не удалась, выводится сообщение об ошибке, и выполнение завершается.
Сеанс работает через HTTP: локальный Ruby использует одно HTTP-соединение, отправляет команды через существующий путь запроса и выводит ответ в интерактивном приглашении Readline. Контекст приглашения инициализируется при запуске и обновляется после каждой команды, используя удалённого пользователя, имя хоста и рабочий каталог.
Введите exit или нажмите Ctrl-C, чтобы завершить сеанс.
Этот режим намеренно не требует наличия Ruby, Python, socat, script или каких-либо других PTY-помощников на стороне цели. Из-за этого он не является полноценным удалённым PTY. Программы, использующие полноэкранный режим и зависящие от TTY, такие как vim, nano, su, ssh и интерактивные запросы паролей, могут по-прежнему работать с ограничениями.