
Herramienta CLI para detectar vulnerabilidades de HTTP Request Smuggling mediante análisis de retardo de tiempo con payloads CL.TE y TE.CL integrados para pruebas de seguridad automatizadas.
El contrabando de solicitudes HTTP es una vulnerabilidad de alta gravedad que consiste en una técnica donde un atacante introduce de forma encubierta una solicitud HTTP ambigua para eludir los controles de seguridad y obtener acceso no autorizado para realizar actividades maliciosas. La vulnerabilidad fue descubierta originalmente en 2005 por watchfire y posteriormente redescubierta en agosto de 2019 por James Kettle - (albinowax) y presentada en DEF CON 27 y Black-Hat USA. Para conocer más sobre esta vulnerabilidad, puedes consultar sus blogs de investigación bien documentados en el sitio web de Portswigger. La idea detrás de esta herramienta de seguridad es detectar la vulnerabilidad HRS para un host determinado, y la detección se basa en la técnica de retardo temporal con las permutaciones dadas. Para obtener más información sobre esta herramienta, te recomiendo encarecidamente que leas mi blog sobre ella.
La herramienta está escrita en Python y para usarla debes tener instalada la versión 3.x de Python en tu máquina local. Toma como entrada una sola URL o una lista de URLs que debes proporcionar en un archivo de texto. Siguiendo la técnica de detección de vulnerabilidad HRS, la herramienta tiene cargas útiles integradas que constan de alrededor de 37 permutaciones y cargas de detección tanto para CL.TE como para TE.CL. Para cada host dado, genera el objeto de solicitud de ataque utilizando estas cargas útiles, calcula el tiempo transcurrido después de recibir la respuesta de cada solicitud y decide si existe la vulnerabilidad. Sin embargo, la mayoría de las veces es posible que haya falsos positivos, por lo que para confirmar la vulnerabilidad puedes usar el turbo intruder de Burp Suite e intentar con tus propias cargas útiles.
Es bastante importante conocer algunas exenciones de responsabilidad legales antes de escanear cualquier objetivo. Debes tener la autorización adecuada antes de escanear cualquier objetivo; de lo contrario, sugiero que no uses esta herramienta para escanear un objetivo no autorizado, porque para detectar la vulnerabilidad envía múltiples cargas útiles varias veces usando la opción (--retry), lo que significa que si algo sale mal, existe la posibilidad de que el socket del backend se envenene con las cargas útiles y cualquier visitante legítimo de ese sitio web en particular pueda terminar viendo la carga útil envenenada en lugar del contenido real del sitio web. Por lo tanto, recomiendo encarecidamente tomar las precauciones adecuadas antes de escanear cualquier sitio web objetivo; de lo contrario, podrías enfrentar problemas legales.
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]
Herramienta de detección de vulnerabilidad de contrabando de solicitudes HTTP
optional arguments:
-h, --help muestra este mensaje de ayuda y sale
-u URL, --url URL establece la URL objetivo
-urls URLS, --urls URLS
establece la lista de URLs objetivo, ej. (urls.txt)
-t TIMEOUT, --timeout TIMEOUT
establece el tiempo de espera del socket, por defecto - 10
-m METHOD, --method METHOD
establece los métodos HTTP, ej. (GET o POST), por defecto - POST
-r RETRY, --retry RETRY
establece el número de reintentos para re-ejecutar la carga útil, por defecto - 2
python3 smuggle.py -u <URL>
python3 smuggle.py -urls <URLs.txt>
Si consideras que es necesario cambiar la carga útil de detección para hacerla más precisa, puedes actualizar la carga útil en el archivo payloads.json dentro del arreglo 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
}
]
Este proyecto está licenciado bajo la Licencia MIT