Race e Smuggling
Race / Smuggling offre due strumenti specializzati per attacchi HTTP sensibili alla temporizzazione e a livello di protocollo.
Race condition
La scheda Race invia più copie di una richiesta simultaneamente allo stesso endpoint e consente di confrontare risposte e tempi tra le esecuzioni parallele.
Quando usarla
- TOCTOU (momento del controllo/momento dell'uso): verifica se richieste concorrenti possono inserirsi tra un controllo e un'operazione che modifica lo stato.
- Manipolazione degli account: invia modifiche del saldo, riscatti di coupon o operazioni soggette a limiti in modo concorrente per verificare doppie spese o riscatti in eccesso.
- Aggiramento dei limiti di voto o frequenza: conferma se i limiti per utente sono applicati in modo atomico.
Eseguire un test di race condition
- Crea la richiesta bersaglio nella scheda Race o inviala a questa scheda.
- Imposta il valore di concorrenza, cioè il numero di copie da inviare in parallelo.
- Fai clic su Invia Race. Tutte le copie vengono inviate il più simultaneamente possibile.
- Esamina la tabella delle risposte: codice di stato, corpo e tempo trascorso per ogni copia.
- Le differenze tra le risposte (codici di stato diversi, corpi di risposta diversi, successo inatteso nelle copie 2+) indicano una finestra temporale sfruttabile per una race condition.
Race condition HTTP/2 con pacchetto singolo
Quando il bersaglio supporta HTTP/2, abilita la modalità HTTP/2. HTTP/2 multiplexa tutte le richieste parallele su una connessione, eliminando la variabilità dei tempi di rete e rendendo più affidabile l'arrivo concorrente al server.
HTTP request smuggling
La scheda Smuggling verifica come un server gestisce le intestazioni ambigue Content-Length e Transfer-Encoding per rilevare desincronizzazioni tra frontend e backend.
Contesto
Quando un proxy inverso e un server backend non concordano su dove termina una richiesta e inizia la successiva, un prefisso introdotto tramite smuggling dalla richiesta A può essere anteposto alla richiesta B. L'impatto va dall'avvelenamento della cache all'aggiramento dell'autenticazione e all'iniezione di richieste arbitrarie.
Varianti di desincronizzazione
| Variante | Descrizione |
|---|---|
| CL.TE | Il frontend usa Content-Length; il backend usa Transfer-Encoding |
| TE.CL | Il frontend usa Transfer-Encoding; il backend usa Content-Length |
| TE.TE | Entrambi usano Transfer-Encoding, ma rispondono diversamente a un'intestazione offuscata |
Eseguire una sonda di smuggling
- Seleziona l'endpoint bersaglio nella scheda Smuggling.
- Scegli la variante di desincronizzazione da verificare.
- Fai clic su Invia sonda. Lo strumento invia la richiesta preparata e misura la risposta.
- Un timeout o una risposta inattesa alla seconda richiesta della sequenza indica una possibile desincronizzazione.
- Conferma manualmente prima di creare un rilievo di sicurezza: si verificano falsi positivi quando le condizioni di rete causano un timeout non correlato alla sonda.