HTTPS 是否可以防止 DNS 重新绑定?

信息安全 tls dns dns 重新绑定
2021-09-04 01:51:20

我一直在玩 DNS 重新绑定。我进行了一些设置,并且可以正常处理常规 HTTP 请求。然后我试图让它通过 HTTPS 工作,并有一点“duh”的时刻:

baddomain.com uses an invalid security certificate.

The certificate is only valid for *.target.com

Error code: SSL_ERROR_BAD_CERT_DOMAIN

浏览器将为每个请求检查证书。使用 DNS 重新绑定,您正在向相同的“域”但不同的 IP 发出后续请求。“重新绑定”目标的证书与原始域不匹配,因此我们遇到了证书问题。

假设 HTTPS 服务不易受到 DNS 重新绑定攻击是否安全?

2个回答

TL;TR:HTTPS 将有助于防止 DNS 重新绑定。

浏览器建立的每个新 TLS 会话都会根据 URL 的域验证证书的主题。通过 DNS 重新绑定,受害者最初会访问攻击者控制的域,并且在攻击者控制的 DNS 更改此域的 IP 地址后,该域更改为指向同一(可能是内部)主机。

在此 DNS 更改之后,URL 中的域仍然是攻击者域,这意味着浏览器希望新 TLS 连接的证书与此域匹配。但是,新的目标主机只有它自己的域的证书,而不是攻击者域的证书。这意味着 TLS 握手将失败,要么是因为 ClientHello 中的 SNI 名称与服务器配置不匹配,服务器拒绝握手,要么是因为浏览器将拒绝来自服务器的证书,因为它与 URL 中的名称不匹配.

简而言之,是的,HTTPS 可以防止这种攻击,因为服务器 (Bob) 和客户端 (Alice) 使用在密钥交换期间商定的对称加密密钥进行通信。因此,Mallory 不知道对称密钥是什么,也不能假装是 Bob(中间人攻击)或解密任何流量。