sslstrip 是否仅适用于同时使用 HTTP 和 HTTPS 的网站?

信息安全 tls ssls带
2021-08-18 01:00:51

sslstrip 攻击是否仅适用于同时使用 HTTP 和 HTTPS 的网站?Quora上,一位评论者说:

需要注意的一点是,SSL Strip 仅适用于同时使用 HTTP 和 HTTPS 的网站。例如,Ebay,其主页通过 HTTP 传输,但随后传输到 HTTPS 以进行登录、购买等。为了防御这些攻击,建议在整个站点中使用 SSL,即只使用 HTTPS 而不是 HTTP。另一种方法是使用 HSTS(严格传输安全),这将命令浏览器仅通过 HTTPS 连接,而不是通过 HTTP。

但我知道 Google 并没有同时使用 HTTP 和 HTTPS;他们只是使用 HTTPS 并且还使用 HSTS 标头来对抗 sslstrip 攻击。这是否意味着上面的评论是错误的?我的意思是 SSLStrip 攻击仍然可能针对仅使用 HTTPS 的网站吗?

3个回答

SSL Strip 仅适用于同时使用 HTTP 和 HTTPS 的网站。

这是不准确的,因为它意味着关闭 HTTP 支持以防止攻击。

关键是当用户首先通过纯 HTTP 请求站点时,sslstrip 会介入。这是关于浏览器如何尝试连接到服务器,而不是服务器支持什么。只有当浏览器根本不尝试纯 HTTP 连接时,您才是安全的(因为它之前看到的 HSTS 指令或因为该网站在浏览器的HSTS 预加载列表中)。

我的意思是 SSLStrip 攻击仍然可能针对仅使用 HTTPS 的网站吗?

是的。假设https://yourbank.example/不通过普通 HTTP 提供任何服务。http://yourbank.example/现在,无论如何,我向您发送一个链接。当您的浏览器尝试纯请求时,我使用 sslstrip 拦截它并使用网络钓鱼站点进行响应。如您所见,原始站点是否会通过纯 HTTP 提供任何内容是无关紧要的,因为我无论如何都不转发请求。

Sslstrip 要求客户端和 sslstrip 实例之间的连接通过纯 HTTP 完成。从 sslstrip 到服务器的连接可以是 HTTP 和 HTTPS。

这意味着如果客户端首先使用纯 HTTP 请求站点,那么 sslstrip 就可以工作。相反,如果客户端已经使用 HTTPS 启动,因为它要么知道该站点只能通过 HTTPS 访问,要么如果浏览器由于 HSTS 策略(预加载或来自早期访问)而强制执行 HTTPS,那么 sslstrip 将不起作用。

答案:

让我们假设有一台受害者机器(A)、一台攻击者机器(B)和一台服务器(C)。SSL 条在攻击者机器上运行,这是一个代理服务器。因此,受害者和服务器之间没有直接连接。

受害者 A 想使用网上银行服务从他的账户转账,他在浏览器的地址栏中输入以下 URL:

www.foobank.com/online_banking

在后台,连接到攻击者机器的受害者浏览器等待来自服务器的响应。攻击者 B 转发受害者 A 的请求并等待银行服务器的响应。B 和 C 之间的连接是安全的,这意味着它们之间传输的所有流量(B 和 C)都通过 SSL 隧道。

银行服务器使用具有以下 URL 的登录页面进行响应:

https://www.foobank.com/online_banking

在这个阶段,攻击者可以访问登录页面。接下来,攻击者(B)将来自服务器的响应从 https 修改为 http 并将其发送给受害者(A),这导致浏览器现在被寻址到http://www.foobank.com/online_banking

此时,受害者可以通过与攻击者的不安全连接访问网上银行登录页面。从此时起,所有受害者的请求都以纯文本格式发出,攻击者可以嗅探数据并收集凭据。

服务器认为它已经成功建立了连接,在这种情况下是在攻击者和服务器之间(即B&C之间),而受害者(A)也认为它是一个合法的服务器(C)。

所以

SSLStrip 不依赖于服务器的行为,它依赖于客户端。如果您可以让客户端通过 HTTP 而不是 HTTPS 发出请求,那么即使服务器仅支持 HTTPS,您也可以执行攻击。HSTS 阻止浏览器首先执行纯 HTTP 请求(在后续请求中)。

结论:

Google 仅使用 HTTPS 并使用 HSTS 标头来抵御 SSLStrip 攻击。因为即使 Web 服务器仅使用 HTTPS,也会发生 SSLStrip 攻击。

资源:https ://avicoder.me/2016/02/22/SSLstrip-for-newbies/