技術文-This site may be hacked

img-this-side-may-be-hacked
今午接到顧客的來電,說他的網站在 Google 出現 “ This site may be hacked ” 的字眼。這一通知可謂可大可小,所以第一時間放下手頭上所有工作進行補救。

GOOGLE會給予這個警告是因為大神基於它的經驗,有條件和理由相信你的網站已經被 hacked, 所以當其他 user 進入你的網站時,會被惡意的感染病毒。會被 hacked 的可能性有很多種,有盜取資料的,有恐怖警告的,有報復的,或者是想利用你的網站賺錢的。因為實在有太多被 hack 的種類,所以首先要確定你的網站到底被“駭”到什麼程度。以下是我修復這個網站的個案,希望有同樣問題的朋友能夠得到一些幫助。

首先我立刻進入網站以目測程度看看有沒有被惡意修改的跡象,看起來是一切正常,最近更新的資料都還有在。所以可以先確定 Database 和 Source File 都還在。
第二步是檢查 Google 在 Index 你的網站時看到什麼內容,最簡單的方法是利用 “site:domainABC.com” 這個方法。OH..不得了,Google 在我的網站 Index 到大量如 “Canada Drugstore » Chip Cialis,Online Healthcare » Cialis Uk,APPROVED Canadian Pharmacy » Cialis Brand,Free Bonus Pills For Every Order : Usa Cialis, Global Health Services : Visa Cialis …”連結外部網站的聯結。這也是 Google 會給予 warning 的原因。

我想可能是被“Content injection” 了。就是說網站被放了大量的 spam page, link ,text 或者其他資料。

找到癥結後,立刻進到 “Google Webmaster Tools” 看看 “ Security Issue” 以便確認自己推測,

content-injection-webmaster-tools

確定了問題後,接下來首先要把網站暫時 Suspend, 以防有更多的人因為自己的網站而買了不良的偉哥藥品。

之後 FTP 到 server 檢查有沒有任何不明的文件被製造。在這個過程中,發現一個被隱藏的 “.cnt” folder, 必須利用 SSH 或者 cPanel 的 file manager 才能顯示出來,試試刪除後,問題還是存在,而且這個 folder 被刪除後還不斷的“被”製造出來。果然不是那麼簡單就解決。

接下來檢查 “error log”,發現以下的錯誤內容

29-Jan-2015 17:34:40 Asia/Kuala_Lumpur] PHP Warning: file_put_contents(.cnt/THE-KOOKS-INSIDE-IN/INSIDE-OUT-TORRENT) [function.file-put-contents]: failed to open stream: No such file or directory in /home/userdomain/public_html/stats.php on line 1

看起來把那 folder 刪除是有作用的,起碼找到 “stats.php” 這個文件被惡意的加入並且和這個事件有關聯。下載文件打開後,發現程式碼都被加密了。

stats-php-file

把這個文件刪除後,再目測有沒有同樣類型的 php 文件,不出兩分鐘,一個看起來很普通的文件 “main.php” 因為和 “stat.php” 有同樣的更改日期而引起了我的注意。下載打開後,果然是“同黨”。

把這兩個“元兇”解決後,接下來是要修復 “.htaccess”這個檔案,網站被利用 domain 惡意轉到其他網站,除了用比較低級的 “iframe” 方法外,比較中級的就是更改 .htaccess 這個檔案了。 (上次馬航被駭應該是被更改 Domain Name Server)

打开 .htaccess 發現了以下不尋常指令。


# Joomla search queries statistic module

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (google|yahoo|msn|aol|ANTIPIDERSIA) [OR]
RewriteCond %{HTTP_REFERER} (google|yahoo|msn|aol)
RewriteCond %{REQUEST_URI} /$ [OR]
RewriteCond %{REQUEST_FILENAME} (shtml|html|htm|php|xml|phtml|asp|aspx)$ [NC]
RewriteCond %{REQUEST_FILENAME} !main.php
RewriteCond /home/userdomain/public_html/main.php -f
RewriteRule ^([^/]*)/$ /main.php?p=$1 [L]

把它刪除掉後再利用 Google 的 “site:domain.com” 檢查一下,雖然連結還在但是已經不會被帶到賣偉哥的頁面了。之後必須回到 Google Webmaster Tools 告訴 Google 你已經把問題解決並請它們 Review 一次,快者三天就可以把警告提示除掉了。

我們把家裡收拾好後,必須再檢查到底哪一道門被打開而讓不法之徒有機可乘。花了幾個小時檢視大概 800 MB 的 Log file 後,可以確定是之前 Joomla 的一個 Extension 有漏洞,立刻把剩餘的檔案刪除掉。基本上問題是算解決了。(接下來幾天還必須不斷的 Monitor)

希望我的經驗能夠讓你省下一些時間,謝謝!