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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2019-9511_Priority-Churn-Data-Dribble — Легковесные HTTP/2 зонды для контролируемой проверки векторов DoS CVE-2019-9511 (Data Dribble) и CVE-2019-9513 (Priority Churn) в авторизованных средах. | Kitploit
Инструменты/GitHubGitHub/harley-ghostie/cve-2019-9511_priority-churn-data-dribble
Анализ уязвимостейЭксплуатацияВеб-безопасностьСетевая безопасностьТестирование на Проникновение
GitHubharley-ghostie/cve-2019-9511_priority-churn-data-dribble

CVE-2019-9511_Priority-Churn-Data-Dribble

Легковесные HTTP/2 зонды для контролируемой проверки векторов DoS CVE-2019-9511 (Data Dribble) и CVE-2019-9513 (Priority Churn) в авторизованных средах.

Репозиторий
4 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

HTTP/2 CVE-2019-9511 & CVE-2019-9513 Lightweight Probes

Репозиторий со скриптами контролируемой валидации поведения, связанного с CVE CVE-2019-9511 и CVE-2019-9513, обе касаются векторов отказа в обслуживании в реализациях HTTP/2.

Скрипты созданы для поддержки технических проверок в авторизованных средах, позволяя наблюдать, договаривается ли сервер об HTTP/2 и отвечает ли на определенные шаблоны, связанные с Data Dribble и Priority Churn, без выполнения атаки типа "отказ в обслуживании".

Цель — подтвердить вектор легким и безопасным способом, с низким объемом запросов и без цели сделать среду недоступной.


Рассматриваемые CVE

CVEИмяСкриптОписание
CVE-2019-9511HTTP/2 Data Dribbledata_dribble_probe.pyПроверяет поведение управления потоком HTTP/2, высвобождая малые объемы данных контролируемым образом.
CVE-2019-9513HTTP/2 Priority Churn / Resource Looppriority_churn_probe.pyПроверяет поведение обработки фреймов PRIORITY с низкой интенсивностью.

Краткое описание уязвимостей

CVE-2019-9511 — HTTP/2 Data Dribble

CVE-2019-9511, известная как HTTP/2 Data Dribble, затрагивает некоторые реализации HTTP/2, которые неэффективно обрабатывают манипуляции с окном потока и постепенную доставку данных.

В этом сценарии атакующий может запрашивать данные у сервера и манипулировать управлением потоком, чтобы ответ оставался открытым и доставлялся небольшими блоками, например пакетами по 1 байту. В зависимости от реализации такое поведение может вызвать чрезмерное потребление CPU, памяти или ресурсов соединения, что приводит к риску отказа в обслуживании.

В этом репозитории соответствующий скрипт:

root@kitploit:~
data_dribble_probe.py

Цель скрипта — проверить поведение легким способом, без создания агрессивной нагрузки и без попыток вызвать недоступность.

Ссылки:

  • https://nvd.nist.gov/vuln/detail/CVE-2019-9511
  • https://www.cve.org/CVERecord?id=CVE-2019-9511
  • https://ubuntu.com/security/CVE-2019-9511

CVE-2019-9513 — HTTP/2 Priority Churn / Resource Loop

CVE-2019-9513, известная как HTTP/2 Priority Churn или Resource Loop, затрагивает некоторые реализации HTTP/2, которые дорого обрабатывают непрерывные изменения в дереве приоритетов потоков.

В этом сценарии атакующий может создать несколько потоков и многократно изменять приоритет между ними, вызывая "перемешивание" дерева приоритетов. В зависимости от реализации такое поведение может вызвать чрезмерное потребление CPU и привести к отказу в обслуживании.

В этом репозитории соответствующий скрипт:

root@kitploit:~
priority_churn_probe.py

Цель скрипта — проверить, принимает ли сервер и обрабатывает ли фреймы PRIORITY, используя низкую интенсивность и не выполняя DoS-атаку.

Ссылки:

  • https://nvd.nist.gov/vuln/detail/CVE-2019-9513
  • https://www.cve.org/CVERecord?id=CVE-2019-9513
  • https://ubuntu.com/security/CVE-2019-9513

Примечание о затронутых версиях

CVE CVE-2019-9511 и CVE-2019-9513 не привязаны к одной конкретной версии веб-сервера, например только nginx, Apache или Tomcat.

Они затрагивают определенные реализации HTTP/2 в различных продуктах, библиотеках, прокси, балансировщиках и серверах. Поэтому проверка должна учитывать, какой компонент ведет переговоры и обрабатывает HTTP/2 в анализируемой среде.

Примеры компонентов, которые могут быть задействованы:

root@kitploit:~
nginx
Apache HTTP Server
Envoy
HAProxy
Tomcat
Jetty
Node.js
Go net/http2
nghttp2
CDN
WAF
Load Balancer
Ingress Controller Kubernetes

Первое техническое условие — подтвердить, что сервис договаривается об HTTP/2 через ALPN. Если сервис не договаривается о h2, эти скрипты неприменимы.

Подтверждение уязвимости по версии должно основываться на официальном предупреждении производителя идентифицированного компонента.


Предварительная проверка: поддержка HTTP/2

Перед запуском скриптов проверьте, договаривается ли цель об HTTP/2 через ALPN.

Используйте только домен в команде, без https://.

root@kitploit:~
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

Также можно использовать с плейсхолдером:

root@kitploit:~
openssl s_client -alpn h2 -connect <HOST>:443 </dev/null 2>/dev/null | grep -i "ALPN"

Ожидаемый вывод:

root@kitploit:~
ALPN protocol: h2

Если вывод показывает h2, сервис договаривается об HTTP/2, и скрипты могут быть применимы.

Если ответа нет или согласован другой протокол, например http/1.1, скрипты для этой конечной точки неприменимы.

Обзор скриптов

СкриптСвязанная CVEЦельКогда использовать
data_dribble_probe.pyCVE-2019-9511Проверить поведение, связанное с Data Dribble, используя управление окном для высвобождения малых блоков данныхИспользовать, когда сервер поддерживает HTTP/2 и есть необходимость проверить поведение при доставке DATA-фреймов с уменьшенным окном.
priority_churn_probe.pyCVE-2019-9513Проверить поведение, связанное с Priority Churn, используя фреймы PRIORITY с низкой интенсивностьюИспользовать, когда сервер поддерживает HTTP/2 и есть необходимость проверить, обрабатывает ли он изменения приоритетов потоков.

Рекомендуемый порядок использования

Наиболее логичный порядок использования скриптов:

root@kitploit:~
1. Предварительная проверка HTTP/2 с openssl
   ↓
2. priority_churn_probe.py
   ↓
3. data_dribble_probe.py

Краткое объяснение порядка

Сначала используйте команду с openssl, чтобы подтвердить, что цель договаривается об HTTP/2. Затем используйте priority_churn_probe.py для проверки, принимает ли сервер и обрабатывает ли фреймы приоритета. После этого используйте data_dribble_probe.py для наблюдения за поведением сервера при уменьшенном окне потока, высвобождая малые объемы данных контролируемым образом.

Оба скрипта являются легкими пробами. Они не предназначены для вызова недоступности, а для получения технического подтверждения наблюдаемого поведения.


Скрипты

priority_churn_probe.py

Описание

priority_churn_probe.py — это легкая PoC для проверки поведения, связанного с CVE-2019-9513, известной как HTTP/2 Priority Churn.

Скрипт устанавливает соединение HTTP/2 через TLS, открывает небольшие HTTP-потоки и отправляет изменения приоритета через фреймы PRIORITY. Затем измеряет задержку до и после отправки этих фреймов, чтобы наблюдать, есть ли вариация в обработке.

Что делает скрипт

  • Договаривается об HTTP/2 через ALPN;
  • Открывает TLS-соединение с указанным хостом;
  • Отправляет простые GET-запросы к до трех путей;
  • Измеряет начальную задержку с помощью PING;
  • Использует запасной вариант с GET, если PING недостаточно;
  • Отправляет фреймы PRIORITY с низкой интенсивностью;
  • Измеряет задержку после перемешивания приоритетов;
  • Выводит сравнение времени до и после теста.

Сценарий использования

Используйте этот скрипт, когда необходимо проверить, принимает ли HTTP/2 сервер и обрабатывает ли фреймы приоритета, связанные с вектором Priority Churn, без выполнения агрессивного DoS-теста.

Он подходит для контролируемой проверки в рамках пентестов, анализа подверженности HTTP/2 и технического подтверждения уязвимого или потенциально чувствительного поведения.

Поля/параметры, которые нужно изменить

Скрипт принимает значения через аргументы командной строки:

root@kitploit:~
--host
--port
--paths
--shuffles

Объяснение параметров

ПараметрОписание
--hostFQDN разрешенной цели. Не включать https://.
--portTLS-порт, на котором доступен сервис HTTP/2. По умолчанию: 443.
--pathsСписок простых путей для открытия HTTP/2 потоков.
--shufflesКоличество циклов изменения приоритета. Держать низким для безопасного теста.

Идеальный путь для теста

Используйте легкие, общедоступные пути с низким воздействием, например:

root@kitploit:~
/
/robots.txt
/favicon.ico
/health
/login

Избегайте путей, которые выполняют тяжелые операции, сложные запросы, генерацию отчетов, загрузку, расширенный поиск или любые функции, создающие нагрузку на бэкенд.

Пример безопасного использования

root@kitploit:~
python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10

Ожидаемый вывод

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

root@kitploit:~
[OK] PING antes: 45.20 ms; após churn: 52.80 ms; shuffles=10
Sinal 9513: PRIORITY frames aceitos e processados; aumento sutil pós-churn evidencia o vetor (sem DoS).

Интерпретация результата

Если скрипт смог договориться об HTTP/2, открыть потоки и отправить фреймы PRIORITY, это указывает на то, что сервер обрабатывает такое поведение.

Небольшое увеличение задержки после перемешивания может использоваться как техническое подтверждение существования вектора, но не должно интерпретироваться само по себе как доказательство серьезного воздействия. Окончательная классификация зависит от контекста, версии сервера, архитектуры, смягчающих факторов, WAF/CDN и конфигурации HTTP/2.


data_dribble_probe.py

Описание

data_dribble_probe.py — это легкая PoC для проверки поведения, связанного с CVE-2019-9511, известной как HTTP/2 Data Dribble.

Скрипт устанавливает соединение HTTP/2 через TLS, открывает один поток и манипулирует окном управления потоком, чтобы высвобождать малые объемы данных, имитируя поведение постепенной доставки DATA-фреймов.

Что делает скрипт

  • Договаривается об HTTP/2 через ALPN;
  • Открывает TLS-соединение с указанным хостом;
  • Отправляет GET-запрос к заданному пути;
  • Регулирует начальное окно потока;
  • Высвобождает малые объемы данных контролируемым образом;
  • Подсчитывает полученные DATA-фреймы;
  • Выводит количество высвобожденных байтов, полученных фреймов и общее время.

Сценарий использования

Используйте этот скрипт, когда необходимо проверить, отвечает ли HTTP/2 сервер на шаблон уменьшенного управления потоком, связанный с вектором Data Dribble, без выполнения агрессивной нагрузки.

Он подходит для контролируемого технического подтверждения, особенно когда автоматизированные инструменты указывают на возможную подверженность, и нужно вручную проверить с меньшим операционным риском.

Поля/параметры, которые нужно изменить

Скрипт принимает значения через аргументы командной строки:

root@kitploit:~
--host
--path
--port
--bytes

Объяснение параметров

ПараметрОписание
--hostFQDN разрешенной цели. Не включать https://.
--pathПуть, который будет запрошен в тесте.
--portTLS-порт, на котором доступен сервис HTTP/2. По умолчанию: 443.
--bytesОбщее количество байтов, высвобождаемых во время теста. Держать низким для безопасной проверки.

Идеальный путь для теста

Используйте простой, статический путь с низкой стоимостью для сервера, например:

root@kitploit:~
/
/robots.txt
/favicon.ico
/health
/login

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

Пример безопасного использования

root@kitploit:~
python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12

Ожидаемый вывод

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

root@kitploit:~
[OK] HTTP/2 negociado; DATA frames recebidos: 12; bytes liberados: 12; tempo(ms): 1450
Sinal 9511: múltiplos DATA minúsculos entregues sob janela=1 (prova do caminho 'dribble' sem stress).

Интерпретация результата

Если скрипт договаривается об HTTP/2 и получает маленькие DATA-фреймы по мере высвобождения окна потока, это указывает на то, что сервер обрабатывает такой шаблон управления потоком.

Это поведение может использоваться как техническое подтверждение вектора, но критичность должна оцениваться с учетом реального контекста среды: используемый сервер, версия, лимиты соединений, балансировщик, CDN, WAF, тайм-ауты и защита от злоупотреблений.


Зависимости

Скрипты требуют Python 3 и библиотеку h2.

root@kitploit:~
python3
pip
h2
ssl
socket
argparse

Библиотеки ssl, socket, time, argparse и select входят в стандартную библиотеку Python.

Основная внешняя зависимость:

root@kitploit:~
h2

Установка зависимостей

Прямая установка:

root@kitploit:~
python3 -m pip install h2

Установка с использованием виртуального окружения:

root@kitploit:~
python3 -m venv venv
source venv/bin/activate
pip install h2

Проверьте установку:

root@kitploit:~
python3 -c "import h2; print('h2 instalado com sucesso')"

Необходимые настройки перед запуском

1. Подтвердить поддержку HTTP/2

Скрипты зависят от договоренности об HTTP/2 через ALPN.

Перед запуском подтвердите, что сервер поддерживает HTTP/2:

root@kitploit:~
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

Ожидаемый вывод:

root@kitploit:~
ALPN protocol: h2

Если сервер не договаривается о h2, скрипты неприменимы.


2. Использовать только FQDN в параметре --host

Не указывайте https:// в параметре --host.

Правильно:

root@kitploit:~
--host exemplo.com.br

Неправильно:

root@kitploit:~
--host https://exemplo.com.br

3. Выбирать легкие пути

Предпочитайте простые пути:

root@kitploit:~
/
/robots.txt
/favicon.ico
/health

Избегайте чувствительных или тяжелых конечных точек:

root@kitploit:~
/relatorios
/export
/search
/upload
/api/processamento

Цель — проверить поведение HTTP/2, а не нагружать бэкенд.


4. Держать значения низкими

Используйте консервативные значения:

Для priority_churn_probe.py:

root@kitploit:~
--shuffles 10

Для data_dribble_probe.py:

root@kitploit:~
--bytes 12

Не увеличивайте эти значения в рабочей среде без явного разрешения.


Примеры использования

Предварительная проверка HTTP/2

root@kitploit:~
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

Priority Churn — CVE-2019-9513

root@kitploit:~
python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10

Data Dribble — CVE-2019-9511

root@kitploit:~
python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12

Рекомендации по смягчению

Для снижения рисков, связанных с HTTP/2 DoS-атаками, рекомендуется поддерживать веб-серверы, прокси, балансировщики и библиотеки HTTP/2 в актуальном состоянии, применять лимиты соединений, настраивать соответствующие тайм-ауты, ограничивать количество одновременных потоков, ограничивать злоупотребление HTTP/2 фреймами, отслеживать аномалии задержек и оценивать отключение HTTP/2 на сервисах, которым этот протокол не нужен.

Также рекомендуется проверять защиту на таких уровнях, как CDN, WAF, обратный прокси, ingress controller и балансировщик нагрузки, поскольку часто реальная подверженность зависит больше от граничного устройства, чем от конечного приложения.

Подтверждение исправления должно основываться на компоненте, который фактически завершает и обрабатывает HTTP/2 в среде: веб-сервер, прокси, балансировщик, CDN или ingress controller.


Замечание по безопасности

Эти скрипты должны использоваться только в авторизованных средах.

Хотя они написаны для легкого выполнения, они напрямую взаимодействуют с механизмами HTTP/2, связанными с DoS-векторами. Поэтому использование должно соответствовать формальным рамкам теста, правилам взаимодействия и операционным ограничениям, определенным с ответственным за среду.

Перед запуском в рабочей среде подтвердите:

  • разрешенный домен;
  • разрешенное окно тестирования;
  • лимит интенсивности;
  • разрешенные пути;
  • контакты для экстренных ситуаций;
  • ожидаемые доказательства;
  • критерии для остановки теста.

Правовое предупреждение

Использование этих скриптов против систем без разрешения запрещено.

Цель этого репозитория — исключительно поддержка законных действий в области безопасности, таких как авторизованный пентест, контролируемая проверка уязвимостей, лабораторная работа, техническое изучение и безопасная демонстрация риска.

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