WordPress 出現奇怪的廣告和文章,為什麼會中毒、被駭、綁架?該怎麼處理?
| 2019/12/26 | 留言
這篇文章寫的是我近幾年發現比較常見的攻擊方式,有一些簡單的觀察和原因說明,但真正要處理問題的部份是寫給有一些管理 Linux 主機 / vps 經驗的朋友。如果您也有主機被駭的經驗,也歡迎留言討論。
WordPress 最常見的兩種攻擊事件
第一種:突然有奇怪的外國廣告文章發佈出來
常見原因
通常這類攻擊都是因為網站裡某個具有「發佈文章」的帳號密碼被猜到了,而且此帳號的密碼常常是:
- 使用「年度最容易被駭密碼排行榜」前 10 名又蟬聯 10 年的超脆弱密碼,字典攻擊一開瞬間就中鏢。
- 使用公開的個資設定作為密碼,例如:把密碼設為該帳號的 E-mail,然後作者頁會公開露出帳號的 E-mail。
駭客做了什麼?
通常他們是使用自動化的程式工具去猜現有帳號的密碼,因此要取得上述的脆弱密碼清單很容易。如果猜到了,通常也是用自動化的程式去做接下來的事:檢查怪文章有沒有發好發滿?如果還沒有就登入、發佈奇怪文章、登出,再等待下次做一樣的事,會有一個大概的週期性。
處理方式
若有主機管理權限,建議透過查找日誌 (log) 來分析,可以先用「時間」來找,因為這些文章都會有發文時間,所以在查找 log 時可以鎖定大概的時間範圍搭配 ip 尋找 wp-login.php 登入成功 (POST 且 200) 的紀錄。
這些紀錄不像真人坐在電腦前使用帳密登入時所產生的那樣,會載入一大堆頁面上的東西 (圖片、css、js 之類),留下很多雜亂的存取紀錄。由 Hacker 產出的日誌紀錄通常都很「乾淨」,不拖泥帶水,也表示很大的可能是用自動化程式來猜帳密,一旦猜到成功登入,就會先中規中矩的去檢查它想植入的後門檔案存不存在,不存在就熱心的幫忙增加幾個;然後經常會去檢查奇怪的廣告文章存不存在,若不存在就去觸發後門,冒名寫個幾篇發佈出來。
admin 通常是最常被試的帳號,密碼則是使用一些簡單的字典攻擊,逐一嘗試一些簡單的組合。不過我要說的重點其實是最後幾個,那些被嘗試的帳號都是真實帳號,Hacker 通常會先拿該帳號的 Email 來試,因為帳號和 Email 都是公開資訊,用程式爬網站,很容易就收集的到,這也是很初階的攻擊方式。
如何預防未來再發生?
請所有後台使用者發揮創意取個堅強一點的密碼,並且最好可以定期改密碼。如果是兇猛一點的工程師可以在週期時間到了就強迫修改,不然就不能使用管理功能。
第二種:進站突然跳出奇怪的廣告
常見原因
通常就是網站被植入後門檔案了,有九成的機率是透過外掛的漏洞引起的,但真正被植入的原因比較難一下子就找出來。
駭客做了什麼?
通常還是使用自動化的程式工具,找出現有網站的漏洞,把有問題的程式碼加在現有檔案裡,或是新增後門檔案。新的漏洞不太可能一下子就被應用在你的小網站,所以這些攻擊通常都是舊版本漏洞的攻擊。
處理方式
觀察這類攻擊會發現它們通常會發出 POST request 到 wp-content/ 底下某個檔案去觸發後門,最常見的就是 uplaods/ 因為它的寫入權限幾乎都會開啟。除了 wp-content/ 下,如果權限設定不良,其他的目錄都有可能中鏢,比方 .git/。
所以你可以查找 access.log,以 VIM 為例,搜尋所有「POST 到 wp-content/ 下,且狀態為 200 的紀錄」,指令為:
/POST\s\/wp-content.*\s200
(vim 輸入 n 會找下一個出現位置,N 則是找上一個)
如何預防未來再發生?
- 你必須要先讓 WP 目錄下的所有權限設定是正確的,尤其絕不能容許 777,再來是設定 uploads/ 底下不能直接執行 PHP。
- 找出 uploads/ 底下所有的 *.php,99.9% 都是有問題的後門,比方:
$ find /var/www/html/my-wp-site/wp-content/uploads -name "*.php" -print
- 清除 log 裡發現疑似後門的檔案,如果有餘裕可以把後門檔案備份下來,反混淆看看能不能猜出它實際上做了什麼事,看得出來的話就能想像還有哪裡有問題。
- 將 WP 核心及外掛都升到最新版本,有時候你會說怎麼我都升到最新了還是沒有解決問題?那應該是你沒清乾淨,或者目錄權限的設定還是有問題。
安全性外掛雖然很實用但不是銀彈
看到這裡一定有朋友已經忍很久了,「就用 Wordfence 呀!」,嗯,我知道我也很常使用,像 Wordfence 這種外掛非常的實用,而且免費版就會幫忙查找使用弱密碼的帳號及有問題的後門檔案。只是 Wordfence 查找的範圍沒有你想得全面,我遇過裝好但無法分析的狀況,也遇過弱密碼的帳號沒找出來,或是為了客製目的而自建的目錄它不會查找問題檔案…之類的情況。
Wordfence 這類外掛是很好的輔助,但好的習慣和好的心態才是長久之計。
面對 WordPress 資安問題的心態
如果把時間拉長來看,沒有不會出事的網站。
因此你不應該覺得資安會是一勞永逸的事情,它是維護工作裡重要的一環,所以會是持續進行的事。把核心和外掛都升到最新是最基本的週期性工作,但不能因此覺得從此就會過著幸福快樂的日子,技術和需求日新月益,核心和外掛就會有更新,有了更新表示有人加進新的程式碼,而只要有人更改了原本的程式碼內容,就很難保證不會有新的問題,這些預防習慣只是降低出事的機率,延長下次出事的時間。
最後誠心建議,如果你在資安防備的資源非常有限,應該先專注在備份還原機制,備份可說是銀彈第一候選人,因為中了最極致的死招,至少還有機會可以透過備份還魂,誇張一點說,如果你的自動備份還原只要0.5秒,你的網站是究級快速復活之王,你還會這麼怕被打掛嗎?
標籤:WordPress, 中毒, 後門, 惡意程式, 植入廣告
分類:WordPress
本文作者是Audi Lu