互聯(lián)網(wǎng)世界魚(yú)龍混雜,我們的網(wǎng)站放在internet上除了網(wǎng)站用戶和會(huì)員會(huì)造訪,還會(huì)有一群覬覦網(wǎng)站利益服務(wù)器功能的人在暗中觀察,抓住機(jī)會(huì)找到漏洞就把網(wǎng)站一舉拿下,從而盜取數(shù)據(jù)或是利用服務(wù)器資源作為礦機(jī)等等,因此服務(wù)器防御也是不可忽略不可輕視的一方面。
大部分公司在開(kāi)發(fā)運(yùn)維過(guò)程中并不會(huì)去刻意注意服務(wù)器安全,也不會(huì)去請(qǐng)專門的安全人員,直到服務(wù)器被攻破,被人勒索了以后才會(huì)意識(shí)到安全問(wèn)題的重要性,雖說(shuō)見(jiàn)兔顧犬,未為晚也,亡羊補(bǔ)牢,未為遲也,但是倘若我們能做到防范于未然,做好基礎(chǔ)防御,至少讓小學(xué)生級(jí)別的黑客被拒之門外,豈不善哉。
本文也僅作為基礎(chǔ)防御手段收集,如果公司數(shù)據(jù)非常重要,還是需要請(qǐng)專門的安全公司來(lái)保駕護(hù)航。
sql注入也是老生常談了,基本上算是常識(shí)了,這種手段無(wú)非是利用后臺(tái)漏洞通過(guò)URL將關(guān)鍵SQL語(yǔ)句帶入程序并在數(shù)據(jù)庫(kù)中執(zhí)行從而造成破壞性結(jié)果。常見(jiàn)情況包括后臺(tái)使用了的致命的字符串拼接,比如在java的jdbc中使用如下寫法
如果入?yún)sername在url中被換成不懷好意的sql語(yǔ)句或者其他,數(shù)據(jù)庫(kù)也就危險(xiǎn)了。
localhost:8080/testproj/queryUser?username=;drop%20t_user;
此外,類似的mybatis的${}寫法也是同樣道理,最好換成#。
1.2、后臺(tái)框架、協(xié)議漏洞
利用框架協(xié)議漏洞則是針對(duì)程序和系統(tǒng)缺陷,比如漏洞百出的struts2框架,到今天為止也不知道放出多少漏洞了,這些漏洞基本上是針對(duì)EL表達(dá)式缺陷使得URL中的代碼得以執(zhí)行,針對(duì)方式也很簡(jiǎn)單,換掉struts2或者不斷升級(jí)。應(yīng)對(duì)這種情況就需要運(yùn)維人員關(guān)注漏洞公告,及時(shí)與開(kāi)發(fā)溝通配合,更新程序,代價(jià)成本也比較高。這里也推薦可以使用一些漏洞掃描工具,及時(shí)發(fā)現(xiàn)自己網(wǎng)站的后門,防范于未然。比如Acunetix Web Vulnerability Scanner還是挺好用的。
1.3、程序邏輯漏洞
這個(gè)就需要黑帽子們比較有耐心,去一點(diǎn)點(diǎn)找出來(lái),舉個(gè)例子,網(wǎng)站有效性校驗(yàn)。針對(duì)數(shù)值有效性,前端有進(jìn)行過(guò)濾,但是網(wǎng)站后臺(tái)沒(méi)有做參數(shù)有效性校驗(yàn),這時(shí)候惡意者使用F12或postman等拼裝ajax請(qǐng)求,將dfa或者-1ad這種非法數(shù)字發(fā)送給后臺(tái),健壯性差的程序就很容易報(bào)錯(cuò),異常暴露到頁(yè)面上,瞬間就能讓操作者知道后臺(tái)使用何種語(yǔ)言何種框架。更嚴(yán)重的可能是利用程序邏輯漏洞做重復(fù)提交、越權(quán)操作等行為,因此需要開(kāi)發(fā)人員注意。
1.4、CSRF攻擊
這種手段就比較高明了,需要黑帽子會(huì)構(gòu)建釣魚(yú)網(wǎng)站,且對(duì)目標(biāo)網(wǎng)站請(qǐng)求方式比較熟悉。原理就是利用瀏覽器保存的cookie,比如我登錄目標(biāo)會(huì)員網(wǎng)站(這里假設(shè)www.XXXX.com),利用留言功能留下一個(gè)釣魚(yú)網(wǎng)址,可能管理員就點(diǎn)了進(jìn)去,跳轉(zhuǎn)到我構(gòu)造的網(wǎng)頁(yè)后觸發(fā)頁(yè)面的請(qǐng)求,該請(qǐng)求要增加一個(gè)管理員用戶
www.XXXX.com/account/addUser?username=god&password=123456&role=1
這個(gè)時(shí)候?yàn)g覽器還攜帶著管理員登錄的cookie因此該行為得到執(zhí)行,我就獲得了一個(gè)管理員用戶,當(dāng)然這么蠢的網(wǎng)站一般是不存在的,這里只是打個(gè)比方。
防范手段比較常見(jiàn)的是url攜帶token進(jìn)行校驗(yàn),這種手段還可以防御cookie被篡改,盜用等情況,相當(dāng)?shù)娜f(wàn)金油。
1.5、暴力破解
直接采用密碼表暴力破解方式強(qiáng)行登錄管理員賬戶,這個(gè)沒(méi)啥技術(shù)含量,開(kāi)發(fā)人員做好驗(yàn)證碼校驗(yàn)以及惡意攻擊校驗(yàn),頻繁請(qǐng)求IP封禁即可。
2、針對(duì)服務(wù)器
2.1、服務(wù)器登錄用戶、數(shù)據(jù)庫(kù)登錄用戶爆破
黑帽子有多種手段確定后臺(tái)數(shù)據(jù)庫(kù),比如1.3中直接讓后臺(tái)報(bào)錯(cuò),很容易就發(fā)現(xiàn)了后臺(tái)使用的什么框架,連得啥庫(kù)。又或是使用nmap 等工具直接開(kāi)掃,目標(biāo)服務(wù)器暴露3306端口大概率就確定是mysql了。確認(rèn)了數(shù)據(jù)庫(kù)類型以及端口接下來(lái)就是采用密碼表暴力破解了,很多安全意識(shí)差的密碼居然還是root,123456之類的,分分鐘被暴,而掃到后臺(tái)服務(wù)器22開(kāi)放端口也可以確認(rèn)后臺(tái)服務(wù)器使用linux開(kāi)放ssl登錄。所以應(yīng)對(duì)方式有三種:
mysql限制訪問(wèn)IP,這個(gè)利用alter user語(yǔ)句就可以做到,root賬戶盡量只給localhost權(quán)限,慎用user@%;
不要使用弱密碼,盡量采用字母+數(shù)字+特殊字符的密碼;
服務(wù)器使用放暴力破解服務(wù),可以針對(duì)非法訪問(wèn)惡意操作進(jìn)行鎖IP防御。
2.2、服務(wù)器端口漏洞
通過(guò)nmap很容易掃描到服務(wù)器暴露的端口,比如139端口外露,就有大量的手段可以滲透:
net use \ip\ipcContentContentnbsp;”” /user:administrator
所以應(yīng)對(duì)手段也很簡(jiǎn)單,開(kāi)啟防火墻,且只開(kāi)放有需要的端口,敏感端口如139,445不要外露。
2.3、操作系統(tǒng)漏洞
雖然大部分公司都采用linux作為服務(wù)器,相對(duì)安全得多,但是還是有不少公司(至少博主見(jiàn)過(guò)挺多的)還在使用windows server,大量的漏洞讓服務(wù)岌岌可危,應(yīng)對(duì)方式也很簡(jiǎn)單粗暴,該打的補(bǔ)丁就打,不要偷懶。
2.4、木馬植入
這個(gè)就是黑客直接通過(guò)向服務(wù)器種植木馬,開(kāi)啟后門,取得服務(wù)器控制權(quán),應(yīng)對(duì)方式主要以下三點(diǎn):
1、不要用服務(wù)器訪問(wèn)亂七八糟的網(wǎng)站(尤其是公司服務(wù)器在國(guó)外的,不要想著借來(lái)翻墻了,別作死),下載亂七八糟的東西;
2、實(shí)體機(jī)的移動(dòng)外設(shè)接入前注意殺毒;
3、服務(wù)器安裝相應(yīng)安全產(chǎn)品,定期查殺木馬,定期更新漏洞補(bǔ);
4、防火墻注意開(kāi)啟,相應(yīng)端口注意配置。
做到以上幾點(diǎn),基本上中級(jí)以下的黑客是進(jìn)不來(lái)了,就算是中高級(jí)的黑客也得費(fèi)一番功夫。當(dāng)然,如果公司服務(wù)器數(shù)據(jù)涉及資產(chǎn)非常高,還是建議老老實(shí)實(shí)找安全公司護(hù)鏢。