反黑教程:手把手教你應(yīng)對(duì)搜索引擎劫持攻擊
很多站長(zhǎng)可能都遇到過(guò)一種黑客攻擊方式,就是在搜索引擎結(jié)果頁(yè)中看到自己的網(wǎng)站,但是點(diǎn)開后卻跳轉(zhuǎn)到一些其他網(wǎng)站,比如博彩,虛假?gòu)V告,淘寶搜索頁(yè)面等等。
?? ??
這種情況產(chǎn)生的直接后果就是:
用戶流失。試想如果你做的是個(gè)電商網(wǎng)站,做了很多的SEO優(yōu)化或者競(jìng)價(jià)排名后,用戶卻再也無(wú)法通過(guò)搜索引擎找到你的網(wǎng)站,這是多么悲催的一件事。
網(wǎng)站被攔截。如果你的網(wǎng)站被劫持到一些非法站點(diǎn)上導(dǎo)致網(wǎng)站被標(biāo)記為非法、賭博或者惡意代碼時(shí),可能直接會(huì)被各種瀏覽器和搜索引擎標(biāo)記為“惡意網(wǎng)站”從而直接攔截。世間最痛苦的事莫過(guò)于此,我是好人,特么的可我被人陰了……
可信度降低。你苦心經(jīng)營(yíng)網(wǎng)站多年,樹立口碑不容易。一日被黑,日日被劫持。從此以后用戶通過(guò)搜索引擎打開你的網(wǎng)站不是色情就是賭博。正常業(yè)務(wù)啥都沒了,也別再談什么可信度和口碑了。
其實(shí)當(dāng)站長(zhǎng)們遇到搜索引擎劫持時(shí)根本不用慌,我先提供兩種解決方案:
1、閱讀本文
回到正題,昨天晚上有個(gè)用戶找到我,說(shuō)是網(wǎng)站搜索結(jié)果頁(yè)被劫持了,弄現(xiàn)在到處都認(rèn)為他的網(wǎng)站是個(gè)博彩網(wǎng)站,各路封殺蜂擁而至。今天一上班就幫這個(gè)用戶把網(wǎng)站處理干凈,同時(shí)也加入了網(wǎng)站衛(wèi)士的防護(hù)體系,整理出排查問(wèn)題的全過(guò)程供各位站長(zhǎng)們參考。
分析中使用到的工具:Fiddler (官網(wǎng):http://www.telerik.com/fiddler),國(guó)內(nèi)很多下載站也能下到這個(gè)工具。
場(chǎng)景重現(xiàn):用戶在百度輸入:XXX(他網(wǎng)站的關(guān)鍵字)
結(jié)果頁(yè)中能看到,但是點(diǎn)開后立刻跳轉(zhuǎn)到一個(gè)博彩網(wǎng)站
然后的故事大家都知道了,悲劇如下圖:
?? 
手把手第一步:判斷劫持方式
這一步主要判斷當(dāng)前劫持是通過(guò)javascript代碼實(shí)現(xiàn)還是通過(guò)PHP/ASP等腳本代碼實(shí)現(xiàn)。
打開fiddler,先按F11下個(gè)HTTP請(qǐng)求斷點(diǎn),然后點(diǎn)擊百度結(jié)果頁(yè),去fiddler里看請(qǐng)求。點(diǎn)一下右邊綠色的這個(gè)按鈕
?? 
每點(diǎn)擊一步,就會(huì)通過(guò)一個(gè)請(qǐng)求。從結(jié)果看到本次搜索引擎劫持只用了3步,此時(shí)我們能得出一個(gè)結(jié)論:本案例中的這個(gè)網(wǎng)站劫持是通過(guò)PHP程序代碼實(shí)現(xiàn)的劫持,劫持過(guò)程如下圖:
?? 
從百度鏈接點(diǎn)過(guò)來(lái)會(huì)跳到用戶網(wǎng)站本身,此時(shí)沒有加載任何js和css等資源就直接又跳到博彩網(wǎng)站86896.com。
這一步是如何實(shí)現(xiàn)從用戶網(wǎng)站跳轉(zhuǎn)到博彩網(wǎng)站的呢,原理其實(shí)很簡(jiǎn)單,請(qǐng)看下圖:
?? 
這個(gè)跳轉(zhuǎn)的HTTP請(qǐng)求代碼是302,通過(guò)一個(gè)location重定向到博彩網(wǎng)站。由于該網(wǎng)站使用的是PHP程序,在PHP里通過(guò)header()函數(shù)即可實(shí)現(xiàn)頁(yè)面重定向。
手把手第二步:查找可疑代碼
既然知道了劫持的原理和目標(biāo)博彩網(wǎng)站,就比較容易查出惡意代碼了。該用戶的服務(wù)器是windows2003,通過(guò)遠(yuǎn)程連接上去,在windows系統(tǒng)下可以用findstr命令輕松查找任意文本所在的文件位置。在本案例中我們只需要查找哪些文件里出現(xiàn)了86896這個(gè)關(guān)鍵字即可。命令行下構(gòu)造查詢命令如下:
findstr /s /i “86896″ D:\web\xxx.org\*.php
關(guān)鍵字后面跟的是網(wǎng)站根目錄,這行命令的意思是遍歷網(wǎng)站根目錄下的所有php文件,查找出其中包含“86896“字符的文件。執(zhí)行這個(gè)命令我們可以得到以下結(jié)果輸出:
?? 
通過(guò)結(jié)果可以很明顯的看出,黑客入侵了該網(wǎng)站并且修改了discuz論壇里\source\class\class_core.php這個(gè)核心文件,在這個(gè)文件里面加入了實(shí)現(xiàn)劫持的location跳轉(zhuǎn)惡意代碼。
這個(gè)黑客植入的惡意代碼還是比較“小白“的,沒有用任何加密等其他隱藏手段,直接可以通過(guò)關(guān)鍵字查找出來(lái)。完整的惡意代碼如下圖:
?? 
這段惡意代碼的功能就是把所有user-agent和referer里包含搜索引擎信息的網(wǎng)站訪問(wèn)請(qǐng)求內(nèi)容全部劫持為博彩網(wǎng)站,幫用戶刪除這一段PHP代碼后,網(wǎng)站就立刻恢復(fù)正常啦~
通過(guò)這個(gè)案例分析,希望讓站長(zhǎng)知道,這種搜索引擎流量劫持攻擊的技術(shù)含量并沒有那么深不可測(cè),通過(guò)兩個(gè)步驟:
首先判斷劫持方式,如果是js代碼劫持,找出來(lái)惡意js代碼刪除就行,如果是腳本劫持,請(qǐng)參考本文介紹的方式。
其次就是用findstr(windows)命令或者grep(linux)命令去服務(wù)器上找出惡意代碼所在的文件,刪除惡意代碼即可。



























