HTTP请求走私是一种高严重性漏洞,攻击者通过走私模糊的HTTP请求来绕过安全控制并获取未授权访问以执行恶意活动。该漏洞最早于2005年由watchfire发现,随后于2019年8月由James Kettle (albinowax)重新发现,并在DEF CON 27和Black-Hat USA上展示。要了解更多关于此漏洞的信息,可以参考他在Portswigger网站上记录详尽的研究博客。因此,此安全工具的思路是针对给定主机检测HRS漏洞,检测基于时间延迟技术与给定的排列组合。要了解更多关于此工具的信息,我强烈建议阅读我关于此工具的博客文章。
该工具使用Python编写,使用前需在本地计算机上安装Python 3.x版本。它接受单个URL或文本文件中的URL列表作为输入。通过遵循HRS漏洞检测技术,该工具内置了约37个有效载荷的排列组合以及针对CL.TE和TE.CL的检测载荷。对于每个给定的主机,它将使用这些载荷生成攻击请求对象,并计算每个请求收到响应后的经过时间,从而判断是否存在漏洞。但大多数情况下,结果可能是误报,因此要确认漏洞,可以使用Burp Suite Turbo Intruder并尝试自己的载荷。
在扫描任何目标之前,了解一些法律免责声明非常重要。在扫描任何目标之前,您应获得适当的授权,否则我建议不要使用此工具扫描未授权的目标。因为为了检测漏洞,它会通过(--retry)选项多次发送多个载荷,这意味着如果出现问题,后端套接字可能会被这些载荷污染,该网站的普通访客可能会看到被污染的载荷,而不是网站的实际内容。因此,我强烈建议在扫描任何目标网站之前采取适当的预防措施,否则您可能会面临法律问题。
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>
如果您觉得检测载荷需要修改以提高准确性,可以在payloads.json文件中更新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
}
]
本项目采用MIT许可证授权。