通过WireShark抓包,我们发现了以下的情况
在Burp Suite身份验证中,某些NTLM头缺失,其他一些选项也不同,如图所示。
我试图找到一个解决方法,发现了Fiddler,Fiddler与Microsoft身份验证协议集成比较完美。使用Wireshark进行抓包,我们可以看到Fiddler进行的身份验证。
默认情况下,Fiddler听8888端口并提供一些相当于Burp Suite中Interceptor和Repeater的功能,但是用于渗透测试,它远远不如Burp Suite。所以,我们把Fiddler与Burp Suite连在一起:
在Burp Suite中,我们必须将Fiddler设置为上游代理(User Options -> Connections -> Upstream Proxy Server),并删除NTLM身份验证(因为我们使用Fiddler)。此外,我们必须从option from Proxy -> Options -> Miscellaneous,因为NTLM使用此选项对每个TCP连接进行身份验证,服务器将在验证所需的第一个NTLM请求(三个)之后关闭连接
在Fiddler中,我们必须配置NTLM身份验证。在“规则”菜单中标记“自动验证”,然后从同一菜单中选择“自定义规则”。在弹出的配置文件中添加“OnPeekAtResponseHeaders”部分以下文本(具有正确的NTLM凭据):
if ((oSession.responseCode == 401) && oSession.host.EndsWith(".web.site.url.address")) {
oSession["X-AutoAuth"] = "domainusername:password";
oSession["ui-backcolor"] = "pink";
}
就这样!通过Burp Suite中的配置,我们只能看到已验证的请求,而在Fiddler中,我们也有用于NTLM身份验证的请求。下图是Fiddler中正确的NTLM身份验证流程(由三个请求组成)的示例
Fiddler也可以与Kerberos身份验证一起使用,Burp Suite实际上不支持。如果你测试应用程序正在使用这种类型的身份验证,您还可以尝试"NCC Group Plc"发布的Burp Suite插件Berserko。
我们向PortSwigger团队报告了NTLM头部的问题,但是我们不知道该问题何时被解决。在此期间,使用Fiddler是个不错的解决办法!