如何在我的网络服务器上测试 HTTP TRACE?
我需要训练测试人员如何验证 HTTP TRACE 方法是否被禁用。
理想情况下,我需要将脚本粘贴到 Firebug 中以启动 https 连接以将 Web 服务器响应返回到 HTTP TRACE 命令。
背景:
我们的安全笔测试人员发现了一个 HTTP TRACE 漏洞,我们需要证明它是固定的。
参考:
如何在我的网络服务器上测试 HTTP TRACE?
我需要训练测试人员如何验证 HTTP TRACE 方法是否被禁用。
理想情况下,我需要将脚本粘贴到 Firebug 中以启动 https 连接以将 Web 服务器响应返回到 HTTP TRACE 命令。
背景:
我们的安全笔测试人员发现了一个 HTTP TRACE 漏洞,我们需要证明它是固定的。
参考:
我能想到的最简单的方法是使用cURL(可编写脚本)。
curl -v -X TRACE http://www.yourserver.com
在 Apache 服务器上运行它并TraceEnable Off
正确返回HTTP/1.1 405 Method Not Allowed
(刚刚在 Apache 2.2.22 上测试过)
这也适用于 HTTPS 站点,前提是 cURL 向 SSL 层提供了正确的信息。这是懒人对谷歌的检查
curl --insecure -v -X TRACE https://www.google.com/
...它协商连接(不验证证书链,但这不是问题,因为我们要检查TRACE
状态),并响应 405:
* Server certificate:
* subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=www.google.com
* start date: 2013-02-20 13:34:56 GMT
* expire date: 2013-06-07 19:43:27 GMT
* subjectAltName: www.google.com matched
* issuer: C=US; O=Google Inc; CN=Google Internet Authority
* SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
> TRACE / HTTP/1.1
> User-Agent: curl/7.25.0 (x86_64-suse-linux-gnu) libcurl/7.25.0 OpenSSL/1.0.1c zlib/1.2.7 libidn/1.25 libssh2/1.4.0
> Host: www.google.com
> Accept: */*
< HTTP/1.1 405 Method Not Allowed
有两种方法:
步骤1: openssl s_client -connect example.com:443
第2步 :
TRACE / HTTP/1.1
host: example.com
(按两次回车)
或者
OPTIONS / HTTP/1.1
host: example.com
(按两次回车键)(您可能需要快速粘贴这些内容,所以复制粘贴它们而不是输入) 第 3 步:验证是否输出,如果我没记错,它应该给出错误 400。
您可以使用的另一个工具是 gnutls。
您可以使用代理,例如Burp Suite或Zap,并遵循一些简单的步骤:
GET /index.php HTTP/1.1
)并拦截它;如果响应包括整个请求,则 TRACE 已启用并正常工作。
就发送测试而言,其他人所说的都是准确的,但没有人给出它是否易受攻击的正确识别。不同的服务器会有不同的响应,更不用说任何对 TRACE/TRACK 请求的 mod 重写。有两种方法可以识别 TRACE 和 TRACK 漏洞,它们似乎可以在不给出误报或误报的情况下工作(我已经意识到)。
1) 目标返回任何状态码 < 400 或 >= 600
2) 目标返回您传入的标头。