WordPress 惡意代碼的分析和排查方法

WordPress 惡意代碼的分析和排查方法

來自專欄明月登樓網站建設心得分享

自【網站安全的「燈下黑」隱患:賬號安全】一文發表後,明月收到了很多站長們有關 WordPress 站點安全的問題諮詢,明月總結分析了一下幾乎 90%以上都是「惡意代碼」造成的,而給站點帶來惡意代碼的插件就佔了 80%以上(有官網插件、網上流傳的插件等等),其他的就是主題了(以破解版、盜版主題為主),其實無論是「惡意代碼」還是「後門木馬」都是以代碼的形式在伺服器上傳播破壞的,今天明月就跟大家講講如何通過對代碼的分析來提前找出這些「骯髒」的東西。

function.php 里惡意代碼的分析和排查

在 WordPress 里「惡意代碼」最容易出現的地方就是主題目錄下的 function(s).php 里,一般正規的 function.php 文件結尾都會有類似下面這樣的結章節附註釋:

  1. //全部結束
  2. ?>

如果你發現沒有這個結束注釋的時候,那麼基本可以判定你的 function.php 文件被篡改過了,就需要好好的檢查了,比如下面這些代碼行:

  1. function _checkactive_widgets
  2. function _get_allwidgets_cont
  3. function stripos
  4. function strripos
  5. function scandir
  6. function _getprepare_widget
  7. function __popular_posts
  8. add_action("admin_head", "_checkactive_widgets");
  9. add_action(「init」, 「_getprepare_widget」);
  10. _verify_isactivate_widgets
  11. _check_isactive_widget
  12. _get_allwidgetscont
  13. _prepare_widgets
  14. __popular_posts

每行是獨立存在的,如果你的 functions.php 中有上面任意一段代碼,那麼你可能就中招了。其中 function、add_action 這類一般都是屬於「惡意代碼」做「準備活動」的代碼。

清除 function.php 惡意病毒代碼

清理也很簡單,直接在 function.php 文件裡面找到上面的類似代碼刪除即可,但因為一旦感染會導致你 themes 主題目錄所有主題都感染,因此你只清除當前使用主題是無效的,你清除後很快就會生成,因此你清除掉一個主題的代碼後,把 functions.php 文件設置為 444 許可權,然後再清理其他主題即可。至於最後 functions.php 文件的 444 許可權是否需要改回去,個人建議 444 挺好挺安全的,等要修改的時候再修改就行了。


當然「惡意代碼」並不僅僅局限於 function.php 文件里,明月就碰到過隱藏在 WordPress 根目錄 index.php 文件里、wp-include 或者 wp-admin 目錄下某個 PHP 文件、cache 這樣有讀寫許可權的目錄等等,可以說是五花八門、腦洞大開的無所不在,這些其實就是【網站安全的「燈下黑」隱患:賬號安全】一文里所講的賬號許可權被獲取到的後果,這樣的結果最難排查,就明月的經驗來說大致可以分為兩種,分別如下:

手動排查和清除

所謂的「手動」其實就是藉助 FTP 軟體的「目錄對比」、「同步瀏覽」來排查伺服器端的 PHP 文件大小和最後被修改日期來進行分析清理的,因為一般來說 WordPress 站點的 wp-include 和 wp-admin 這兩個目錄里的文件基本上都是固定不變的,只有在升級、更新 WordPress 的時候才會有部分的覆蓋替換,平時來說理論上是不會對這些文件進行修改操作的,通過與本地同樣版本的目錄文件進行對比可以快速的找出伺服器上多出來的文件已經被修改過的文件(文件大小、最後修改日期),以 FileZilla FTP 軟體為例,如下圖所示:

可以看到通過 FileZilla FTP 軟體的「同步瀏覽」和「目錄對比」可以快速的找到被修改過的伺服器端的文件,當然也可以找出「多出來」的 PHP 文件(這類基本上直接刪除清理就可以了,幾乎百分百肯定是惡意代碼自建的)這裡只是為了告訴大家這種方法的,具體還需要大家自行來理解和試用了,這種方法對於非 WordPress 平台的博客系統來說比較實用( WordPress 有安全插件可以掃描「惡意代碼」)。

第三方插件、工具掃描排查

WordPress 明月一直比較推薦 Wordfence Security 插件的,這是一個集防火牆和惡意代碼掃描為主的 WordPress 安全插件,由一個大型團隊建立和維護,100%專註於 WordPress 安全性。雖然有收費模塊,但是我們可以使用免費模塊「Scan」來掃描自己 WordPress 站點排查含有「惡意代碼」的 PHP 文件,雖然有一定的誤報率(主要是一些正版插件、主題的加密組件會被誤報),但是查找「惡意代碼」絕對是事半功倍的高效率,需要注意的是,這個插件明月不建議常開啟著,因為其防火牆和安全防護會對資料庫造成一定的負載壓力影響網站整體性能的發揮,一般需要的時候啟用插件運行「Scan」掃描排查,完成後關閉插件保留以備不時之需就可以了。

  • Wordfence Security 插件使用注意事項:

1、在開始「Scane」之前,為了保證掃描的穩定執行,最好停用其他所有的插件(僅僅保留 Wordfence Security 插件啟用)。

2、因為 Wordfence Security 插件掃描會造成伺服器 CPU 負載飆升,建議選擇掃描時間段在凌晨以後進行或者是網站訪問量最低的時候。

3、我們僅僅是藉助 Wordfence Security 的「Scan」惡意代碼的規則而已,所以注意記錄掃描結果里提示的可疑 php 文件的路徑,方便手動先備份後清理刪除。

其實還有一個本地工具是個查找 PHP 文件惡意代碼的最佳存在,那就是微軟的 MSE,我們可以將伺服器端的 PHP 文件下載到本地,讓微軟的 MSE 掃描檢測也可以找到「惡意代碼」、「木馬後門」的。這點而比國內的那些啥「衛士」、「管家」、「XX 霸」之流強的不只是一點點哦。

第三方工具有不少選擇,具體如何選擇大家根據自己的情況自由選擇就是了,這裡不得不嘆服一下 WordPress 的生態環境真的是最好的, Wordfence Security 這樣的插件存在就很能說明這個問題了。

最後明月要再次強調一下, WordPress 豐富的插件、主題是優勢也是一把「雙刃劍」,大家在選擇、使用插件、主題的時候一定要慎重, WordPress 不安全主要的因素就是插件、主題這些不是 WordPress 可以控制的,畢竟都是第三方開發提交的。熱衷於體驗各種插件和炫酷主題的站長們 Wordfence Security 插件建議永久保留以備不時之需,有好好運營網站打算的站長們建議購買正規渠道的正版主題和插件,免費的、盜版的、破解版的都有「不幹凈」的隱患。


推薦閱讀:

zapier與明道以及wordpress
xampp埠總是變化
館長自動化系列一
python爬取csdn文章到wordpress

TAG:WordPress | 惡意代碼 | 安全 |