2009-01-07 89 views
4

我正在查找有关DEBUG HTTP动词的详细信息。
我很清楚,这是用于远程调试 - 虽然我甚至不确定它是否适用于IIS或ASP.NET ...ASP.NET/IIS远程调试 - DEBUG动词

如果我想直接访问此接口 - 即不通过Visual Studio ,但手动发送这些命令 - 我需要知道什么?它的命令是什么?
我也有兴趣在误操作的情况下,如果您有任何信息......

+0

关于“误用案例”:http://stackoverflow.com/questions/2244293/what-is-the-non-standard-http-verb-debug-used-for-in-asp-net-iis – 2010-02-16 12:07:38

回答

5

为了完整起见,请在此整理来自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 应用,客户端发送一个HTTP请求 包含DEBUG动词。 该HTTP请求用于验证 ,该应用程序的进程是 正在运行并选择要附加的正确的 进程。

DEBUG谓词用于启动/停止远程调试会话。更具体地说,DEBUG请求可以包含一个值为start-debugstop-debug的命令头,但实际的调试是通过RPC协议完成的。

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

但是,使用DEBUG请求戳一个ASP.NET网站可用于显示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通信,在这种情况下,无论如何您都会遇到更严重的问题。

0

如果你想要做远程调试,我会建议使用的Debug.WriteLine和Sysinternals公司DebugView工具。这允许您在位置机器或远程机器上“侦听”调试语句,前提是您拥有必要的访问权限。

我不能直接回答有关DEBUG http的部分,因为我不熟悉它。

+2

谢谢,但我实际上正在寻找内部的远程调试......我知道*如何做到这一点,我想了解*封面下面会发生什么。我喜欢在那里徘徊.... – AviD 2009-01-07 17:26:08