普通用戶可能感覺不到,但站長(zhǎng)朋友肯定知道,如果一個(gè)網(wǎng)站放置了一段時(shí)間,不管它是什么,當(dāng)你有一天去看它的時(shí)候,你可能會(huì)發(fā)現(xiàn)它已經(jīng)被暫停了。事實(shí)上,網(wǎng)站被掛起是一種普遍現(xiàn)象,尤其是基于CMS開發(fā)的網(wǎng)站。網(wǎng)站一旦掛載,會(huì)給訪問者和網(wǎng)站本身帶來一些麻煩,如:
1、網(wǎng)頁上會(huì)出現(xiàn)一些惡意腳本,可能彈出大量垃圾廣告彈出窗口,跳轉(zhuǎn)到無關(guān)甚至非法的網(wǎng)站,插入大量鏈接,頁面死圈等,降低訪問體驗(yàn);
2、影響網(wǎng)站SEO效果,降低百度排名,網(wǎng)站很容易被降權(quán)等;
3、非法修改網(wǎng)站源代碼,甚至刪除網(wǎng)站程序文件,造成數(shù)據(jù)丟失。
上面提到的這些有害后果,其實(shí)網(wǎng)站一旦掛載,清理也是一件非常麻煩的事情,因?yàn)楹诳鸵呀?jīng)破壞了你網(wǎng)站的源文件,而且不止一個(gè)地方插入了惡意代碼。
那么這些黑客是如何將惡意代碼植入我們的網(wǎng)站程序的呢?
主要漏洞如下:
1、文件上傳漏洞:如上傳頁面未驗(yàn)證上傳文件的格式,導(dǎo)致上傳動(dòng)態(tài)腳本(如直接上傳PHP文件),上傳頁面未驗(yàn)證權(quán)限,導(dǎo)致非法用戶可以上傳文件等;
2、表單數(shù)據(jù)未過濾漏洞:例如,用戶在發(fā)布文章時(shí),可以插入JS和CSS代碼,這足以植入惡意腳本,這些JS和CSS代碼將在頁面呈現(xiàn)時(shí)運(yùn)行;
3、SQL注入漏洞:存在SQL注入點(diǎn),黑客可以入侵?jǐn)?shù)據(jù)庫進(jìn)行操作,嚴(yán)重時(shí)甚至刪除數(shù)據(jù)庫;
4、管理后臺(tái)弱密碼漏洞:有些管理后臺(tái)賬號(hào)密碼太簡(jiǎn)單(如admin),一猜,直接登錄后臺(tái),怎么操作就怎么操作
5、在發(fā)現(xiàn)該漏洞后,利用該漏洞,將惡意代碼植入到web程序中,使得用戶在訪問網(wǎng)頁后可以加載這些惡意代碼,從而達(dá)到攻擊者的目的。
現(xiàn)在我們知道了黑客掛馬的一般過程,如何避免網(wǎng)站掛馬?結(jié)合我十多年的運(yùn)行維護(hù)經(jīng)驗(yàn),提出一些建議供大家參考。
1、現(xiàn)在市面上的CMS源代碼是公開的,所以0day中存在很多漏洞。漏洞公之于眾后,只要找到這個(gè)CMS建的站,基本上可以攻擊成功,所以范圍很廣。但如果我們的程序是自行開發(fā)的,攻擊者不知道我們的源代碼邏輯,攻擊將非常困難。如果是基于CMS的網(wǎng)站,一定要注意官方補(bǔ)丁,及時(shí)修復(fù)。
2、在web開發(fā)領(lǐng)域,我們一直強(qiáng)調(diào)用戶的任何輸入都是不可信的。在得到用戶提供的數(shù)據(jù)后,我們必須進(jìn)行必要的驗(yàn)證(格式是否正確)和過濾(過濾一些敏感字符)。
3、過濾掉這些內(nèi)容:JS標(biāo)簽和代碼、CSS標(biāo)簽和代碼、HTML標(biāo)簽中的各種事件、單引號(hào)、雙引號(hào)和SQL關(guān)鍵字;
4、這是非常重要的。即使攻擊者獲得上載漏洞,我們也只允許將其上載到特定目錄。如果其他目錄沒有寫權(quán)限,它們將不會(huì)被感染。如果他們沒有執(zhí)行權(quán)限,上傳的動(dòng)態(tài)腳本將不會(huì)被執(zhí)行。
5、背景地址更改為無法猜測(cè)的地址。密碼必須設(shè)置得更復(fù)雜。
6、定期備份網(wǎng)站,然后做木馬查殺,現(xiàn)在殺毒軟件可以查殺網(wǎng)頁木馬。