[WordPress] 如何清理被駭後的 WordPress 網站

本篇文章更新時間:2020/04/24
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


Facebook 上看到社友 Tonny 分享的這篇 How to Clean a Hacked WordPress Site。這主題大到讓人不想寫,真的能寫且又有效益的就屬資安公司了XD

撇開 Sucuri 業配自家的內容不說,雖然總結還是「找他們」,但本篇也算是認真分享做內容了。

對比我的手動操作方法大同小異,關鍵還是自己對WordPress 網站的了解程度,不了解隨便改絕對比被駭還慘!(自駭!?)

以下幾點清除操作:

  1. 回想網站上次更新檔案的時間點(或透過其他資訊比對),檢查異常的檔案更新,再來是判斷有沒有惡意程式碼的蹤跡,文章中提到幾個特徵:

    base64
    str_rot13
    gzuncompress
    eval
    exec
    system
    assert
    stripslashes
    preg_replace (with /e/)
    move_uploaded_file

  2. 從 wp-content 目錄下資料掃描近期更新過的檔案:

    find ./ -type f -mtime -15 (文中以近十五天為例)

  3. 看到有改變的檔案,確認屬於哪個外掛或主題,最簡單的方式就是把該外掛或主題重新安裝過(開發時記得就要用子主題架構),直接刪除 uploads 資料夾內的可執行檔案。看到 cache 字眼的資料夾裡面東西全砍有 99% 不會出事(經驗談,你出事了別找我XD)

    重裝外掛可以使用此外掛: Reinstall Plugins
    重裝主題可以使用此外掛:Reinstall Themes
    PS: 上述外掛我都沒試過,我的作法是直接從主機上指令操作。

  4. wp-content 內的部分處理完後已經可以斷掉某些惡意程式的系統連結,但這還不夠! 接下來是重新安裝 WordPress 核心,把 wp-content 以外的資料都重新洗過一次。記得檢查:index.php, wp-config.php 檔案。

    重裝 WordPress 核心的方法可以到「控制台」的「更新」,那邊重新安裝過一次當前版本。

  5. 經過上述操作,可以說網站檔案層面清除至少 98% 了,剩下真的就是直接以純檔案形式隱藏於核心資料夾的惡意程式。透過手動方式難免有漏網之魚,這個時候可以安裝 Wordfence 軟體防火牆 WAF 來全站掃描一次檔案和偵測有沒有駭客從遠端下達攻擊指令。根據指令和掃描結果來對應處理即可。

  6. 至於資料庫被注入的話,惡意程式資料可以從備份還原,或是檢查內容中是否有塞入 JavaScript 程式,使用 script 關鍵字掃描看看!

後記

上述都已經是「被駭」後的處理,不能保證網站可以回到未被害前(還遇過檔案被駭客砍光的),且很多處理都無法在當前主機上操作,作業時會轉移獨立虛擬主機來進行,延伸成本會包含環境建置、網站轉移。每一個過程都是一筆不小的開銷!

為了荷包著想,所以還是平時保持網站更新,注意資安時事,不要使用來路不明的外掛或主題,事前預防比事後補救更重要。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

參與討論

  1. victor

8 則留言

  1. 核心程式檔案有無遭到異動,使用官方的 Health Check & Troubleshooting 進行驗證,真的很不錯。

  2. 然後,原來,我現在回覆,同步回你的網站,發佈時間顯示的有時區差?

  3. Alex Lion 對,這個時間戳記是來自 Facebook 給我的時間,不是我們這個時區的時間。由於無法得知 Facebook 使用者的時區,所以就無法返算回去,我只好保留原本的來寫入了

  4. Alex Lion 你真的是第一個發現跟我反應的XD 厲害厲害~ 哈

  5. 網站進行進階追跡,各種記錄檔的時間對不起來的時候,很有可能是時區設定導致的差異。

    雖然聽聞有工具可以在檢視時協助對起來,但是多點警覺在裸視時,比較不容易誤判。

  6. 不只作業系統要校正時區,我實在不懂,怎麼有那麼多東西不照系統時區設定,然後要個別校正?

    不乖。

發佈留言

發佈回覆給「Alex Lion」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Mastodon