Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
http2-rst-stream-attacker — Высоконастраиваемый инструмент для проверки уязвимости сервера к CVE-2023-44487 путем быстрой отправки кадров HEADERS и RST_STREAM и документирования ответов сервера. | Kitploit
Инструменты/GitHubGitHub/ndrscodes/http2-rst-stream-attacker
Анализ уязвимостейЭксплуатацияВеб-безопасностьТестирование на Проникновение
GitHubndrscodes/http2-rst-stream-attacker

http2-rst-stream-attacker

Высоконастраиваемый инструмент для проверки уязвимости сервера к CVE-2023-44487 путем быстрой отправки кадров HEADERS и RST_STREAM и документирования ответов сервера.

Репозиторий
6212 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2023-44487 и http2-rst-stream-attacker

CVE-2023-44487

CVE-2023-44487 — это эксплойт против самого протокола HTTP2. В HTTP2 запросы данных инициируются отправкой кадра HEADERS. После получения этого кадра сервер начинает обработку вашего запроса, затем отправляет кадры DATA, пока все данные не будут переданы. HTTP2 также определяет кадр RST_STREAM, который можно использовать для закрытия потока в любой момент. Для предотвращения атак серверы обычно ограничивают максимальное количество одновременно открытых потоков (по умолчанию 100). Если клиенты действительно ждут потребления всех ресурсов, этот лимит редко достигается. Атака работает по простой причине: клиент может отправить кадр RST_STREAM в любой момент. Кадр RST_STREAM закрывает поток, и закрытые потоки не учитываются как одновременно открытые. Это означает, что клиент может быстро отправлять запросы, никогда не достигая этого лимита, просто закрывая соединение сразу после отправки запроса. Атакуемый сервер в некоторых случаях всё равно начнет загружать данные, создавая избыточную нагрузку.

Этот инструмент предназначен для проверки уязвимости сервера к данной атаке. Он устанавливает одно или несколько одновременных HTTP2-соединений и затем отправляет указанное количество кадров HEADER, после чего — кадры RST_STREAM.

Также предоставляются многочисленные другие параметры конфигурации, такие как задержка между кадрами HEADERS и RST_STREAM, количество открываемых потоков, количество кадров, отправляемых на поток, и так далее.

После завершения атаки выводится сводка, содержащая информацию о количестве полученных кадров, а также о количестве ошибок и полученных кадров GOAWAY. Это может помочь вам определить, уязвимы ли ваши сервисы к CVE-2023-44487.

Запуск

На данный момент этот инструмент распространяется только в виде исходного кода, то есть требуется установка Go. Инструмент можно запустить, выполнив go run main.go <options>. Также есть скрипт на Python, который можно использовать для построения графиков задержек, записанных в файл .

monitor.log

Инструментарий

Кроме того, я создал новый инструментарий на Python для более точных и обширных измерений. Файл runner.py, расположенный в папке tooling, считывает значения, определённые в вашем config.py (см. config-sample.py для подробностей), и запускает все тесты для всех указанных docker-контейнеров. Затем он запускает наиболее успешный тест (наивысшая медианная + средняя задержка) для всех путей, определённых в массиве paths. Для каждого выполненного теста выводятся графики и файлы журналов. Этот инструментарий всё ещё находится в разработке. Я создал его только потому, что мне было лень запускать все эти тесты вручную для нашей исследовательской работы. Не стесняйтесь отправлять PR, чтобы привести его в порядок или сделать полезным не только для нашего случая.

Параметры командной строки

В настоящее время реализованы следующие параметры командной строки:

ФлагПо умолчаниюЗначение
frames1количество кадров HEADERS и RST_STREAM, отправляемых на любой поток
connections1количество TLS-соединений для выполнения атаки (одновременно)
consecutiveSends1количество кадров HEADERS, отправляемых перед отправкой кадров RST_STREAM (на поток)
connectAttempts1количество последовательных соединений для выполнения теста (на процедуру подключения)
delay0время (в мс) ожидания между отправкой кадров HEADERS и RST_STREAM
ignoreGoAwayfalseесли true, потоки GOAWAY не приведут к завершению принимающей процедуры. Вместо этого она будет ждать, пока в течение более 10 секунд не будет получено ни одного кадра.
monitorfalseвключить мониторинг производительности
monitorDelay100время (в мс) ожидания между проверками задержки ответа
monitorLog./monitor.logфайл для записи журналов задержек мониторинга
routines1количество атакуемых потоков
skipValidationtrueесли true, сертификат сервера не будет проверяться (это значение по умолчанию — нас не волнует безопасность, так как мы всё равно атакующие)
timeout1000время ожидания новых кадров перед тем, как считать попытку подключения недействительной и остановить её
urlhttps://localhost:433/URL для атаки

Пример вывода

Инструмент выводит много отладочной информации, а также сводку. Отладочная информация содержит сведения о способе установки соединения, текущем прогрессе и типе отправляемых в данный момент кадров.

Сводка будет выглядеть примерно так (в зависимости от вашей конфигурации)

root@kitploit:~
####################SUMMARY####################
Packet types received:
	PING: 2
	HEADERS: 12
	SETTINGS: 0
	DATA: 11
	GOAWAY: 3
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
Attack ending reasons (per receiving thread):
	GoAway events: 3
	Timeout events: 0
	Error events: 0
Summary for connection 2
	PING: 1
	HEADERS: 9
	SETTINGS: 0
	DATA: 6
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.
Summary for connection 1
	PING: 1
	HEADERS: 3
	SETTINGS: 0
	DATA: 5
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.
Summary for connection 0
	PING: 0
	HEADERS: 0
	SETTINGS: 0
	DATA: 0
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.

Если вы считаете, что нужно собирать другие статистические данные, не стесняйтесь связаться со мной или создать issue!

Задачи

  • вычислить среднюю задержку между отправкой HEADERS и получением первого кадра для этого запроса
  • вычислить среднюю задержку между отправкой HEADERS и получением кадров GOAWAY, если они есть
  • вычислить процент соединений, на которые сервер ответил корректно
  • вычислить процент потоков, на которые сервер ответил корректно (на соединение и в целом)
  • включить количество отправленных пакетов в сводку

Отказ от ответственности

Этот инструмент предназначен ТОЛЬКО для исследовательских целей. Он не предназначен для проведения атак на серверы, которые вам не принадлежат или не управляются вами. Я не несу ответственности за точность предоставляемой статистики, а также за атаки и их последствия для серверов и сервисов.

Скачать инструмент