测试 HTTP TRACE 方法

信息安全 Web应用程序 应用安全 渗透测试 http 阿帕奇
2021-08-11 11:45:18

如何在我的网络服务器上测试 HTTP TRACE?

我需要训练测试人员如何验证 HTTP TRACE 方法是否被禁用。

理想情况下,我需要将脚本粘贴到 Firebug 中以启动 https 连接以将 Web 服务器响应返回到 HTTP TRACE 命令。

背景:

我们的安全笔测试人员发现了一个 HTTP TRACE 漏洞,我们需要证明它是固定的。

参考:

4个回答

我能想到的最简单的方法是使用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 SuiteZap,并遵循一些简单的步骤:

  1. 设置您的浏览器以通过所选代理;
  2. 发出一个正常的 HTTP 请求(例如GET /index.php HTTP/1.1)并拦截它;
  3. 将 HTTP 方法更改为 TRACE 并将请求发送到服务器;
  4. 检查 HTTP 响应。

如果响应包括整个请求,则 TRACE 已启用并正常工作。

就发送测试而言,其他人所说的都是准确的,但没有人给出它是否易受攻击的正确识别。不同的服务器会有不同的响应,更不用说任何对 TRACE/TRACK 请求的 mod 重写。有两种方法可以识别 TRACE 和 TRACK 漏洞,它们似乎可以在不给出误报或误报的情况下工作(我已经意识到)。

1) 目标返回任何状态码 < 400 或 >= 600

2) 目标返回您传入的标头。