
Инструмент командной строки для оценки безопасности React и Next.js приложений, анализирующий React Server Components на предмет ошибок конфигурации, с поддержкой сканирования нескольких целей, обнаружения WAF и прокси.
Фреймворк для оценки безопасности веб-приложений на React и Next.js
Этот инструмент предназначен только для авторизованного тестирования безопасности.
Пользователи несут единоличную ответственность за соблюдение всех применимых законов.
React2Shell Scanner — это фреймворк для оценки безопасности из командной строки, предназначенный для помощи специалистам по безопасности в выявлении потенциальных уязвимостей в веб-приложениях на React и Next.js. Он фокусируется на анализе реализаций React Server Components (RSC) на предмет распространённых ошибок конфигурации безопасности.
| Возможность | Описание |
|---|---|
| 🎯 Сканирование нескольких целей | Сканирование отдельных URL или списков целей |
| 🔄 Параллельное тестирование | Многопоточность для эффективной оценки |
| 🛡️ Обнаружение WAF | Выявление и анализ ответов WAF |
| 📊 Отслеживание прогресса | Визуальный индикатор выполнения с tqdm |
| 🔧 Настраиваемые заголовки | Внедрение пользовательских заголовков |
| 🌐 Поддержка прокси | Маршрутизация через HTTP/HTTPS прокси |
| 📝 Форматы вывода | Генерация отчётов в JSON и текстовом формате |
| 🎨 Красочный CLI | Понятный вывод в терминале с цветовой кодировкой |
# Клонирование репозитория
git clone https://github.com/wi3memake/React2Shell-Scanner.git
cd react2shell-scanner
# Создание виртуального окружения (рекомендуется)
python -m venv venv
source venv/bin/activate # Linux/Mac
.\venv\Scripts\activate # Windows
# Установка зависимостей
pip install -r requirements.txt
requests>=2.28.0 # HTTP client library
tqdm>=4.64.0 # Progress bar visualization
urllib3>=1.26.0 # URL handling
# Одиночная цель
python react2shell.py.py -u https://example.com
# С подробным выводом
python react2shell.py.py -u https://example.com -v
# Сканирование из файла
python react2shell.py.py -l targets.txt
# С параллельными потоками
python react2shell.py.py -l targets.txt -t 10
# Пользовательские заголовки
python react2shell.py.py -u https://example.com -H "Authorization: Bearer token"
# Через прокси
python react2shell.py.py -u https://example.com --proxy http://127.0.0.1:8080
# Пропуск проверки SSL
python react2shell.py.py -u https://example.com --no-verify
# Вывод в файл
python react2shell.py.py -u https://example.com -o results.json
| Аргумент | Короткий | Описание | По умолчанию |
|---|---|---|---|
--url | -u | URL одиночной цели | - |
--list | -l | Файл с URL целей | - |
--threads | -t | Параллельные потоки | 5 |
--timeout | - | Таймаут запроса (секунды) | 10 |
--proxy | - | URL прокси (http/https) | - |
--headers | -H | Пользовательские заголовки | - |
--output | -o | Путь к выходному файлу | - |
--no-verify | - | Пропуск проверки SSL | False |
--verbose | -v | Подробный вывод | False |
--waf-bypass | - | Режим обхода WAF | False |
--bypass-size | - | Размер полезной нагрузки обхода (КБ) | 128 |
React2Shell Web Application Security Assessment Framework
[*] Starting assessment of https://example.com
[*] Analyzing React Server Components...
[*] Testing redirect behavior...
[+] Assessment complete
Target: https://example.com
Status: Analyzed
Response Code: 200
Server: Next.js
React Version: 18.2.0
RSC Detected: Yes
Assessment Time: 1.23s
{
"target": "https://example.com",
"timestamp": "2025-01-15T10:30:00Z",
"results": {
"status_code": 200,
"server": "Next.js",
"rsc_detected": true,
"headers": {
"content-type": "text/html",
"x-powered-by": "Next.js"
},
"assessment_time": 1.23
}
}
React2Shell-Scanner/
├── react2shell.py.py # Main scanner script
├── requirements.txt # Python dependencies
└── README.md # Documentation
Создайте текстовый файл с одним URL в строке:
https://target1.com
https://target2.com
https://target3.com/api
Передавайте несколько заголовков с повторяющимися флагами -H:
python react2shell.py.py -u https://example.com \
-H "Authorization: Bearer token123" \
-H "X-Custom-Header: value" \
-H "Cookie: session=abc123"
# HTTP прокси
--proxy http://127.0.0.1:8080
# HTTPS прокси
--proxy https://proxy.example.com:8443
# Прокси с аутентификацией
--proxy http://user:[email protected]:8080
# GitHub Actions example
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run security scan
run: python react2shell.py.py -u ${{ secrets.TARGET_URL }} -o results.json
import subprocess
import json
# Run scanner
result = subprocess.run(
['python', 'react2shell.py.py', '-u', 'https://example.com', '-o', 'results.json'],
capture_output=True,
text=True
)
# Parse results
with open('results.json') as f:
findings = json.load(f)
Таймаут соединения
# Увеличьте таймаут
python react2shell.py.py -u https://example.com --timeout 30
Ошибки SSL-сертификата
# Пропуск проверки (только для тестирования)
python react2shell.py.py -u https://example.com --no-verify
Ограничение частоты запросов
# Уменьшите количество потоков
python react2shell.py.py -l targets.txt -t 2
Мы приветствуем вклад, который улучшает:
Пожалуйста, отправляйте вопросы и pull request на GitHub.
Этот проект распространяется под лицензией MIT License.
Эффективное тестирование безопасности
🔒 Всегда тестируйте ответственно 🔒