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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2023-44487 — Образовательная среда для LTAT.04.022 Домашнее задание 4. | Kitploit
Инструменты/GitHubGitHub/hirokiii/cve-2023-44487
Безопасность контейнеровАнализ уязвимостейАудит конфигурацииВеб-безопасностьСетевая безопасностьОбучение и ОбразованиеЛаборатории и Практика
GitHubhirokiii/cve-2023-44487

CVE-2023-44487

Образовательная среда для LTAT.04.022 Домашнее задание 4.

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

Популярное

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

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

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

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

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

CVE-2023-44487 — Лаборатория тестирования HTTP/2 Rapid Reset

Учебная среда для LTAT.04.022 Домашнее задание 4.
Четыре контейнера позволяют сканировать и сравнивать уязвимые и исправленные конфигурации.


Карта портов

КонтейнерПортПрограммное обеспечениеСтатус
nginx-vuln8441nginx 1.24Уязвимый
nginx-secure8442nginx latestИсправленный
apache-vuln8443Apache 2.4.57Уязвимый
apache-secure8444Apache latestИсправленный

1. Настройка

root@kitploit:~
# Создание самоподписанных TLS-сертификатов (требуется для всех контейнеров)
bash gen-certs.sh

# Запуск всех 4 контейнеров
docker compose up -d

# Проверка, что все запущены
docker compose ps

2. Базовая проверка связи

root@kitploit:~
# Проверка, что каждый контейнер отвечает (игнорировать предупреждения сертификата с -k)
curl -k --http2 -I https://localhost:8441   # nginx уязвимый
curl -k --http2 -I https://localhost:8442   # nginx защищённый
curl -k --http2 -I https://localhost:8443   # apache уязвимый
curl -k --http2 -I https://localhost:8444   # apache защищённый

Ожидается: HTTP/2 200 от всех четырёх.


3. Подтверждение активности HTTP/2

root@kitploit:~
curl -k --http2 -v https://localhost:8441 2>&1 | grep -E "ALPN|HTTP/"

Ищите:

root@kitploit:~
* ALPN: server accepted h2
< HTTP/2 200

4. Запуск сканера CVE

root@kitploit:~
# Скопируйте сканер сюда (или измените путь)
cp ../scanner.py .

python3 scanner.py localhost 8441   # nginx уязвимый
python3 scanner.py localhost 8442   # nginx защищённый
python3 scanner.py localhost 8443   # apache уязвимый
python3 scanner.py localhost 8444   # apache защищённый

Ожидаемые результаты:

ЦельHTTP/2

5. Проверка лимитов потоков (ключевое различие)

Используйте nghttp, чтобы просмотреть кадр SETTINGS, отправляемый каждым сервером.
Это показывает значение SETTINGS_MAX_CONCURRENT_STREAMS напрямую.

root@kitploit:~
# Установка клиента nghttp2
sudo apt install nghttp2-client   # Ubuntu/Debian
brew install nghttp2              # macOS

# Просмотр кадра SETTINGS
for port in 8441 8442 8443 8444; do
  streams=$(nghttp -nvy https://localhost:$port 2>&1 | grep "MAX_CONCURRENT" | tail -1 | awk -F: '{print $2}' | tr -d ']')
  echo "port $port → MAX_CONCURRENT_STREAMS: $streams"
done

# (Результаты)
port 8441 → MAX_CONCURRENT_STREAMS: 128
port 8442 → MAX_CONCURRENT_STREAMS: 32
port 8443 → MAX_CONCURRENT_STREAMS: 1000
port 8444 → MAX_CONCURRENT_STREAMS: 32

Уязвимый сервер: высокий лимит потоков (128+)
Защищённый сервер: ограничен до 32


6. Имитация нагрузки Rapid Reset (безопасно, только локально)

Это отправляет 50 запросов быстро по одному соединению — не реальная атака, но показывает поведение сервера при обработке RST в логах.

root@kitploit:~
# h2load является частью nghttp2-client
h2load -n 1000 -c 1 -m 50 https://localhost:8441   # уязвимый
h2load -n 1000 -c 1 -m 50 https://localhost:8442   # защищённый

Ожидаемые логи для примеров:

root@kitploit:~
$ h2load -n 1000 -c 1 -m 1000 https://localhost:8441
starting benchmark...
spawning thread #0: 1 total client(s). 1000 total requests
TLS Protocol: TLSv1.3
Cipher: TLS_AES_256_GCM_SHA384
Server Temp Key: X25519 253 bits
Application protocol: h2
progress: 10% done
progress: 20% done
progress: 30% done
progress: 40% done
progress: 50% done
progress: 60% done
progress: 70% done
progress: 80% done
progress: 90% done
progress: 100% done

finished in 22.51ms, 44428.65 req/s, 5.38MB/s
requests: 1000 total, 1000 started, 1000 done, 1000 succeeded, 0 failed, 0 errored, 0 timeout
status codes: 1000 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 124.07KB (127049) total, 83.01KB (85000) headers (space savings 38.85%), 23.44KB (24000) data
                     min         max         mean         sd        +/- sd
time for request:      260us      2.98ms      2.25ms       384us    87.70%
time for connect:     2.51ms      2.51ms      2.51ms         0us   100.00%
time to 1st byte:     3.24ms      3.24ms      3.24ms         0us   100.00%
req/s           :   45059.11    45059.11    45059.11        0.00   100.00%

$ h2load -n 1000 -c 1 -m 1000 https://localhost:8442
starting benchmark...
spawning thread #0: 1 total client(s). 1000 total requests
TLS Protocol: TLSv1.3
Cipher: TLS_AES_256_GCM_SHA384
Server Temp Key: X25519 253 bits
Application protocol: h2
progress: 10% done

finished in 5.38ms, 18583.91 req/s, 2.33MB/s
requests: 1000 total, 1000 started, 167 done, 100 succeeded, 900 failed, 900 errored, 0 timeout
status codes: 100 2xx, 0 3xx, 0 4xx, 0 5xx
traffic: 12.83KB (13134) total, 8.30KB (8500) headers (space savings 38.85%), 2.25KB (2300) data
                     min         max         mean         sd        +/- sd
time for request:       83us      1.04ms       533us       256us    63.00%
time for connect:     2.96ms      2.96ms      2.96ms         0us   100.00%
time to 1st byte:     3.55ms      3.55ms      3.55ms         0us   100.00%
req/s           :   19316.22    19316.22    19316.22        0.00   100.00%

Защищённый контейнер покажет сбросы соединений или отказы при достижении лимита потоков; уязвимый примет все 50 без нареканий.


7. Сравнение заголовков сервера

root@kitploit:~
# Уязвимые серверы раскрывают информацию о версии
curl -k -I https://localhost:8441 2>/dev/null | grep -i server
curl -k -I https://localhost:8443 2>/dev/null | grep -i server

# Защищённые серверы скрывают или минимизируют информацию о версии
curl -k -I https://localhost:8442 2>/dev/null | grep -i server
curl -k -I https://localhost:8444 2>/dev/null | grep -i server

8. Завершение работы

root@kitploit:~
docker compose down

Что изменяют конфигурации (краткое описание)

nginx

Apache

ПараметрУязвимый (2.4.57)Защищённый (2.4.58+)
H2MaxSessionStreams100032
ServerTokensFull

Ссылки

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2023-44487
  • Отчёт Cloudflare: https://blog.cloudflare.com/technical-breakdown-http2-rapid-reset-ddos-attack/
  • Отчёт Google: https://cloud.google.com/blog/products/identity-security/how-it-works-the-novel-http2-rapid-reset-ddos-attack
  • Уведомление CISA: https://www.cisa.gov/news-events/alerts/2023/10/10/http2-rapid-reset-vulnerability-cve-2023-44487
Скачать инструмент
Вердикт
8441ДАВЕРОЯТНО УЯЗВИМ
8442ДАВЕРОЯТНО ИСПРАВЛЕН
8443ДАВЕРОЯТНО УЯЗВИМ
8444ДАНЕИЗВЕСТНО
ПараметрУязвимый (1.24)Защищённый (1.25.3+)
http2_max_concurrent_streams128 (по умолчанию)32
keepalive_requests10000100
keepalive_timeout300s65s
Защита от RST_STREAMНетВстроена в патч
Prod
Защита от сбросаОтсутствуетПрименена