http - 使用 sslstrip+ 和 dns2proxy 绕过 HSTS

标签 http ssl https man-in-the-middle hsts

我正在尝试了解如何绕过 HSTS 保护。我读过 LeonardoNve 的工具(https://github.com/LeonardoNve/sslstrip2https://github.com/LeonardoNve/dns2proxy)。但我完全不明白。

  • 如果客户端是第一次请求服务器,它会随时工作,因为 sslstrip 会简单地去除 Strict-Transport-Security: header 字段。所以我们回到原来的 sslstrip 的旧情况。

  • 如果不是……?会发生什么 ?客户端知道它应该只使用 HTTPS 与服务器交互,所以它会自动尝试使用 HTTPS 连接到服务器,不是吗?那样的话,MitM 就没用了……><

查看代码,我有点明白 sslstrip2 将更改客户端所需资源的域名,因此客户端不必使用 HSTS,因为这些资源不在同一域中(是这样吗?) .客户端会发送一个DNS请求,dns2proxy工具会拦截并返回真实域名的IP地址。最后,客户端会以HTTPS的方式HTTP发送它应该做的资源。

示例:根据服务器响应,客户端必须下载 mail.google.com。攻击者将其更改为 gmail.google.com,因此它不是同一个(子)域。然后客户端将对该域进行 DNS 请求,dns2proxy 将使用 mail.google.com 的真实 IP 进行响应。然后,客户端将简单地通过 HTTP 请求此资源。

在那之前我没有得到的是......攻击者如何在客户端到服务器的连接应该是 HTTPS 时进行 html-strip......?

少了一 block ……:s

谢谢

最佳答案

好的,看完视频后,我对 dns2proxy 工具可能的操作范围有了更好的了解。 据我了解:

  • 大多数用户将通过单击链接或重定向进入 HTTPS 页面。如果用户直接获取 HTTPS 版本,则攻击失败,因为我们无法在没有服务器证书的情况下解密流量。
  • 在重定向或链接的情况下启用了 sslstrip++ + dns2proxy 并且我们处于连接的中间 .. mitm ! ==>
    • 用户访问 google.com
    • 攻击者拦截从服务器到客户端的流量,并将登录链接从“https://account.google.com”更改为“http://compte.google.com”。
    • 用户浏览器将向“compte.google.com”发出 DNS 请求。
    • 攻击者拦截请求,向真实名称“account.google.com”发起真实DNS请求,并将响应“假域名+真实IP”返回给用户。
    • 当浏览器收到 DNS 应答时,它将搜索是否应该通过 HTTPS 访问该域。通过检查预加载的 HSTS 域列表,或者通过查看缓存中或 session 中已访问的域,不知道。由于域不是真实的,浏览器将简单地建立一个 HTTP 连接到真实地址 ip。 ==> 末尾的 HTTP 流量 ;)

所以真正的限制仍然是需要间接 HTTPS 链接才能工作。有时浏览器会直接“重新输入”输入到 HTTPS 链接的 url。

干杯!

关于http - 使用 sslstrip+ 和 dns2proxy 绕过 HSTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29320182/

相关文章:

c++ - 从 apache2 模块发出 HTTP 请求 (c++)

java - 证书存在于 cacert 文件中,但抛出 ssl 异常

Delphi XE2 DataSnap 服务器 - HTTPS 'Could not load certificate'

java - 我正在尝试使用 Java 的 HttpURLConnection 来执行 "conditional get",但我从未获得 304 状态代码

javascript - 通过 http 从 mjpeg 流中提取其他数据

javascript - 在离开页面之前进行 GET 调用 - Javascript

java - 为什么 SSL 握手会给出 'Could not generate DH keypair' 异常?

python - Python请求抛出SSLError

spring - PGD​​atasource 不会连接到远程服务器

Php HTTP 重定向在 Azure 应用服务上不起作用