跳转至

跨站信息泄露 (XS-Leak)

跨站信息泄露 (XS-Leaks) 是一类侧信道漏洞,允许攻击者在不读取响应体的情况下,从目标源推断出敏感信息。这些漏洞利用的是浏览器的行为、时间差异以及可观测的侧效应,而非传统的 XSS 数据窃取。

摘要 (Summary)

工具 (Tools)

方法论 (Methodology)

攻击原语 (Attack Primitives)

与传统的 CORS 或 XSS 攻击不同,XS-Leak 依赖于可观测的浏览器行为:

原语 (Primitive) 泄露的信息 (Leaks)
时间 (Timing) 资源大小 / 复杂度
帧计数 (Frame count) 内容差异
错误 (Errors) 访问控制决策
缓存 (Cache) 先前的访问记录
导航 (Navigation) 认证状态
渲染 (Rendering) 文本长度

XS-Search 攻击滥用基于查询的搜索系统来泄露用户信息。通过测量搜索查询的侧效应(例如响应时间、帧计数或错误事件),攻击者可以推断搜索是否返回了结果。这种布尔 Oracle 可用于逐字符地暴力破解敏感数据。

示例

  • 打开 50 个标签页,并利用搜索结果页面中由于 iframe 触发 CSP 违规时产生的时间差异,逐字符暴力破解 Flag。

跨站 Oracle (Cross-site Oracles)

时间攻击 (Timing Attacks)

在时间攻击中,攻击者通过观察系统处理特定请求所需的时间来揭示敏感信息。他们向目标应用程序部署精心设计的脚本,以执行 API 调用、发送 AJAX 请求或启动跨源资源共享 (CORS) 交互。通过测量和比较这些操作的响应时间,攻击者可以推断出系统内部行为、数据验证过程或底层安全控制的深度见解。

帧计数 (Frame Counting)

如果一个页面根据用户的状态(如搜索结果)加载不同数量的 iframe,攻击者可以通过计数来推断数据。

// 获取窗口引用
var win = window.open('https://example.org');

// 等待页面加载
setTimeout(() => {
  // 读取加载的 iframe 数量
  console.log("检测到 %d 个 iframe", win.length);
}, 2000);

缓存探测 (Cache Probing)

在缓存探测攻击中,恶意网站尝试确定目标站点的特定资源是否已存储在受害者的浏览器缓存中。攻击者诱导浏览器请求一个资源(例如图片、脚本或端点),而该资源仅在用户已认证或先前访问过特定页面时才会被缓存。通过测量资源加载的速度,或者通过观察缓存与非缓存响应之间的行为差异,攻击者可以推断出敏感信息。

已知 Oracle 列表 (Known Oracles)

实验环境 (Labs)

参考资料 (References)