
Ferramenta CLI para detectar vulnerabilidades de HTTP Request Smuggling usando análise de atraso de tempo com payloads CL.TE e TE.CL integrados para testes de segurança automatizados.
O contrabando de solicitações HTTP é uma vulnerabilidade de alta gravidade, uma técnica onde um atacante contrabandeia uma solicitação HTTP ambígua para contornar controles de segurança e obter acesso não autorizado para realizar atividades maliciosas. A vulnerabilidade foi descoberta em 2005 por watchfire e posteriormente redescoberta em agosto de 2019 por James Kettle - (albinowax) e apresentada na DEF CON 27 e no Black-Hat USA. Para saber mais sobre essa vulnerabilidade, consulte seus bem documentados blogs de pesquisa no site da Portswigger. A ideia por trás desta ferramenta de segurança é detectar a vulnerabilidade HRS para um determinado host, e a detecção ocorre com base na técnica de atraso temporal com as permutas fornecidas. Para saber mais sobre esta ferramenta, recomendo fortemente a leitura do meu blog sobre ela.
A ferramenta é escrita em Python e para usá-la você deve ter a versão 3.x do Python instalada em sua máquina local. Ela aceita como entrada uma única URL ou uma lista de URLs fornecidas em um arquivo de texto. Seguindo a técnica de detecção da vulnerabilidade HRS, a ferramenta possui payloads embutidos com cerca de 37 permutas e payloads de detecção tanto para CL.TE quanto para TE.CL. Para cada host fornecido, ela gera um objeto de requisição de ataque usando esses payloads, calcula o tempo decorrido após receber a resposta de cada requisição e decide sobre a vulnerabilidade. No entanto, na maioria das vezes, há chances de falso positivo; portanto, para confirmar a vulnerabilidade, você pode usar o Burp Suite Turbo Intruder e testar seus payloads.
É muito importante conhecer algumas isenções legais antes de escanear qualquer alvo. Você deve ter autorização adequada antes de escanear qualquer alvo; caso contrário, sugiro que não utilize esta ferramenta para escanear alvos não autorizados. Para detectar a vulnerabilidade, a ferramenta envia múltiplos payloads várias vezes usando a opção (--retry), o que significa que, se algo der errado, existe a possibilidade de o socket do backend ser envenenado com os payloads, e visitantes legítimos desse site podem acabar vendo o payload envenenado em vez do conteúdo real do site. Portanto, recomendo fortemente tomar as devidas precauções antes de escanear qualquer site alvo, caso contrário você poderá enfrentar problemas legais.
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 você achar que o payload de detecção precisa ser alterado para torná-lo mais preciso, você pode atualizar o payload no arquivo payloads.json no array de detecção.
"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
}
]
Este projeto está licenciado sob a Licença MIT