ZAP 中的 NTLM 身份验证

Posted

技术标签:

【中文标题】ZAP 中的 NTLM 身份验证【英文标题】:NTLM authentication in ZAP 【发布时间】:2019-02-06 10:44:33 【问题描述】:

我正在尝试使用 ZAP 对 REST Api 进行一些渗透测试。 Api 使用 Windows 身份验证 [域\用户名] 并在特定端口上本地托管。 首先,我使用邮递员进行了测试,以尝试连接并发出示例请求。我的配置如下所示:

我决定在 OWASP zap 中复制此设置。我设置了我的用户:

然后我在会话属性中设置身份验证选项:

和会话管理选项:

尝试在 ZAP 中执行主动扫描时,我收到 Unauthorized 和 BadRequest 响应。我尝试了不同的用户名和端口,但似乎我的配置中缺少一些小块。我在他们的 github 页面上看到了一个链接:

HTTP/1.1 401 Unauthorized

但这并没有解决我的问题。

我应该如何设置 ZAP 以使用 NTLM 身份验证?我很惊讶我能够在 Postman 中在 5 分钟内完成设置,但在 ZAP 中我已经花了两天时间,但仍然没有。

哦,更不用说在 C# 代码中也需要 10 分钟的工作,使用通过 httpclienthandler 类注入 httpclient 的默认凭据:

ICredentials credentials = CredentialCache.DefaultCredentials;
var clientHandler = new HttpClientHandler()

    Credentials = credentials
;

var client = new HttpClient(clientHandler);
var resp = client.GetAsync(new Uri(apiUrl)).Result;

任何帮助表示赞赏。 谢谢

【问题讨论】:

我翻阅了您提供的 GitHub 问题,并看到了在上下文中包含目标 url 的建议。你是在 ZAP 中这样做的吗?我在您的帖子中看不到这一点。 是的,我也试过了 您解决了吗?我正面临着确切的问题。到了和你一样的地方。 你正在对 localhost 的 80 端口进行 NTLM?并非不可能,只是想确定这就是你的真正意思。您的上下文定义是否还包括服务器上或特定路径中的所有内容(例如:正则表达式结尾 .*)? @kingthorin 那么应该使用什么端口呢?我的意思是 - 它应该是运行 IIS 的端口,还是被测试的应用程序监听的端口?或者也许有关于 ZAP 的这个特性的任何好的文档,例子? 【参考方案1】:

遇到了同样的问题,感谢上帝,经过 4 天的努力才找到一个小设置。

只需确保启用:强制用户模式 不知道为什么我需要选择它,即使我在身份验证中只选择了一个也启用的用户。但这也是有道理的,但应该在身份验证弹出窗口中将其作为信息提及,以帮助像我这样的初学者。

【讨论】:

以上是关于ZAP 中的 NTLM 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

核心中的 NTLM 身份验证 HttpClient

如何支持 NTLM 身份验证并回退到 ASP.NET MVC 中的表单?

如何使用参数(通过 HTTP)向 NTLM 进行身份验证?

使用 HTTP Web 请求发送 HTTP 标头以进行 NTLM 身份验证

HTTP 请求未经客户端身份验证方案“Ntlm”授权

HTTP 请求未使用客户端身份验证方案“Ntlm”未经授权从服务器接收到的身份验证标头为“NTLM”