5

我正在寻找有关 DEBUG HTTP 动词的详细信息。
我很清楚这用于远程调试 - 尽管我什至不确定它是用于 IIS 还是 ASP.NET ......

如果我想直接访问这个界面——即不是通过 Visual Studio,而是手动发送这些命令——我需要知道什么?它的命令是什么?
我也对滥用案例感兴趣,如果您有任何相关信息...

4

2 回答 2

6

只是为了完整起见,在这里合并what-is-the-non-standard-http-verb-debug-used-for-in-asp-net-iis 的答案:(感谢@Mark,@Jørn)。

http://support.microsoft.com/kb/937523

当客户端尝试在 ASP.NET 2.0 应用程序中自动附加调试器时,客户端会发送一个包含 DEBUG 谓词的 HTTP 请求。此 HTTP 请求用于验证应用程序的进程是否正在运行并选择要附加的正确进程。

DEBUG动词用于启动/停止远程调试会话。更具体地说,一个DEBUG请求可以包含一个带有 valuestart-debug和的 Command 标头stop-debug,但实际的调试是通过 RPC 协议完成的。

它使用 Windows 身份验证和 DCOM 来实际进行调试(显然,如果您允许 RPC 流量,那么您会遇到更大的问题)或任何漏洞。不过,UrlScan 默认会阻止它。

但是,使用请求戳 ASP.NET 网站DEBUG可用于显示 web.config 是否具有<compilation debug="true">. 通过发送如下请求,可以使用 telnet、WFetch 或类似工具执行测试:

DEBUG /foo.aspx HTTP/1.0
Accept: */ *
Host: www.example.com
Command: stop-debug

根据是否启用调试,您将获得200 OK403 Forbidden

人们普遍认为,您永远不应该<compilation debug="true"/>在生产环境中使用,因为它会对网站的性能产生严重影响。我不确定启用调试是否会打开任何新的攻击向量,除非还启用了 RPC 流量,在这种情况下,无论如何您都会遇到更严重的问题。

于 2010-02-17T07:25:14.733 回答
0

如果您想进行远程调试,我建议使用 debug.writeline 和 sysinternals DebugView中的工具。这允许您在您的位置机器或远程机器上“监听”调试语句,前提是您具有必要的访问权限。

由于我不熟悉它,我无法直接回答有关 DEBUG http 的部分。

于 2009-01-07T01:31:54.437 回答