答案:
让我们假设有一台受害者机器(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/