我正在尝试使用NTLMv2向代理进行身份验证。但是反过来,我得到的是使用NTLMv1进行身份验证。代理支持两种类型,并且客户端在域之外(但具有必需的凭据)。
客户端正在CentOS 6上运行。 代理是Squid,它也在CentOS 6上运行。 Windows 2019作为AD。
如果我使用HTTP客户端4.5尝试PoC,我会在Wireshark中看到在协商期间(消息类型1)未设置FLAG_REQUEST_TARGET
。看着NTLMEngineImpl
内的HTTP客户端,我看到:
static String getType1Message(final String host, final String domain) throws NTLMEngineException {
// For compatibility reason do not include domain and host in type 1 message
//return new Type1Message(domain, host).getResponse();
return TYPE_1_MESSAGE.getResponse();
}
在String getResponse()
内部,我看不到任何地方设置了该标志。
从装有IE的Windows计算机中,如果我执行请求,则在Wireshark中看到具有相同代理集的FLAG_REQUEST_TARGET
集,并且在协商之后最终使用NTLMv2。
那么,有没有办法让我使用HTTPClient 4.5设置此标志?
答案 0 :(得分:0)
我参加了JCIFS。
尽管我也有NTLEngineImpl的包装器,所以实现NTLEngine我只需要覆盖TYPE1消息(并从真实的Imp中获取代码,但在其中添加了新的标志)。
无论如何,如上所述,我最终去了另一个图书馆。