Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2023-44487 — Environnement éducatif pour LTAT.04.022 Homework 4. | Kitploit
Outils/GitHubGitHub/hirokiii/cve-2023-44487
Sécurité des ConteneursAnalyse des VulnérabilitésAudit de ConfigurationSécurité WebSécurité RéseauApprentissage et ÉducationLabs et Pratique
GitHubhirokiii/cve-2023-44487

CVE-2023-44487

Environnement éducatif pour LTAT.04.022 Homework 4.

Voir le dépôt
71il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2023-44487 — Laboratoire de test de la réinitialisation rapide HTTP/2

Environnement pédagogique pour le devoir 4 de LTAT.04.022.
Quatre conteneurs vous permettent d'analyser et de comparer des configurations vulnérables et corrigées.


Tableau des ports

ConteneurPortLogicielStatut
nginx-vuln8441nginx 1.24Vulnérable
nginx-secure8442nginx latestCorrigé
apache-vuln8443Apache 2.4.57Vulnérable
apache-secure8444Apache latestCorrigé

1. Configuration

# Generate self-signed TLS certs (required by all containers)
bash gen-certs.sh

# Start all 4 containers
docker compose up -d

# Verify all are running
docker compose ps

2. Test de connectivité de base

# Check each container responds (ignore cert warning with -k)
curl -k --http2 -I https://localhost:8441   # nginx vulnerable
curl -k --http2 -I https://localhost:8442   # nginx secure
curl -k --http2 -I https://localhost:8443   # apache vulnerable
curl -k --http2 -I https://localhost:8444   # apache secure

Attendu : HTTP/2 200 des quatre conteneurs.


3. Confirmer que HTTP/2 est actif

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

Recherchez :

* ALPN: server accepted h2
< HTTP/2 200

4. Exécuter le scanner CVE

# Copy the scanner here first (or adjust the path)
cp ../scanner.py .

python3 scanner.py localhost 8441   # nginx vuln
python3 scanner.py localhost 8442   # nginx secure
python3 scanner.py localhost 8443   # apache vuln
python3 scanner.py localhost 8444   # apache secure

Résultats attendus :

CibleHTTP/2Verdict
8441OUIPROBABLEMENT VULNÉRABLE
8442OUIPROBABLEMENT CORRIGÉ
8443OUIPROBABLEMENT VULNÉRABLE
8444OUIUNKWOWN

5. Vérifier les limites de flux (différence clé)

Utilisez nghttp pour inspecter la trame SETTINGS que chaque serveur envoie.
Cela montre directement la valeur SETTINGS_MAX_CONCURRENT_STREAMS.

# Install nghttp2 client
sudo apt install nghttp2-client   # Ubuntu/Debian
brew install nghttp2              # macOS

# Inspect SETTINGS frame
for port in 8441 8442 8443 8444; LIKELY PAdo
  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

# (Results)
port 8441 → MAX_CONCURRENT_STREAMS: 128
port 8442 → MAX_CONCURRENT_STREAMS: 32
port 8443 → MAX_CONCURRENT_STREAMS: 1000
port 8444 → MAX_CONCURRENT_STREAMS: 32

Serveur vulnérable : limite de flux élevée (128+)
Serveur sécurisé : limité à 32


6. Simuler la pression de réinitialisation rapide (sûr, local uniquement)

Cela envoie 50 requêtes rapidement sur une seule connexion — pas une véritable attaque, mais montre le comportement de gestion RST du serveur dans les logs.

# h2load is part of nghttp2-client
h2load -n 1000 -c 1 -m 50 https://localhost:8441   # vuln
h2load -n 1000 -c 1 -m 50 https://localhost:8442   # secure

Logs attendus pour les exemples :

$ 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%

Le conteneur sécurisé affichera des réinitialisations ou des refus de connexion lorsque la limite de flux est atteinte ; le conteneur vulnérable acceptera les 50 sans problème.


7. Comparer les en-têtes des serveurs

# Vulnerable servers expose version info
curl -k -I https://localhost:8441 2>/dev/null | grep -i server
curl -k -I https://localhost:8443 2>/dev/null | grep -i server

# Secure servers hide or minimize version info
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. Nettoyage

docker compose down

Ce que changent les configurations (Résumé)

nginx

ParamètreVulnérable (1.24)Sécurisé (1.25.3+)
http2_max_concurrent_streams128 (par défaut)32
keepalive_requests10000100
keepalive_timeout300s65s
Garde de débit RST_STREAMAucunIntégré au correctif

Apache

ParamètreVulnérable (2.4.57)Sécurisé (2.4.58+)
H2MaxSessionStreams100032
ServerTokensCompletProd
Correctif de protection contre les réinitialisationsNon présentAppliqué

Références

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2023-44487
  • Rapport Cloudflare: https://blog.cloudflare.com/technical-breakdown-http2-rapid-reset-ddos-attack/
  • Rapport Google: https://cloud.google.com/blog/products/identity-security/how-it-works-the-novel-http2-rapid-reset-ddos-attack
  • Avis CISA: https://www.cisa.gov/news-events/alerts/2023/10/10/http2-rapid-reset-vulnerability-cve-2023-44487
Télécharger l’outil