
Strumento CLI per rilevare vulnerabilità HTTP Request Smuggling mediante analisi time-delay con payload CL.TE e TE.CL integrati per test di sicurezza automatizzati.
L'HTTP request smuggling è una vulnerabilità ad alta gravità, una tecnica in cui un attaccante introduce una richiesta HTTP ambigua per bypassare i controlli di sicurezza e ottenere accesso non autorizzato per eseguire attività dannose. La vulnerabilità è stata scoperta nel 2005 da watchfire e successivamente riscoperta nell'agosto 2019 da James Kettle - (albinowax) e presentata al DEF CON 27 e al Black-Hat USA. Per saperne di più su questa vulnerabilità, puoi consultare i suoi blog di ricerca ben documentati sul sito di Portswigger. L'idea alla base di questo strumento di sicurezza è quella di rilevare la vulnerabilità HRS per un dato host, basandosi sulla tecnica del time delay con le permutazioni fornite. Per saperne di più su questo strumento, ti consiglio vivamente di leggere il mio blog post su questo strumento.
Lo strumento è scritto in Python e per utilizzarlo è necessario avere Python versione 3.x installato sulla propria macchina locale. Accetta in input un singolo URL o una lista di URL da fornire in un file di testo. Seguendo la tecnica di rilevamento della vulnerabilità HRS, lo strumento ha payload integrati che comprendono circa 37 permutazioni e payload di rilevamento sia per CL.TE che per TE.CL. Per ogni host fornito, genera un oggetto di richiesta di attacco utilizzando questi payload e calcola il tempo trascorso dopo aver ricevuto la risposta per ogni richiesta, decidendo così la presenza della vulnerabilità. Tuttavia, la maggior parte delle volte potrebbe trattarsi di un falso positivo, quindi per confermare la vulnerabilità puoi utilizzare Burp Suite Turbo Intruder e provare i tuoi payload.
È molto importante conoscere alcuni disclaimer legali prima di scansionare qualsiasi target. Devi avere la dovuta autorizzazione prima di scansionare qualsiasi target, altrimenti ti suggerisco di non utilizzare questo strumento per scansionare un target non autorizzato. Per rilevare la vulnerabilità, lo strumento invia più payload più volte utilizzando l'opzione (--retry), il che significa che se qualcosa va storto, c'è la possibilità che il socket di backend venga avvelenato con i payload e che eventuali visitatori legittimi di quel sito web possano finire per vedere il payload avvelenato invece del contenuto reale del sito. Quindi, ti consiglio vivamente di prendere le dovute precauzioni prima di scansionare qualsiasi sito web target, altrimenti potresti incorrere in problemi legali.
git clone https://github.com/anshumanpattnaik/http-request-smuggling.git
cd http-request-smuggling
pip3 install -r requirements.txt
usage: smuggle.py [-h] [-u URL] [-urls URLS] [-t TIMEOUT] [-m METHOD]
[-r RETRY]
HTTP Request Smuggling vulnerability detection tool
optional arguments:
-h, --help show this help message and exit
-u URL, --url URL set the target url
-urls URLS, --urls URLS
set list of target urls, i.e (urls.txt)
-t TIMEOUT, --timeout TIMEOUT
set socket timeout, default - 10
-m METHOD, --method METHOD
set HTTP Methods, i.e (GET or POST), default - POST
-r RETRY, --retry RETRY
set the retry count to re-execute the payload, default
- 2
python3 smuggle.py -u <URL>
python3 smuggle.py -urls <URLs.txt>
Se ritieni che il payload di rilevamento debba essere modificato per renderlo più accurato, puoi aggiornare il payload nel file payloads.json all'interno dell'array detection.
"detection": [
{
"type": "CL.TE",
"payload": "\r\n1\r\nZ\r\nQ\r\n\r\n",
"content_length": 5
},
{
"type": "TE.CL",
"payload": "\r\n0\r\n\r\n\r\nG",
"content_length": 6
}
]
Questo progetto è concesso in licenza con MIT License