0

我正在尝试使用 NTLMv2 对代理进行身份验证。但反过来,我得到的是使用 NTLMv1 的身份验证。代理支持这两种类型,并且客户端在域之外(但具有所需的凭据)。

客户端在 CentOS 6 上运行。代理是 Squid,也在 CentOS 6 上运行。Windows 2019 作为 AD。

如果我使用 HTTP 客户端 4.5 尝试我的 PoC,我在 Wireshark 中看到在协商期间(消息类型 1)FLAG_REQUEST_TARGET未设置。查看里面的 HTTP 客户端,NTLMEngineImpl我看到:

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 设置这个标志?

4

1 回答 1

0

我去了JCIFS。

虽然我也有 NTLEngineImpl 的包装器,所以,实现 NTLEngine 我只需要覆盖 TYPE1 消息(并从真正的 Imp 中获取代码,但添加一个新标志)。

无论如何,如前所述,我最终去了另一个图书馆。

于 2018-08-27T17:58:37.353 回答