
인증된 CVE-2025-55182 (react2shell) 테스트를 위한 대화형 Ruby 셸
______ \_____ ______ / /
| / / /| /_ \
| | / | | /
|| /_____ ___| /_______ /
/ / / /
(react2rubyshell)
[!IMPORTANT]
면책 조항: 이 스크립트를 사용하여 수행된 모든 작업에 대한 책임은 전적으로 실행하는 개인에게 있습니다. 이 스크립트는 소유하고 있거나 명시적 허가를 받은 시스템에서만 사용하십시오.
json, net/http, optparse, readline, securerandom, shellwords, uri외부 gem은 필요하지 않습니다.
저장소를 클론하고, 프로젝트 디렉터리로 이동한 후 Ruby로 스크립트를 실행합니다:
git clone https://github.com/hakkuri01/r2rs.git
cd r2rs
ruby r2rs.rb -h
ruby r2rs.rb -t TARGET [options]
-t, --target TARGET 대상 IP, 호스트명 또는 URL (필수)
-p, --port 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가 아닙니다. vim, nano, su, ssh 및 대화형 암호 프롬프트와 같은 전체 화면 및 TTY에 민감한 프로그램은 여전히 제한될 수 있습니다.