
Strumento Go e template Nuclei per testare il (CVE-2025-32094) di James Kettle: HTTP/1.1 must die: the desync endgame
Questo repository contiene strumenti di sicurezza difensiva per rilevare vulnerabilità di request smuggling (desync) HTTP/1 basati sulla ricerca innovativa di James Kettle di PortSwigger.
Questo lavoro è direttamente ispirato e implementa tecniche da:
I pattern di attacco, le tecniche e i metodi di rilevamento implementati in questi strumenti si basano sul lavoro pionieristico di James Kettle che ha rivelato difetti fondamentali nell'implementazione del protocollo HTTP/1.1 nei principali fornitori di infrastrutture web.
La ricerca di James Kettle ha dimostrato vulnerabilità che interessano:
Le definizioni ambigue dei confini delle richieste HTTP/1.1 creano quella che James Kettle ha definito "estrema ambiguità" su dove le richieste iniziano e finiscono. Ciò porta a discrepanze del parser tra server front-end e back-end, consentendo sofisticati attacchi di request smuggling. Questi strumenti aiutano a identificare tali vulnerabilità per test di sicurezza difensiva.
http1-desync-test.go)Un tester completo di vulnerabilità desync HTTP/1 che implementa molteplici pattern di attacco.
# Clone the repository
git clone https://github.com/nconsolo/echteeteepee.git
cd echteeteepee
# Install dependencies
go mod download
# Build the tool
go build -o http1-desync-test http1-desync-test.go
# Test all attack patterns
./http1-desync-test -target https://example.com
# Test specific attack pattern
./http1-desync-test -target https://example.com -test vh
# Enable verbose output
./http1-desync-test -target https://example.com -verbose
# Set custom timeout
./http1-desync-test -target https://example.com -timeout 10s
-target: URL di destinazione (obbligatorio)-test: Tipo di test: all, vh, 0cl, expect, double, clte (predefinito: all)-timeout: Timeout della richiesta (predefinito: 5s)-verbose: Abilita output dettagliato per vedere richieste/risposte grezzenuclei-templates/http1-desync.yaml)Template di scansione automatizzata per Nuclei per rilevare vulnerabilità desync HTTP/1 su larga scala.
# Install Nuclei (if not already installed)
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# Copy template to Nuclei templates directory
cp nuclei-templates/http1-desync.yaml ~/.nuclei-templates/
# Scan single target
nuclei -u https://example.com -t nuclei-templates/http1-desync.yaml
# Scan multiple targets
nuclei -l targets.txt -t nuclei-templates/http1-desync.yaml
# Scan with rate limiting
nuclei -u https://example.com -t nuclei-templates/http1-desync.yaml -rl 10
Tutti i pattern di attacco si basano sui risultati della ricerca di James Kettle e su tecniche di exploit comprovate.
Fonte: Ricerca "HTTP/1 Must Die" di James Kettle
Sfrutta le discrepanze in cui il proxy front-end vede un confine della richiesta mentre il server back-end ne vede un altro. Il payload dell'attacco incorpora una richiesta nascosta all'interno di ciò che appare come dati di header al front-end, ma viene interpretata come una richiesta separata dal back-end.
Esempio dalla ricerca: Utilizzato per dimostrare le differenze del parser nei principali provider CDN.
Fonte: Risultati delle vulnerabilità IIS e T-Mobile di James Kettle
Sfrutta differenti interpretazioni dell'header Content-Length: 0 tra server. Alcuni server ignorano il corpo quando CL=0, mentre altri lo elaborano comunque, portando a confusione sui confini delle richieste.
Impatto reale: Sfruttato con successo contro server IIS e infrastruttura T-Mobile.
Fonte: Ricerca di James Kettle su T-Mobile e LastPass
Sfrutta il meccanismo Expect: 100-continue dove front-end e back-end gestiscono la continuazione in modo diverso. Ciò crea opportunità per introdurre richieste mentre il front-end attende una risposta 100-continue.
Contesto di ricerca: Dimostrato contro i sistemi di autenticazione T-Mobile e LastPass.
Fonte: Metodologia desync avanzata di James Kettle
Combina più attacchi desync per avvelenare la coda delle risposte, permettendo agli attaccanti di controllare quali risposte ricevono altri utenti. Questo rappresenta uno degli attacchi più sofisticati della ricerca.
Scoperta critica: Consente la completa acquisizione del sito servendo risposte malevole a utenti legittimi.
Fonte: Ricerca fondamentale sull'ambiguità HTTP/1.1 di James Kettle
Sfrutta i conflitti tra gli header Content-Length e Transfer-Encoding: chunked. Diversi server danno priorità diversa a questi header, creando discrepanze del parser che consentono il request smuggling.
Fondamento: Questi conflitti rappresentano il difetto fondamentale che James Kettle ha identificato nella specifica HTTP/1.1.
Basandosi sulla metodologia di ricerca di James Kettle, gli strumenti cercano:
Seguendo la classificazione dell'impatto di James Kettle:
Questi strumenti sono progettati per:
NON utilizzare questi strumenti:
Seguendo la metodologia di James Kettle, gli strumenti mantengono connessioni HTTP/1.1 persistenti per testare correttamente le condizioni di desync. Ogni test crea una singola connessione TCP e invia più richieste per osservare le differenze di parsing.
I payload di attacco sono accuratamente costruiti basandosi sugli esatti pattern utilizzati da James Kettle nella sua ricerca, garantendo compatibilità con i comportamenti del server da lui documentati.
La logica di rilevamento implementa gli stessi indicatori che James Kettle ha utilizzato per identificare attacchi desync riusciti durante la sua ricerca di bug bounty da oltre $350.000.
Basandosi sulle scoperte e raccomandazioni di James Kettle:
Licenza MIT - Vedi file LICENSE per i dettagli
Questi strumenti sono forniti solo a scopo educativo e di sicurezza difensiva. Gli utenti sono responsabili di assicurarsi di avere la dovuta autorizzazione prima di testare qualsiasi sistema. Gli autori non si assumono alcuna responsabilità per l'uso improprio o i danni causati da questi strumenti.