最近很多小夥伴一直在討論網站被黑和下載的免費 WordPress 主題插件被掛馬的話題,那麼今天小 V 就來教大家如何識別 WordPress 主題插件是否被留了後門。

首先來説下 WordPress 的運行環境,相信稍微有點常識的站長都知道 WordPress 是一款運行在 php+mysql 構架之上的建站系統,而且 wordpress 主題插件都是編寫成.php 後綴的可執行文件這是為什麼 wordpress 的免費主題插件很容易留後門的問題。

既然都是由 php 編寫的,那麼我們只要知道一般 php 後門常用程序就能一定程度上察覺到主題插件中是否存在後門木馬,下面小 V 列出一些常見 php 後門函數:

執行系統命令: system, passthru, shell_exec, exec, popen, proc_open(高危)
代碼執行: eval, assert, preg_replace('/$pattern/e')(高危)
文件操作:file_get_contents, file_put_contents, fputs, fwrite(高危)
字符串加密解密壓縮解壓隱藏:base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13, base64_decode, gzcompress, chr(可疑)
wordpress 創建後門用户:wp_create_user, WP_User, set_role(高危)

如果在主題中小 V 標註的高危代碼基本就可以確定這款主題很有問題了,基本上都是為了留後門或者是做些小動作了。如果是發現了本文標註的可疑代碼那就要注意了很有可能加密部分的代碼就是後門。

很多小夥伴肯定不懂 preg_replace(‘/$pattern/e’) 這段代碼是什麼意思,下面小 V 就來給大家解釋下,preg_replace 函數使用 e 修飾符之後在執行逆向引用替換完之後會將替換的代碼當作 php 代碼運行,所以也是一種非常常見的後門代碼。

在檢測主題插件是否包含後門的時候只要用文本搜索工具或者軟件搜索主題插件的 php 文件是否包含以上關鍵字,在搜索到 preg_replace 時需要人工對比下代碼查看是否包含 e 修飾符,如果主題文件出現大量的 chr(2).chr(3).chr(58) 這樣類似的代碼也要小心了,另外發現主題文件出現一大堆無規則的字符也要小心了一般都是加密後的代碼很可能隱藏了後門。

PS:由於平時整理的主題和插件比較多,所以很難將所有的投稿文件都檢查一邊。最多也就檢查下幾個關鍵文件是否掛馬,所以請大家在下載主題後儘量再自己檢查一遍。