掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
最近也不知道怎么回事,我們自己的網(wǎng)站沒有被黑,反倒是認(rèn)識(shí)的一些朋友的網(wǎng)站被黑,要么是報(bào)復(fù)性攻擊要么就是為了實(shí)現(xiàn)自己的經(jīng)濟(jì)利益;比如掛賭博網(wǎng)站的馬,惡意使得網(wǎng)站跳轉(zhuǎn)到非法網(wǎng)站,真是多事之秋。
事件背景
一個(gè)跟我關(guān)系很不錯(cuò)的朋友,也是我的老鄉(xiāng),今天上午跟我說他的網(wǎng)站中有一個(gè)會(huì)員在QQ上聯(lián)系他,威脅他不讓解封網(wǎng)站賬號(hào)就有不良后果,諸如說什么去工信部舉報(bào)之類的。而他的網(wǎng)站是資源下載類網(wǎng)站,現(xiàn)在日IP近萬,也有不錯(cuò)的收益,而且在國內(nèi)只要是資源下載類網(wǎng)站或多或少都有些問題,比如有的資源可能涉及侵權(quán)之類的。他自己還是挺擔(dān)心的,擔(dān)心真的被舉報(bào),即便他網(wǎng)站不存在什么嚴(yán)重違法問題,但有時(shí)候多一事不如少一事,就像我的網(wǎng)站當(dāng)初因?yàn)闀?huì)員發(fā)布一篇關(guān)于微軟的文章被發(fā)律師函但沒有注意,結(jié)果域名被hlod了。
但是沒想到,還沒等到那個(gè)人上午的威脅到來,結(jié)果現(xiàn)實(shí)的威脅卻人了。中午的時(shí)候他就跟我說網(wǎng)站被攻擊了,訪問網(wǎng)站后15s后跳轉(zhuǎn)到某色情網(wǎng)站。而他一個(gè)以運(yùn)營見長,技術(shù)是他短板的人,卻很快找到根目錄下的index.php文件開頭被插入惡意跳轉(zhuǎn)代碼。很顯然,事情沒有這么簡單,就算他把其中的惡意代碼刪除,攻擊者還是可以繼續(xù)攻擊,因?yàn)楦磯焊筒辉谶@個(gè)地方。
而他的網(wǎng)站就是基于Discuz創(chuàng)建的,基本上就是Discuz本身的狀態(tài),也就是說就算站點(diǎn)存在漏洞也不是他創(chuàng)造了這樣的漏洞?;谶@個(gè)時(shí)間點(diǎn),他非常懷疑該事件與上午那個(gè)威脅者有關(guān),但一時(shí)也不知道如何從根本上處理該問題。
問題處理
我首先要他做一個(gè)基本的驗(yàn)證操作,就是比對(duì)網(wǎng)站web程序看下近期是否被篡改,結(jié)果得到的反饋是并沒有。然后,他跟我說他的阿里云后臺(tái)里邊有提示網(wǎng)站受攻擊,但對(duì)于他自己也不知道如何分辨,因?yàn)楹芏啾惶崾镜墓羝鋵?shí)對(duì)網(wǎng)站是不存在影響的,比如很多針對(duì)某些開源編輯器的攻擊,但他的網(wǎng)站壓根沒有使用,這樣的攻擊再多也不會(huì)被攻破的,最多變成dos攻擊了,呵呵。我問了他幾個(gè)上面提示的細(xì)節(jié),比如要他注意有chr方法的地方,但看了之后還是覺得不是該事件的問題。
然后我干脆問他要了阿里云的賬號(hào),處于對(duì)我的信任他毫不猶豫給我了,我進(jìn)入阿里云后臺(tái),因?yàn)槲抑熬屠冒⒗镌铺峁┑陌踩O(jiān)控工具快速定位攻擊事件,這比自己另外去找效率高得多。結(jié)果在“弱點(diǎn)”(其實(shí)就是漏洞)這個(gè)提示項(xiàng)中發(fā)現(xiàn)連續(xù)好幾個(gè)高危提示,都是“fastcgi 代碼執(zhí)行漏洞”。
那這是一個(gè)什么漏洞呢?據(jù)了解該漏洞一般不是web程序引起的,而一般是由于web服務(wù)器配置不當(dāng)引起的,比如nginx、iis等;該漏洞會(huì)使得一些不安全的文件被當(dāng)做可執(zhí)行的文件執(zhí)行。非常典型的就是在圖片中植入攻擊代碼,然后上傳該圖片到服務(wù)器,再利用該漏洞執(zhí)行圖片中的攻擊代碼。下面的圖片就是驗(yàn)證該漏洞的,在根目錄下robots.txt是搜索引擎協(xié)議文件,顯然是正常的,但是加上/x.php訪問安全狀態(tài)是不能夠被訪問的,但他這里可以直接被訪問,這漏洞表現(xiàn)得一覽無余。
我于是要他給我一個(gè)有上傳圖片權(quán)限的網(wǎng)站賬號(hào)給我來測試,說到這里;他又跟我補(bǔ)充了一個(gè)細(xì)節(jié):那就是上午那個(gè)威脅他的人對(duì)應(yīng)的賬號(hào),從注冊(cè)開始除了傳圖片外啥都沒做。到了這里我越發(fā)感覺問題就是在這個(gè)地方。
我在本地制作一個(gè)帶有一句話php執(zhí)行木馬的圖片,用cmd命令行合并一個(gè)jpg圖片和一個(gè)寫有一句話木馬的php文件。
然后利用他給我的用戶賬戶上傳文件(其實(shí)他的網(wǎng)站任意注冊(cè)用戶都有上傳圖片權(quán)限),結(jié)果這張帶有木馬的圖片順利上傳到網(wǎng)站服務(wù)器中;這張圖片很明顯是帶有木馬的,這不用再看了。這時(shí)候我要他提供一張攻擊者賬戶上傳的圖片給我。結(jié)果是一張這樣的圖片:
呵呵,你丫是表情包呢,結(jié)果他說那個(gè)人傳的都是類似這種風(fēng)格的,尼瑪,我也是醉了。用16進(jìn)制查看器打開該文件,結(jié)果幾乎讓我可以完全確定該攻擊源于此了:
可以非常明顯得看到在結(jié)尾有一段非常明顯的代碼,而此代碼之前應(yīng)該才是正常圖片的編碼。到了這里真相就出來了,這是一個(gè)非常典型的一句話木馬。
結(jié)語
該漏洞在阿里云官方有兩種解決方案的(阿里云官方解決方案),除此之外我們可以升級(jí)web服務(wù)器版本至安全版本等等。實(shí)際上上面的過程僅此這個(gè)漏洞攻擊者還是不能夠?qū)崿F(xiàn)攻擊目標(biāo),比如如果不給他傳圖片也就不能在圖片中插入代碼并上傳到服務(wù)器。所以攻與防總是一環(huán)扣一環(huán)的。不管對(duì)于攻擊者還是防護(hù)者都是有較高要求的,對(duì)于攻擊者而言,可以利用的破綻中缺少某個(gè)環(huán)節(jié)就是功虧一簣;而對(duì)于防護(hù)者而言,需要盡可能避免漏洞的出現(xiàn),哪怕對(duì)于該漏洞本身來講并不是什么高危漏洞,但依然可能被利用。
這里也不得不贊一下阿里云,我之所以贊它并不僅僅是因?yàn)樯鲜鲞^程中使用了它提供的安全監(jiān)控工具。而是在這個(gè)過程中,其實(shí)我做了一個(gè)逆向的攻擊重現(xiàn),也就是重現(xiàn)一遍攻擊過程(當(dāng)然該過程相對(duì)攻擊者攻擊過程輕松許多,呵呵),在這個(gè)過程中實(shí)踐了除該攻擊流程本身之外的過程。比如直接把木馬上傳到服務(wù)器做基礎(chǔ)攻擊測試,這個(gè)地方就是我要贊阿里云的,木馬文件剛上傳,郵件馬上就到來。
雖然該測試木馬是非常容易被識(shí)別的,但我要贊的是阿里云的這個(gè)通知速度,絕對(duì)杠杠的。這不是打廣告,使用阿里云產(chǎn)品幾年了,確實(shí)相對(duì)以前省了不少事情或者提高了不少事情的處理效率,比如我們這邊文章所講的。
最后想說的是,沒有絕對(duì)的安全體系,要做的是最大可能避免不良事件的發(fā)生,最重要的是有防范于未然的安全意識(shí)!
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流