我正在研究SSL Strip。我知道攻击者必须是MITM,这样他才能拦截受害者的所有请求并将其发送到服务器。但有一点我不明白,当攻击者收到来自服务器(https(的响应时,攻击者会将服务器的响应从https修改为http,并将其发送给受害者。
"将服务器的响应从https修改为http"中实际发生了什么?攻击者是否创建了一个与原始网站相似但使用http而不是https的网站?
SSLStrip是关于拦截初始HTTP->HTTPS重定向的。
当用户在浏览器中键入URL(如"stackoverflow.com"(时,浏览器默认情况下会使用HTTP加载该URL。然后,该站点会看到您正在通过明文HTTP加载它,因此它会重定向到HTTPS。
该初始重定向可被活动的MITM攻击者拦截。例如,他们可以将最初的HTTP重定向更改为HTTPS,以重定向到自己拥有的类似URL。
可以通过严格的传输安全来减轻攻击。STS教导浏览器,"从现在起,始终以HTTPS的形式访问此域(可能还有子域("。然后浏览器通过HTTPS自动加载,并完全跳过HTTP请求。
STS是一种信任首次使用功能。第一次访问该网站时,最初的HTTP到HTTPS重定向仍然会发生,因为浏览器不知道该网站应该始终通过HTTPS访问。最后一个问题通过HSTS预加载得到了缓解,其中域基本上是硬编码到浏览器的源代码中的,即"首先通过HTTPS加载"。