概述
跨站泄漏(XS-Leaks,XSLeaks)是从浏览器侧通道技术派生的一类漏洞。这些类似于跨站点请求伪造(CSRF)技术,但是它们可以用来推断有关用户的信息,而不是允许其他网站代表用户执行操作。这是通过利用浏览器内置的各种功能来完成的。
原理
网站之间的交互是网络行为的核心。浏览器为各种Web应用程序之间的交互提供了各种各样的界面。这些界面具有基于顶部的不同安全措施,以试图限制网站的行为(例如,“同源策略”)。XS-Leaks利用在这些交互过程中可能泄漏的少量信息,来推断有关用户的敏感信息,例如他们在其他网站上的数据,他们使用的操作系统或所连接的内部网络。
攻击例子
1.删除目标浏览器中特定的缓存
可以通过向目标网站发送一个post请求来清空目标内容或者设计一个过长的url,这样就能使目标服务器报错,并且清空之前的缓存。
Some HTTP methods MUST cause a cache to invalidate an entity. This is
either the entity referred to by the Request-URI, or by the Location
or Content-Location headers (if present). These methods are:
- PUT
- DELETE
- POST
In order to prevent denial of service attacks, an invalidation based
on the URI in a Location or Content-Location header MUST only be
performed if the host part is the same as in the Request-URI.
A cache that passes through requests for methods it does not
understand SHOULD invalidate any entities referred to by the
Request-URI.
2.打开目标的浏览器查询相关内容
使用link rel = prerender(预渲染:下载资源(HTML)并解析/执行它,包括被解析资源的子资源,这意味着会下载该HTML中的图片、样式、脚本等等)或者直接打开一个新的窗口去访问你要查询的内容,检查资源是否被访问。或者,也可以使用一个过长的url来判断