
Outil CLI pour détecter les vulnérabilités de contrebande de requêtes HTTP (HTTP Request Smuggling) à l'aide d'une analyse de délai temporel, avec des charges utiles CL.TE et TE.CL intégrées pour les tests de sécurité automatisés.
La contrebande de requêtes HTTP est une vulnérabilité de haute sévérité où un attaquant dissimule une requête HTTP ambiguë pour contourner les contrôles de sécurité et obtenir un accès non autorisé afin d'effectuer des activités malveillantes. Cette vulnérabilité a été découverte en 2005 par watchfire puis redécouverte en août 2019 par James Kettle - (albinowax) et présentée lors de DEF CON 27 et Black-Hat USA. Pour en savoir plus sur cette vulnérabilité, vous pouvez consulter ses blogs de recherche bien documentés sur le site de Portswigger. L'idée derrière cet outil de sécurité est de détecter la vulnérabilité HRS pour un hôte donné, et la détection repose sur la technique du délai de réponse avec les permutations fournies. Pour en savoir plus sur cet outil, je vous encourage vivement à lire mon blog à son sujet.
L'outil est écrit en Python et nécessite Python version 3.x installé sur votre machine locale. Il prend en entrée soit une seule URL, soit une liste d'URLs que vous devez fournir dans un fichier texte. En suivant la technique de détection de vulnérabilité HRS, l'outil intègre des charges utiles (payloads) comprenant environ 37 permutations et des charges de détection pour CL.TE et TE.CL. Pour chaque hôte donné, il génère un objet de requête d'attaque en utilisant ces charges, calcule le temps écoulé après la réception de la réponse pour chaque requête, et détermine la vulnérabilité. Cependant, la plupart du temps, il peut y avoir des faux positifs. Pour confirmer la vulnérabilité, vous pouvez utiliser Burp Suite Turbo Intruder et tester vos propres charges.
Il est très important de connaître certains avertissements légaux avant de scanner une cible. Vous devez disposer d'une autorisation appropriée avant de scanner une cible, sinon je vous suggère de ne pas utiliser cet outil pour scanner une cible non autorisée. En effet, pour détecter la vulnérabilité, l'outil envoie plusieurs charges à plusieurs reprises via l'option (--retry), ce qui signifie que si quelque chose tourne mal, il est possible que le socket backend soit empoisonné par les charges. Les visiteurs légitimes de ce site web pourraient alors voir la charge empoisonnée plutôt que le contenu réel du site. Je vous recommande donc vivement de prendre les précautions appropriées avant de scanner tout site cible, sinon vous pourriez faire face à des problèmes juridiques.
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>
Si vous estimez que la charge de détection doit être modifiée pour la rendre plus précise, vous pouvez mettre à jour la charge dans le fichier payloads.json, dans le tableau 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
}
]
Ce projet est sous licence MIT License.