個案研究:修復遭到入侵的網站

2015年5月22日星期五

原文: Case Studies: Fixing Hacked Sites
作者:Julian Prentice and Yuan Niu, Search Quality Team

每天都有數以千計的網站遭到入侵 ,而遭到入侵的網站往往會提供惡意軟體、收集個人資訊或將使用者導向他們無意造訪的網站,可能因此對使用者造成損害。雖然網站管理員會努力儘速修復遭到入侵的網站,但是修復這類網站的程序往往相當複雜。

我們正致力於為網站管理員簡化網站遭到入侵的修復程序。為此,我們提供了等多項資源,例如 安全性問題 網站遭駭客入侵的相關說明 討論網站入侵問題的論壇專區 。近來我們也與兩位網站曾遭到入侵的網站管理員會談,進一步瞭解他們修復網站的方法。我們會在本文中分享這兩位網站管理員的經驗,希望能讓其他為駭客入侵所苦的網站管理員做為參考。 此外,我們也會根據這類實務案例以及各方的反應,改善關於網站遭駭客入侵的說明文件,讓日後所有的網站管理員都能透過更簡便的流程修復遭到入侵的網站。

個案研究 #1:遭到駭客植入多個指令碼的餐廳網站
某間餐廳使用 Wordpress 架設網站,但該餐廳的網站管理員工具帳戶收到 Google 發出的訊息,警告管理員網站已經遭到駭客入侵。 為了保護 Google 使用者,Google 已在搜尋結果中將這個網站標示為遭到入侵的網站。餐廳網站的管理員小珊在查看程式碼之後,發現網站上出現許多陌生連結,且其中包含「viagra」(威而鋼) 和「cialis」(犀利士) 等醫藥詞彙。同時她也注意到,許多網頁的中繼描述標記 (在 HTML 中) 都加入了類似「在佛羅里達州購買怯疹易」的內容,還有不少網頁的 隱藏式 div 標記 (也在 HTML 中) 會連結到其他網站,但這些連結都不是小珊自己加入網站中的。

小珊將所有她發現遭到駭客入侵的內容全數移除,然後申請重審。Google 拒絕了這項重審申請,但在給她的訊息中建議她檢查所有 PHP 檔案 (或任何伺服器檔案) 中是否含有陌生的指令碼, 同時也建議她檢查 .htaccess 檔案是否曾有任何異動 。這是因為駭客可能會在上述檔案中加入用來竄改網站內容的指令碼,而這類指令碼只會對搜尋引擎顯示遭到駭客入侵的內容,一般使用者看不到這些內容。小珊仔細檢查了所有的 .php 檔案,並與她自己保留的備份複本對照,發現 footer.php、index.php 和 functions.php 檔案中都出現了新的內容。小珊用遭到入侵前的版本取代這些檔案之後,網站上就再也找不到任何遭到駭客入侵的內容。 當她再次提出重審申請後, Google 就通知她網站上已經沒有遭到入侵的內容了!

雖然小珊這次成功清除了網站上遭到駭客入侵的內容,但她也瞭解到自己必須持續 加強網站的安全防護措施 ,避免日後再次遭遇駭客攻擊。為了確保網站的安全性,小珊採取了下列步驟:
  • 將 CMS (內容管理系統,例如 WordPress、Joomla、Drupal 等) 保持在最新版本,同時也確保外掛程式是最新版本。
  • 為用來存取 CMS 管理功能的帳戶設定不易破解的專用密碼。
  • (如果 CMS 支援) 為登入流程啟用 兩步驟驗證 功能 (或稱為「雙重因素驗證」或「2 步驟驗證」)。建議您也為密碼救援使用的帳戶設定兩步驟驗證,大部分電子郵件供應商 (例如 Google Microsoft Yahoo ) 都支援這項功能!
  • 確認所安裝的外掛程式和主題的來源可靠,因為盜版的外掛程式或主題往往含有惡意程式碼,將為駭客大開方便之門!
個案研究 #2:包含許多遭到入侵的網頁卻找不到所在位置的公司網站
瑪莉亞經營一家小公司,並親自管理公司的網站。某天她在網站管理員工具中收到訊息,得知她的網站遭到駭客入侵。訊息中提供了一個由駭客植入的網頁示例: https://example.com/where-to-buy-cialis-over-the-counter/ 。瑪莉亞詢問主機供應商,但對方檢查首頁的程式碼後並沒有找到任何與藥品相關的關鍵字,造訪 https://example.com/where-to-buy-cialis-over-the-counter/ 時,系統則會傳回錯誤頁面。瑪莉亞也購買了惡意軟體掃描服務,但仍無法從她的網站中找出任何惡意內容。

於是瑪莉亞開啟網站管理員工具,使用 Google 模擬器工具存取 Google 提供的示例網址 ( https://example.com/where-to-buy-cialis-over-the-counter/ ),可是系統並未傳回任何內容。在困惑之餘,瑪莉亞向 Google 提出了重審申請,但遭到拒絕。Google 在發送給她的拒絕重審通知中建議她採取以下兩個動作:
  1. 驗證非 www 版本的網站;這是因為駭客常會試圖將內容隱藏在網站管理員容易忽略的資料夾中。
雖然 https://example.com https://www.example.com 看起來像是同一個網站,但實際上 Google 會將其視為不同的網站。 https://example.com 會被視為「根網域」, https://www.example.com 則稱為「子網域」。瑪莉亞雖已驗證 https://www.example.com ,但卻沒有驗證 https://example.com ;這是相當重要的關鍵,因為駭客加入的是非 www 網頁 (例如 https://example.com/where-to-buy-cialis-over-the-counter/ )。只要瑪莉亞驗證 https://example.com 之後,就可以透過網站管理員工具中的 Google 模擬器工具,查看 Google 提供的網址中遭到入侵的內容。
  1. 檢查 .htaccess 檔案中是否出現新規則。
瑪莉亞與主機供應商聯絡,對方為她說明了如何存取 .htaccess 檔案 。她立刻注意到 .htaccess 檔案中出現了一些她從未加入過的奇怪內容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (google|yahoo|msn|aol|bing) [OR]
RewriteCond %{HTTP_REFERER} (google|yahoo|msn|aol|bing)
RewriteRule ^([^/]*)/$ /main.php?p=$1 [L]
</IfModule>

以上 mod_rewrite 規則就是駭客植入的,會將透過特定搜尋引擎進入網站的任何訪客和搜尋引擎檢索器重新導向至 main.php,所有遭到入侵的內容都是由這個檔案產生的。 此外,這些規則也有可能將使用行動裝置造訪網站的使用者重新導向。 當天瑪莉亞就看到新的惡意軟體掃描工具在這個 main.php 檔案中找到可疑內容。除此之外,她也在網站開發軟體的 FTP 使用者區域中發現了一名來路不明的使用者。

瑪莉亞移除了 main.php 檔案和 .htaccess 檔案 ,也將 FTP 使用者區域中的不明使用者移除,終於解決了網站遭到入侵的問題!

避免日後遭到入侵的防範步驟
  • 請避免使用 FTP 將檔案傳送到您的伺服器, 因為 FTP 無法加密流量,也無法為密碼加密。建議您改用 SFTP,即可為包括密碼在內的所有資料進行加密,這項保護措施可以防止監視網路流量的有心人士竊取資料。
  • 檢查機密檔案 (例如 .htaccess ) 的存取權限;如需相關說明,請向您的主機供應商尋求協助。 .htaccess 檔案可用於改善及保護網站,但如果不慎讓駭客取得存取權限,也會被用於惡意入侵行為。
  • 請保持警惕,對於管理介面和任何其他可供使用者修改網站內容的地方,請留意其中是否出現陌生的新使用者。
我們誠摯希望您的網站不會遭到駭客入侵,但如果不幸遇到這類問題,我們在 網站遭駭客入侵的相關說明頁面 中為網站遭駭的管理員提供了許多資源。如果您需要進一步的說明,或是想分享自己的獨門防駭訣竅,歡迎前往我們的 網站管理員說明論壇 張貼文章。 在論壇張貼文章或申請重審網站時,請在文中加入「#NoHacked」。