Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
http2-rst-stream-attacker — Strumento altamente configurabile per verificare la vulnerabilità di un server a CVE-2023-44487 inviando rapidamente frame HEADERS e RST_STREAM e documentando le risposte del server. | Kitploit
Strumenti/GitHubGitHub/ndrscodes/http2-rst-stream-attacker
Analisi delle VulnerabilitàExploitSicurezza WebPenetration Testing
GitHubndrscodes/http2-rst-stream-attacker

http2-rst-stream-attacker

Strumento altamente configurabile per verificare la vulnerabilità di un server a CVE-2023-44487 inviando rapidamente frame HEADERS e RST_STREAM e documentando le risposte del server.

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
622 anni faNon ancora revisionato

CVE-2023-44487 e http2-rst-stream-attacker

CVE-2023-44487

CVE-2023-44487 è un exploit contro il protocollo HTTP2 stesso. In HTTP2, le richieste di dati vengono avviate inviando un frame HEADERS. Dopo aver ricevuto questo frame, il server inizierà a elaborare la richiesta, inviano successivamente frame DATA fino a quando tutti i dati non saranno stati trasmessi. HTTP2 specifica anche un frame RST_STREAM, che può essere utilizzato per chiudere uno stream in qualsiasi momento. Per prevenire attacchi, i server di solito limitano il numero massimo di stream aperti contemporaneamente (a 100 di default). Se i client attendono effettivamente il consumo di tutte le risorse, questo limite viene raramente raggiunto. L'attacco funziona per una semplice ragione: un client può inviare un frame RST_STREAM in qualsiasi punto. Un frame RST_STREAM chiude uno stream, e gli stream chiusi non vengono contati come stream concorrenti. Ciò significa che un client può inviare richieste rapidamente, senza mai raggiungere questo limite, semplicemente chiudendo una connessione subito dopo aver inviato una richiesta. Il server attaccato, in alcuni casi, inizierà comunque a caricare i dati, creando un carico eccessivo.

Questo strumento mira a verificare la vulnerabilità di un server a questo attacco. Stabilisce una o più connessioni HTTP2 concorrenti e successivamente invia i numeri specificati di frame HEADER, seguiti da frame RST_STREAM.

Fornisce inoltre numerose altre opzioni di configurazione, come il ritardo tra i frame HEADERS e RST_STREAM, il numero di stream da aprire, il numero di frame da inviare per stream e così via. Al termine dell'attacco, stampa un riepilogo contenente informazioni sul numero di frame ricevuti, nonché sul numero di errori e frame GOAWAY ricevuti. Questo può aiutarti a identificare se i tuoi servizi sono vulnerabili a CVE-2023-44487.

Esecuzione

Al momento, questo strumento è distribuito solo come codice sorgente, il che significa che è richiesta l'installazione tramite go install. Lo strumento può essere eseguito lanciando go run main.go <options> È presente anche uno script python che può essere utilizzato per tracciare le informazioni sulla latenza scritte nel file monitor.log.

Strumentazione

Inoltre, ho creato un nuovo tooling Python per misurazioni più accurate ed estese. Il file runner.py situato nella cartella tooling leggerà i valori definiti nel tuo config.py (vedi config-sample.py per i dettagli) ed eseguirà tutti i test per tutti i container docker definiti. Eseguirà quindi il test più efficace (mediana + latenza media più alte) per tutti i percorsi definiti nell'array paths. Produrrà grafici e file di log per ogni test eseguito. Questo tooling è ancora in fase di sviluppo. L'ho creato solo perché ero troppo pigro per eseguire manualmente tutti questi test per il nostro articolo di ricerca. Sentiti libero di inviare una PR per ripulirlo o per renderlo effettivamente utilizzabile per più del nostro caso d'uso.

Flag della CLI

Attualmente, sono implementate le seguenti opzioni CLI:

Output di esempio

Lo strumento stamperà molte informazioni di debug, oltre a un riepilogo. Le informazioni di debug contengono dettagli sul modo in cui la connessione è stata stabilita, sull'avanzamento corrente e sul tipo di frame attualmente inviati.

Il riepilogo apparirà più o meno così (a seconda della configurazione)

root@kitploit:~
####################SUMMARY####################
Packet types received:
	PING: 2
	HEADERS: 12
	SETTINGS: 0
	DATA: 11
	GOAWAY: 3
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
Attack ending reasons (per receiving thread):
	GoAway events: 3
	Timeout events: 0
	Error events: 0
Summary for connection 2
	PING: 1
	HEADERS: 9
	SETTINGS: 0
	DATA: 6
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.
Summary for connection 1
	PING: 1
	HEADERS: 3
	SETTINGS: 0
	DATA: 5
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.
Summary for connection 0
	PING: 0
	HEADERS: 0
	SETTINGS: 0
	DATA: 0
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.

Se pensi che ci siano altre statistiche da raccogliere, non esitare a contattarmi o ad aprire una issue!

TODO

  • calcolare il ritardo medio tra l'invio di HEADERS e la ricezione del primo frame per questa richiesta
  • calcolare il ritardo medio tra l'invio di HEADERS e la ricezione di frame GOAWAY, se presenti
  • calcolare la percentuale di connessioni a cui il server ha risposto correttamente
  • calcolare la percentuale di stream a cui il server ha risposto correttamente (per connessione e in totale)
  • includere nel riepilogo il numero di pacchetti inviati

Esclusione di responsabilità

Questo strumento è destinato SOLO a scopi di ricerca. Non è destinato a eseguire attacchi contro server che non possiedi o che non gestisci. Non mi assumo alcuna responsabilità per l'accuratezza delle statistiche fornite, né per gli attacchi e le loro conseguenze su server e servizi.

Scarica lo strumento
FlagPredefinitoSignificato
frames1il numero di frame HEADERS e RST_STREAM da inviare su qualsiasi stream
connections1il numero di connessioni TLS su cui eseguire l'attacco (in concorrenza)
consecutiveSends1numero di frame HEADERS da inviare prima di inviare i frame RST_STREAM (per flusso)
connectAttempts1numero di connessioni consecutive su cui eseguire il test (per routine di connessione)
delay0il tempo (in ms) di attesa tra l'invio dei frame HEADERS e RST_STREAM
ignoreGoAwayfalsese true, i flussi GOAWAY non causeranno la terminazione della routine di ricezione. Invece, attenderà fino a quando nessun frame sarà stato ricevuto per più di 10 secondi.
monitorfalseabilita il monitoraggio delle prestazioni
monitorDelay100il tempo (in ms) di attesa tra i test della latenza di risposta
monitorLog./monitor.logil file in cui scrivere i log del ritardo del monitoraggio
routines1il numero di stream da attaccare
skipValidationtruese true, il certificato del server non verrà validato (questo è il valore predefinito - non ci interessa la sicurezza dato che siamo comunque noi gli attaccanti)
timeout1000tempo di attesa per nuovi frame prima di considerare il tentativo di connessione non valido e fermarlo
urlhttps://localhost:433/l'url contro cui eseguire l'attacco