Favicon 重定向可能存在的安全漏洞

信息安全 xss javascript 铬合金 网址重定向
2021-09-04 23:03:29

我有域 example.com

当我输入 URL https://api.example.com时,Chrome 会加载页面并尝试加载https://myapp.example.com/favicon.ico,并且该请求会收到 301 重定向到 **http: //**main.example.com,并接收它的 HTML 内容。

我知道如何修复它,但我对会发生什么很感兴趣,因为 main.example.com 不在 https 上,任何人都可以攻击(DNS 替换)并用他的恶意内容响应 301 重定向。
这是一个网站图标重定向,因此 Chrome 至少似乎没有执行该代码。
我更改了 main.example.com 以响应

<script type="text/javascript">alert("hola")   </script>

但警报未执行。

那么这是一个安全漏洞吗?

3个回答

根据您的问题,Chrome 正在 HTTPS 页面中加载纯 HTTP 图标,而没有任何浏览器警告。有趣的。

重定向到纯 HTTP 网站本身并不是漏洞。但是,如果重定向是意外的,并且您希望您的用户保持在安全、受信任的通道上访问您的站点,则这是一个安全漏洞。

脚本内容不会在 favicon 中执行,但如果 cookie 域设置不正确且未设置安全标志,则请求可能会泄漏 cookie。如果用户使用纯 HTTP访问任何站点,攻击者也可以对您的站点执行此操作。

如果有任何浏览器漏洞可以从网站图标触发,您可能会将您的用户置于危险之中,尽管初始重定向和浏览器漏洞实际上是浏览器中的缺陷,而不是您的网站。

确实存在一个漏洞,因为正如您所观察到的,攻击者可以拦截不安全线路上的流量并对其进行更改。

您的脚本未执行的原因是它出现在 favicon 中,而 Chrome(显然)不执行 favicon 中的脚本。

要利用这一点,您必须让 Chrome 执行收藏夹中的代码。
一种方法是在呈现 favicon 的代码中使用缓冲区溢出,以使 Chrome 执行 favicon 中的有效负载。
另一种方法是让 Chrome 接受 SVG 文件作为网站图标,然后将脚本放在foreignObjectSVG 内的标签中。(免责声明:我没有试过这个)。

使用 Javascript 或 META 标记重定向

...您不能通过 Javascript 或 META 标签发送 301 状态代码。由于页面的 HTTP 状态码将保持 200 OK ...

... 另一个缺点是某些浏览器禁用 Javascript 或 META 刷新。因此,必须在页面正文中包含指向目标页面的链接...

网址重定向

... 出于安全原因,可能首选 HTTP 标头或刷新元标记,因为某些浏览器和许多网络爬虫不会执行 JavaScript。

这些链接表明许多浏览器在重定向中不执行 javascript 和 META 标记 (301)