« 服務器中招,所有PHP程序被加上eval(base64_decodeWIN2003服務器安全配置筆記 »

eval(base64_decode 木馬 清除

eval(base64_decode 木馬 清除

在找資料解決這個問題。待續

 

2、nginx和php的安全
(1)對discuz/attachments,uchome/attachment,ucenter/data/tmp等用戶上傳的目錄,限制php程序。centos+nginx本身應該比較安全的,一般的黑客都是利用webshell來入侵。
在nginx的配置文件里面添加
location ~ .*\.(php|php5)?$ {
.......
#------------------------------------------
rewrite ^/(uc\_client|templates|include|plugins|admin|attachments|images|
forumdata)/.*\.(php|php5)?$ /50x.php last;
#-------------------------------------------
}
(2)修改php.ini
查找:disable_functions
找到后在=后面添加
exec,system,passthru,error_log,ini_alter,dl,openlog,syslog,readlink,symlink,link,leak,fsockopen,proc_open,
popepassthru,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,popen
這里都是禁止在php里面執行的函數
 

 

--------------------------------------------------------------------------------- 

一句話查找PHP木馬

# find ./ -name “*.php” |xargs egrep “phpspy|c99sh|milw0rm|eval\(gunerpress|eval\(base64_decode|spider_bc”> /tmp/php.txt

# grep -r –include=*.php  ’[^a-z]eval($_POST’ . > /tmp/eval.txt

# grep -r –include=*.php  ’file_put_contents(.*$_POST\[.*\]);’ . > /tmp/file_put_contents.txt

# find ./ -name “*.php” -type f -print0 | xargs -0 egrep “(phpspy|c99sh|milw0rm|eval\(gzuncompress\(base64_decode|eval\(base64_decode|spider_bc|gzinflate)” | awk -F: ‘{print $1}’ | sort | uniq

查找最近一天被修改的PHP文件

#   find -mtime -1 -type f -name \*.php

修改網站的權限

# find -type f -name \*.php -exec chmod 444 {} \;

# find ./ -type d -exec chmod 555{} \;

--------------------------------------------------------------------------------- 

大部分php中了木馬,會插入一段php代碼。
類似如下:
eval(base64_decode('xxxxxxxxxxxxxxxxxxxxx'));

這里我寫了一個簡單的shell腳本用于清除此類木馬。

#!/bin/bash
until [ $# -eq 0 ]
do
sed 's/eval(base.*;//g' $1>/tmp/t
if [ $? = 0 ]; then
        cp /tmp/t $1
        echo $1
fi
shift
done

用法,把這個腳本存為clean.sh文件。
find |grep "\.php$"|xargs ./clean.sh
即可清除

--------------------------------------------------------------------------------- 

 

php木馬的最顯明特點是使用了eval 與base64_decode 這函數,這樣就很好去檢測了,當然有些cms的畸形文件也可能呈現這貨色,差別是cms的文件打開是正常一行一行的,而木馬通常是:
eval(base64_decode(..............));
?
這樣的代碼,而且基礎都是如斯,下面是檢測程序:
function parallfiles($d)
{
$dh = dir($d);
while($filename = $dh-read() )
{
if($filename=='.' || $filename=='..') continue;
$tfile = $d.'/'.$filename;
if(is_dir($tfile))
{
//echo 檢討到:$tfile
;
parallfiles($tfile);
}
else
{
if(!ereg(\.php, $tfile)) continue;
$bd = file_get_contents($tfile);
if(eregi(eval\(, $bd))
{
echo $tfile
\r\n;
}
}
}
}
parallfiles(dirname(__file__));
?
使用這個檢測程序會把所有帶eval的文件作為可疑文件,翻開來看一下,如果代碼像前者那樣的,確定是木馬了。www.2cto.com
對有應用服務器的用戶,記住設置網站權限的一個準則:寄存html、附件的文件不給予履行腳本權限,執行腳本的文件夾不給予寫入的權限。
2、mysql提權漏洞的處置
mysql提權漏洞在windows服務器簡直是致命的,如果你把web木馬都清算后,發現heike還能掛馬,很可能是這個問題所致的,這要作下面多少方面處理:
(1) 網站的用戶千萬不要用root用戶,假如樹立一個沒權限的用戶,而后指定它有操作某數據庫的權限;
(2) 檢查網站或windows文件,看是否有udf.dll 或xudf.dll (x通常是數字1、2、3等),如果有,闡明你的服務器已經中招了,這種木馬是致命的,肅清方式是先用net stop mysql結束mysql,然后刪除這些dll文件,然后用net start mysql 從新啟動mysql。