文/林予松 黃信海 王宗敏
多層次解網(wǎng)站安全之謎
文/林予松 黃信海 王宗敏
隨著信息技術(shù)和Internet的高速發(fā)展,網(wǎng)站在人們的日常生活中扮演了越來(lái)越重要的角色,已成為政府、企業(yè)、學(xué)校、金融等組織和機(jī)構(gòu)開(kāi)展日常工作、交流及展示自我的重要平臺(tái)。同時(shí),隨著人們對(duì)網(wǎng)站依賴(lài)性的不斷增加,網(wǎng)站也成為了“黑客”眼中一個(gè)重要的攻擊目標(biāo)。據(jù)CNCERT/CC 2009年中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報(bào)告顯示:僅2009年,中國(guó)大陸有4.2 萬(wàn)個(gè)網(wǎng)站被黑客篡改,各類(lèi)網(wǎng)站被掛馬的情況也層出不窮。網(wǎng)站被黑,直接影響組織和機(jī)構(gòu)的正常工作,甚至帶來(lái)名譽(yù)及經(jīng)濟(jì)損失。

網(wǎng)站安全是一個(gè)涉及到基礎(chǔ)網(wǎng)絡(luò)層次,宿主操作系統(tǒng)層次,Web應(yīng)用程序?qū)哟危瑪?shù)據(jù)庫(kù)管理系統(tǒng)層次,以及安全管理層次的系統(tǒng)工程。它遵循“木桶原理”,任何一個(gè)層次的漏洞或缺陷,都可能成為網(wǎng)站受到攻擊的原因。隨著網(wǎng)站技術(shù)的發(fā)展,攻擊技術(shù)也在不斷發(fā)展,各種自動(dòng)化攻擊工具層出不窮,發(fā)起攻擊的技術(shù)門(mén)檻越來(lái)越低,同時(shí)攻擊日益呈現(xiàn)利益驅(qū)動(dòng)化、團(tuán)體化,使得網(wǎng)站安全現(xiàn)狀不容樂(lè)觀。根據(jù)CNCERT/CC 2010年第23期網(wǎng)絡(luò)安全信息與動(dòng)態(tài)周報(bào)顯示:2010年6月14日至6月20日,境內(nèi)被木馬控制的主機(jī)IP地址數(shù)目為491402個(gè),被僵尸網(wǎng)絡(luò)控制的主機(jī)IP地址數(shù)目為5572個(gè),被篡改的政府網(wǎng)站數(shù)量為108個(gè)。惡劣的網(wǎng)絡(luò)環(huán)境,使得網(wǎng)站安全面臨嚴(yán)重的安全威脅。
由于網(wǎng)站安全涉及到多個(gè)層次,因此網(wǎng)站面臨的安全威脅主要有以下幾個(gè)方面 :
1基礎(chǔ)網(wǎng)絡(luò)層次
來(lái)自基礎(chǔ)網(wǎng)絡(luò)層次的威脅主要是網(wǎng)絡(luò)設(shè)備的物理安全以及威脅網(wǎng)絡(luò)安全的一些常見(jiàn)的攻擊手段。
網(wǎng)絡(luò)設(shè)備物理安全威脅:主要指網(wǎng)絡(luò)設(shè)備受火災(zāi)、洪水、風(fēng)暴、地震等破壞,以及環(huán)境(溫度、濕度、振動(dòng)、沖擊、污染、電磁輻射/干擾、停斷電等)和人為因素(操作失誤造成設(shè)備損壞、設(shè)備被盜竊等)的影響。
探測(cè)攻擊:攻擊者使用各種工具對(duì)網(wǎng)絡(luò)和服務(wù)器信息進(jìn)行探測(cè),進(jìn)而收集網(wǎng)絡(luò)拓?fù)洹⒂行P、操作系統(tǒng)類(lèi)型、活動(dòng)端口、漏洞、安全弱點(diǎn)等信息。
拒絕服務(wù)攻擊(DoS Attack):拒絕服務(wù)(DoS,Denial of Service)攻擊或者分布式拒絕服務(wù)(DDoS,Distributed Denial of Service)攻擊是指攻擊者利用網(wǎng)絡(luò)上大量的已被攻陷的主機(jī)作為僵尸(或稱(chēng)“肉雞”),向某一特定的目標(biāo)主機(jī)發(fā)送大量的服務(wù)請(qǐng)求,來(lái)消耗目標(biāo)主機(jī)的網(wǎng)絡(luò)資源和系統(tǒng)資源,使之無(wú)法向正常請(qǐng)求的用戶(hù)提供服務(wù),從而達(dá)到攻擊的目的。根據(jù)攻擊目標(biāo)不同,DoS攻擊主要分為網(wǎng)絡(luò)帶寬攻擊和連通性攻擊。
緩沖區(qū)溢出攻擊:緩沖區(qū)溢出攻擊的目的在于擾亂以特權(quán)身份運(yùn)行的程序功能,使攻擊者獲得程序的控制權(quán),進(jìn)而控制整個(gè)主機(jī)。它通過(guò)向程序的緩沖區(qū)寫(xiě)入超出其長(zhǎng)度的內(nèi)容,造成緩沖區(qū)溢出,破壞程序堆棧,使程序運(yùn)行出錯(cuò)或者轉(zhuǎn)而執(zhí)行其他的指令,進(jìn)而達(dá)到攻擊效果。如果被跳轉(zhuǎn)執(zhí)行的指令是放在具有超級(jí)管理員權(quán)限的內(nèi)存里,攻擊者就有機(jī)會(huì)以超級(jí)管理員的權(quán)限控制整個(gè)系統(tǒng)。
TCP劫持:TCP劫持是一種中間人攻擊方式,它的基本要求是攻擊者要獲取被攻擊主機(jī)間發(fā)送的數(shù)據(jù)報(bào)文進(jìn)而獲得正確的序列號(hào)并偽造數(shù)據(jù)。因此,攻擊者必須位于兩臺(tái)主機(jī)的通信路徑之間,從而可以對(duì)攻擊目標(biāo)進(jìn)行竊聽(tīng)、復(fù)制、篡改并發(fā)送數(shù)據(jù)。攻擊者利用這種攻擊可以在兩臺(tái)主機(jī)之間進(jìn)行正常的驗(yàn)證,奪取連接的控制權(quán),進(jìn)而利用TCP劫持來(lái)對(duì)私人信息等進(jìn)行非授權(quán)的訪(fǎng)問(wèn)和篡改。
2宿主操作系統(tǒng)層次
運(yùn)行著Web服務(wù)器和數(shù)據(jù)庫(kù)管理系統(tǒng)的操作系統(tǒng)是網(wǎng)站運(yùn)行的基礎(chǔ),它往往存在很多的系統(tǒng)缺陷和漏洞(例如0day漏洞), 默認(rèn)以及不合理的安裝設(shè)置導(dǎo)致了不安全因素的存在,不必要的服務(wù)也會(huì)降低操作系統(tǒng)的安全性。黑客、病毒、木馬等正是利用了這些漏洞和不安全因素來(lái)破壞系統(tǒng),進(jìn)而威脅到運(yùn)行于系統(tǒng)之上的網(wǎng)站的安全性。
3Web應(yīng)用程序和數(shù)據(jù)庫(kù)管理系統(tǒng)層次
Web應(yīng)用程序和數(shù)據(jù)庫(kù)管理系統(tǒng)層次的主要威脅有:解釋執(zhí)行Web應(yīng)用程序腳本的Web服務(wù)器和存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)管理系統(tǒng)本身的漏洞和配置不當(dāng);Web應(yīng)用程序邏輯設(shè)計(jì)上存在的身份認(rèn)證邏輯不嚴(yán)密、會(huì)話(huà)管理沒(méi)有正確實(shí)施、用戶(hù)輸入校驗(yàn)缺失、重要文件和數(shù)據(jù)沒(méi)有加密等。 OWASP公布了2010年最新的OWASP Top 10,列舉了十大Web應(yīng)用安全威脅,包括注入攻擊、跨站腳本攻擊、認(rèn)證和會(huì)話(huà)管理失效、不安全的加密存儲(chǔ)等。以下簡(jiǎn)要介紹一些常見(jiàn)的Web應(yīng)用和數(shù)據(jù)庫(kù)方面的安全威脅。
注入攻擊:包括SQL注入、OS注入等,是指攻擊者將惡意數(shù)據(jù)等作為命令或者查詢(xún)語(yǔ)句的一部分發(fā)送給處理程序來(lái)欺騙處理程序,以執(zhí)行計(jì)劃外的命令或者訪(fǎng)問(wèn)未被授權(quán)的數(shù)據(jù)。對(duì)網(wǎng)站威脅很大的SQL注入攻擊,其本質(zhì)是攻擊者利用網(wǎng)站應(yīng)用程序沒(méi)有對(duì)用戶(hù)輸入的數(shù)據(jù)進(jìn)行嚴(yán)格充分的合法性檢查等錯(cuò)誤在應(yīng)用程序中插入并執(zhí)行自己精心構(gòu)造的SQL語(yǔ)句。
舉一個(gè)用戶(hù)登錄驗(yàn)證的例子,當(dāng)?shù)卿浺粋€(gè)網(wǎng)站時(shí),用戶(hù)輸入自己的用戶(hù)名和密碼,點(diǎn)擊登錄按鈕,將會(huì)產(chǎn)生如下類(lèi)似的SQL查詢(xún)語(yǔ)句:

語(yǔ)句“——”將會(huì)注釋掉后邊的語(yǔ)句,而語(yǔ)句“or 1=1”將會(huì)導(dǎo)致查詢(xún)條件永遠(yuǎn)為真,進(jìn)而返回用戶(hù)表中的所有數(shù)據(jù)紀(jì)錄,從而使得返回的結(jié)果不為空,用戶(hù)因此也就獲得了所謂的“授權(quán)”訪(fǎng)問(wèn)資格。
跨站腳本(XSS)攻擊:當(dāng)網(wǎng)站應(yīng)用程序?qū)⑺蛘邤y帶的腳本等不可信數(shù)據(jù)不經(jīng)有效驗(yàn)證就輸出發(fā)送給客戶(hù)端瀏覽器時(shí),跨站腳本攻擊就可能發(fā)生。攻擊者利用跨站腳本可以在受害者的瀏覽器上執(zhí)行腳本,進(jìn)而劫持用戶(hù)會(huì)話(huà),危害網(wǎng)站安全。
根據(jù)注入的途徑,XSS分為Reflected(反射型)XSS、Stored(存儲(chǔ)型)XSS 、DOM-based(基于DOM文檔對(duì)象模型)XSS三種。
反射型XSS:也稱(chēng)First-order XSS,是指網(wǎng)站應(yīng)用程序?qū)⒂脩?hù)表單中輸入的內(nèi)容,未經(jīng)安全檢查或重新編碼就立刻顯示在返回的頁(yè)面上,攻擊者插入的腳本會(huì)立即被執(zhí)行。
存儲(chǔ)型XSS:也稱(chēng)Second-order XSS,原理與基于反射的XSS類(lèi)似,它將惡意腳本等代碼提交并保存到服務(wù)器端的數(shù)據(jù)庫(kù)中,而后生成動(dòng)態(tài)網(wǎng)頁(yè)時(shí)從數(shù)據(jù)庫(kù)中取出惡意代碼并插入到相應(yīng)的頁(yè)面中,從而使得訪(fǎng)問(wèn)該頁(yè)面的用戶(hù)全部受到攻擊。存儲(chǔ)型XSS危害范圍比較大,并且不用像反射型XSS那樣需要采用社會(huì)工程學(xué)的方法誘騙用戶(hù)去點(diǎn)擊偽造的鏈接。
基于DOM的XSS:惡意代碼是借助于DOM本身的問(wèn)題植入的,它表現(xiàn)在客戶(hù)端的瀏覽器中,而惡意代碼則來(lái)源于別處(查詢(xún)字符串中,或調(diào)用其他的外部網(wǎng)站的內(nèi)容片段),這種XSS攻擊也需要攻擊者誘騙用戶(hù)點(diǎn)擊精心構(gòu)造的URL。
認(rèn)證和會(huì)話(huà)管理失效:用戶(hù)身份認(rèn)證不嚴(yán)密或缺失,會(huì)話(huà)功能配置不正確,導(dǎo)致攻擊者可以破譯密碼、會(huì)話(huà)令牌或者利用這些漏洞偽造其他用戶(hù)身份。
不安全的加密存儲(chǔ):許多Web應(yīng)用程序沒(méi)有使用恰當(dāng)?shù)募用芩惴▽?duì)用戶(hù)敏感信息(如個(gè)人信息、信用卡信息、認(rèn)證證書(shū)等)進(jìn)行加密,攻擊者可能利用這種缺陷實(shí)現(xiàn)身份偽造、信用卡盜用等。
不安全的重定向和轉(zhuǎn)發(fā):網(wǎng)站互聯(lián)的特性使得Web應(yīng)用需要在不同網(wǎng)頁(yè)和網(wǎng)站間進(jìn)行重定向和轉(zhuǎn)發(fā),而在確定重定向地址時(shí)采用不可信的數(shù)據(jù),沒(méi)有進(jìn)行適當(dāng)?shù)尿?yàn)證,從而使得攻擊者可以將用戶(hù)重定向轉(zhuǎn)發(fā)到掛馬、釣魚(yú)等惡意網(wǎng)站,或者使用戶(hù)訪(fǎng)問(wèn)了未經(jīng)授權(quán)的頁(yè)面。
網(wǎng)頁(yè)篡改攻擊:網(wǎng)頁(yè)篡改是指攻擊者對(duì)被攻陷網(wǎng)站的文件進(jìn)行增加、刪除、修改等操作,破壞網(wǎng)站的完整性和保密性,進(jìn)而通過(guò)網(wǎng)站后門(mén)工具(webshell)提升權(quán)限并達(dá)到長(zhǎng)期控制網(wǎng)站服務(wù)器的目的。網(wǎng)頁(yè)被篡改、服務(wù)器被控制,將會(huì)嚴(yán)重影響網(wǎng)站所有者(特別是政府、銀行、電子商務(wù)行業(yè)等)的信譽(yù),使其經(jīng)濟(jì)利益受損,并且會(huì)嚴(yán)重影響到用戶(hù)的使用安全。
網(wǎng)頁(yè)惡意代碼:攻擊者向數(shù)據(jù)庫(kù)中注入惡意代碼或者直接修改網(wǎng)站的網(wǎng)頁(yè)文件使之成為攜帶木馬等惡意代碼的“掛馬”網(wǎng)頁(yè),當(dāng)存在安全漏洞的用戶(hù)訪(fǎng)問(wèn)這些頁(yè)面時(shí),惡意代碼會(huì)劫持用戶(hù)瀏覽器,侵入用戶(hù)系統(tǒng),對(duì)用戶(hù)系統(tǒng)進(jìn)行攻擊破壞并竊取用戶(hù)敏感信息。這種攻擊方式具有很強(qiáng)的隱蔽性,用戶(hù)僅僅瀏覽了網(wǎng)頁(yè)即會(huì)受到攻擊,潛在危害性比較大。
4安全管理層次
“三分技術(shù)七分管理”,一直是安全領(lǐng)域的重要準(zhǔn)則。只重技術(shù)而忽視管理,沒(méi)有相應(yīng)的管理制度,人員安全意識(shí)淡薄,都可能給網(wǎng)站安全帶來(lái)極大的隱患。

1 基礎(chǔ)網(wǎng)絡(luò)層次防護(hù)
基礎(chǔ)網(wǎng)絡(luò)層次的防護(hù)包括網(wǎng)絡(luò)設(shè)備的物理防護(hù)及對(duì)一些常見(jiàn)的網(wǎng)絡(luò)安全威脅的防范。
物理防護(hù)指采取防火、防水、防震等防止自然力量破壞的措施;在網(wǎng)絡(luò)環(huán)境中設(shè)置屏障和隔離設(shè)施,防止來(lái)自物理線(xiàn)路的電磁信號(hào)竊聽(tīng),在網(wǎng)管中心、重要的數(shù)據(jù)交換和存儲(chǔ)中心,安裝溫度、濕度控制設(shè)備,采取防靜電、接地、物理屏蔽或防電磁干擾等措施;使用UPS等防斷電設(shè)備,使得環(huán)境對(duì)網(wǎng)絡(luò)設(shè)備的影響降到最低;針對(duì)網(wǎng)絡(luò)設(shè)備進(jìn)行冗余備份,防止人為或設(shè)備自身的故障對(duì)網(wǎng)絡(luò)環(huán)境造成影響,加強(qiáng)網(wǎng)絡(luò)設(shè)備等的防盜保護(hù)措施等。
對(duì)于一些常見(jiàn)的網(wǎng)絡(luò)安全威脅,采用傳統(tǒng)的防火墻,入侵檢測(cè)/防御系統(tǒng),漏洞掃描相結(jié)合的方式,進(jìn)行合理恰當(dāng)?shù)呐渲茫梢杂行У貞?yīng)對(duì)。在網(wǎng)絡(luò)層使用IPsec VPN,在應(yīng)用層和數(shù)據(jù)鏈路層使用會(huì)話(huà)及用戶(hù)(或主機(jī))驗(yàn)證和數(shù)據(jù)加密鏈接技術(shù),可以有效地防范會(huì)話(huà)劫持等攻擊。
2 宿主操作系統(tǒng)安全防護(hù)
宿主操作系統(tǒng)是Web服務(wù)器及數(shù)據(jù)庫(kù)管理系統(tǒng)運(yùn)行的基礎(chǔ),宿主操作系統(tǒng)的漏洞、錯(cuò)誤的配置及不必要的服務(wù)安裝都將造成Web應(yīng)用系統(tǒng)不安全。位于OWASP TOP 10第六位的“安全配置錯(cuò)誤”正體現(xiàn)了這一點(diǎn)。
保障宿主操作系統(tǒng)的安全有以下措施:
(1)及時(shí)了解每個(gè)已部署環(huán)境的所有最新軟件的更新和補(bǔ)丁,并進(jìn)行升級(jí)部署等,周期性地運(yùn)用自動(dòng)掃描工具來(lái)檢測(cè)配置錯(cuò)誤或缺失的補(bǔ)丁;
(2)修改系統(tǒng)安裝時(shí)的默認(rèn)設(shè)置,在Windows系統(tǒng)中,使用NTFS格式分區(qū),并進(jìn)行相應(yīng)合適的權(quán)限分配,關(guān)閉默認(rèn)共享,修改默認(rèn)的遠(yuǎn)程服務(wù)端口。禁止建立空連接,卸載Net-Bios協(xié)議,或者關(guān)閉139端口,僅開(kāi)放Web服務(wù)、數(shù)據(jù)庫(kù)服務(wù)等端口;關(guān)閉卸載不必要的服務(wù),改名或關(guān)掉不安全的組件;
(3)安裝相應(yīng)的防病毒反間諜軟件,可以有效的應(yīng)對(duì)常見(jiàn)的病毒及間諜軟件,同時(shí)對(duì)網(wǎng)站后門(mén)木馬的運(yùn)行也有一定的抑制作用。
3 Web應(yīng)用和數(shù)據(jù)庫(kù)安全防護(hù)
對(duì)Web應(yīng)用的攻擊大部分利用Web應(yīng)用本身的缺陷或漏洞,采用了“正常”和“合法”的途徑對(duì)Web應(yīng)用進(jìn)行攻擊,傳統(tǒng)的安全防范措施不能有效地應(yīng)對(duì)這種類(lèi)型的攻擊。注入和跨站腳本攻擊是Web應(yīng)用10大安全威脅的前2位,以下主要對(duì)SQL注入和跨站腳本攻擊(XSS)這兩種安全威脅的防范進(jìn)行分析,同時(shí)也將介紹其他一些安全威脅的防范措施。
SQL注入防范
SQL注入的本質(zhì)是應(yīng)用程序?qū)τ脩?hù)數(shù)據(jù)合法性的檢查不足或缺失,防止SQL注入的措施有以下幾種:
(1)變量標(biāo)準(zhǔn)化(Variable Normalization):這種方法通過(guò)學(xué)習(xí)提取基本的SQL語(yǔ)句結(jié)構(gòu),并定義一系列所允許執(zhí)行的標(biāo)準(zhǔn)化的SQL語(yǔ)句,當(dāng)一個(gè)SQL注入攻擊發(fā)生時(shí),攻擊語(yǔ)句會(huì)改變SQL語(yǔ)句的基本結(jié)構(gòu),系統(tǒng)探測(cè)到與所允許執(zhí)行的SQL語(yǔ)句不符,從而拒絕執(zhí)行注入的語(yǔ)句。這種方法引入一個(gè)代理驅(qū)動(dòng)——SQLBlock,需要的開(kāi)銷(xiāo)很小,并且不需要修改客戶(hù)端任何源代碼就可以與各種數(shù)據(jù)庫(kù)服務(wù)器同時(shí)工作。但是這種方法也有缺陷,它不適用于使用關(guān)鍵字in進(jìn)行范圍限制查詢(xún),因?yàn)檫x擇的多樣化使其無(wú)法構(gòu)造出標(biāo)準(zhǔn)化的SQL語(yǔ)句基本結(jié)構(gòu)。
(2)AMNESIA:這種方法采用基于模型的方法來(lái)檢測(cè)非法的語(yǔ)句,它包括靜態(tài)分析和動(dòng)態(tài)監(jiān)控兩部分。靜態(tài)分析部分找出源碼中所有動(dòng)態(tài)SQL語(yǔ)句的構(gòu)造點(diǎn),為動(dòng)態(tài)SQL語(yǔ)句建立自動(dòng)機(jī)模型,同時(shí)在原系統(tǒng)中插入檢測(cè)代碼;動(dòng)態(tài)監(jiān)控部分檢查提交的SQL語(yǔ)句是否滿(mǎn)足自動(dòng)機(jī)模型,如果滿(mǎn)足則是正常操作,否則,就認(rèn)為發(fā)生了SQL注入攻擊。這種方法的主要弱點(diǎn)是需要能夠獲得應(yīng)用程序的源代碼,并且需要修改源代碼。
(3)SQL DOM:這是一個(gè)對(duì)象模型,它允許通過(guò)操縱對(duì)象來(lái)構(gòu)造SQL語(yǔ)句,從而將查詢(xún)構(gòu)建過(guò)程轉(zhuǎn)變成API類(lèi)型檢查的系統(tǒng)過(guò)程。它創(chuàng)建新的SQL命令不產(chǎn)生包含SQL關(guān)鍵字的字符串,這樣在應(yīng)用程序中就沒(méi)有了SQL注入攻擊主要目標(biāo)的SQL字符串的產(chǎn)生。SQL DOM提供了防范重言式,非法或邏輯不正確語(yǔ)句,聯(lián)合查詢(xún)語(yǔ)句以及推理攻擊、替換編碼的機(jī)制。SQL DOM也有缺陷,它要求新的編程模式,并且對(duì)存儲(chǔ)過(guò)程的攻擊沒(méi)有任何防護(hù)。
(4)SQLRand:基于命令集隨機(jī)化技術(shù)的SQLRand方法是在開(kāi)始時(shí)對(duì)源代碼中包含動(dòng)態(tài)SQL語(yǔ)句模版中的關(guān)鍵字進(jìn)行隨機(jī)化編碼處理,這些編碼規(guī)則攻擊者事先是不知道的。在運(yùn)行時(shí),對(duì)隨機(jī)化編碼之后的SQL命令進(jìn)行解碼,如果解碼失敗則表示遭受到了SQL注入攻擊。例如:
隨機(jī)數(shù)為整數(shù)123,則編碼后SQL命令為

這種方法的缺點(diǎn)是需要擁有源碼和修改源碼,同時(shí)需要改變?cè)袠I(yè)務(wù)系統(tǒng)的部署,方案復(fù)雜。
(5) Defensive Programming:Web應(yīng)用開(kāi)發(fā)過(guò)程中采取防范性的編程方法、過(guò)濾機(jī)制,以及對(duì)用戶(hù)輸入等進(jìn)行SQL關(guān)鍵字及特殊符號(hào)過(guò)濾,這種方法存在過(guò)濾不全面的問(wèn)題和被繞過(guò)的可能,不能完全防范注入攻擊。
以上幾種方法主要針對(duì)在Web應(yīng)用程序本身進(jìn)行SQL注入的檢測(cè)和防范,對(duì)于已經(jīng)部署且存在SQL注入漏洞的Web應(yīng)用程序,重新實(shí)現(xiàn)Web應(yīng)用程序往往不現(xiàn)實(shí)且代價(jià)比較大。針對(duì)此種情況,研究和關(guān)注的技術(shù)重點(diǎn)主要是過(guò)濾技術(shù),它可以保證在不修改Web應(yīng)用源碼的基礎(chǔ)上防范SQL注入攻擊。比如Web應(yīng)用防火墻,以及微軟的UrlScan均采用過(guò)濾技術(shù),根據(jù)配置對(duì)有害信息進(jìn)行過(guò)濾,從而保障Web應(yīng)用的安全。當(dāng)然由于配置信息的不同,可能產(chǎn)生誤報(bào)或者漏報(bào)的現(xiàn)象。浙江大學(xué)蔡亮等人提出的數(shù)據(jù)庫(kù)防火墻的參考模型對(duì)SQL注入防范也是一種不錯(cuò)的選擇,它提供了全面的語(yǔ)義控制和SQL API流的審查,并且對(duì)數(shù)據(jù)庫(kù)實(shí)施基于內(nèi)容驅(qū)動(dòng)的訪(fǎng)問(wèn)控制。
XSS攻擊防范
XSS(跨站腳本)攻擊的本質(zhì)是惡意攻擊者向Web頁(yè)面或URL中插入惡意腳本,當(dāng)用戶(hù)瀏覽該頁(yè)時(shí),嵌入其中的惡意腳本會(huì)被執(zhí)行,從而達(dá)到惡意攻擊用戶(hù)的特殊目的。
常用的源程序級(jí)防范XSS攻擊的技術(shù)有:
(1)與SQL注入防范的建議類(lèi)似,對(duì)所有輸入中的script、iframe等關(guān)鍵字進(jìn)行嚴(yán)格的檢查。這些輸入包括用戶(hù)可以直接與之交互的輸入接口,URL中的參數(shù),HTTP請(qǐng)求Cookie中的變量,HTTP請(qǐng)求頭部中的變量等;
(2)驗(yàn)證數(shù)據(jù)的類(lèi)型、格式、長(zhǎng)度、范圍和內(nèi)容等;
(3)在客戶(hù)端和服務(wù)器端同時(shí)做數(shù)據(jù)的驗(yàn)證與過(guò)濾,使得客戶(hù)端驗(yàn)證被繞過(guò)時(shí),驗(yàn)證與過(guò)濾機(jī)制依然有效;
(4)無(wú)論輸入時(shí)是否做了編碼等操作,輸出時(shí)都要對(duì)輸出數(shù)據(jù)進(jìn)行檢查;
(5)使用黑盒Web應(yīng)用測(cè)試工具及白盒漏洞掃描工具對(duì)源程序進(jìn)行檢測(cè)。
以上方法主要針對(duì)源程序進(jìn)行XSS攻擊的防范,對(duì)于已經(jīng)部署的Web應(yīng)用程序主要的防范措施有:
(1)客戶(hù)端防范:在客戶(hù)端增加腳本審查機(jī)制;在客戶(hù)端增加Web-proxy轉(zhuǎn)發(fā)所有的流量,相當(dāng)于一個(gè)應(yīng)用層防火墻。現(xiàn)在IE8中已經(jīng)推出防跨站腳本漏洞的功能。這種客戶(hù)端防范的方法往往需要在客戶(hù)端安裝更新或者額外的軟件,實(shí)施起來(lái)不太方便;
(2)服務(wù)器端防范:除了源程序級(jí)的防范技術(shù)和在客戶(hù)端及服務(wù)器端之間增加應(yīng)用防火墻外,Peter Wurzinger等人提出在反向代理服務(wù)器上對(duì)Web應(yīng)用的響應(yīng)進(jìn)行腳本檢測(cè),如發(fā)現(xiàn)異常腳本則提示客戶(hù)端或簡(jiǎn)單的對(duì)異常腳本進(jìn)行刪除;
(3)用戶(hù)自身防范:除了存儲(chǔ)型XSS攻擊外,其他的XSS攻擊往往需要攻擊者誘騙用戶(hù)點(diǎn)擊精心構(gòu)造的URL。因此,用戶(hù)(特別是網(wǎng)站管理員)需要提高自己的安全意識(shí),拒絕點(diǎn)擊那些陌生或不可信站點(diǎn)的鏈接。
其他安全防護(hù)措施
為了防范“認(rèn)證和會(huì)話(huà)管理失效”,需要開(kāi)發(fā)一套統(tǒng)一的認(rèn)證和會(huì)話(huà)管理機(jī)制,同時(shí)對(duì)Web服務(wù)器相關(guān)功能進(jìn)行正確合理的配置。
為了防范“網(wǎng)頁(yè)篡改攻擊”,可以采用專(zhuān)業(yè)的網(wǎng)頁(yè)防篡改系統(tǒng),當(dāng)前主流的防篡改軟件都采用基于底層文件過(guò)濾驅(qū)動(dòng)技術(shù)和事件觸發(fā)方式相結(jié)合的第三代防竄改技術(shù),實(shí)時(shí)監(jiān)測(cè)網(wǎng)站文件夾內(nèi)容,攔截非法的增、刪、改等操作,使用戶(hù)無(wú)法看到被篡改的頁(yè)面。
對(duì)于掛馬等惡意網(wǎng)站,蜜網(wǎng)項(xiàng)目組的高交互蜜罐技術(shù)可以有效地對(duì)惡意代碼進(jìn)行檢測(cè),它通過(guò)虛擬機(jī)里真實(shí)的瀏覽器等客戶(hù)端與惡意網(wǎng)頁(yè)進(jìn)行交互,根據(jù)事先定義好的白名單等規(guī)則以及與網(wǎng)頁(yè)交互后系統(tǒng)的各項(xiàng)狀態(tài)來(lái)判斷網(wǎng)頁(yè)是否是惡意的。
4 網(wǎng)站安全管理
除了技術(shù)層次的安全防護(hù)外,網(wǎng)站的安全管理也是必不可少的環(huán)節(jié)。首先,在人員保障方面,需要配備專(zhuān)業(yè)的技術(shù)人才從事網(wǎng)站安全管理工作,負(fù)責(zé)網(wǎng)絡(luò)、操作系統(tǒng)、Web服務(wù)器的安全配置;同時(shí),制定用戶(hù)使用網(wǎng)絡(luò)資源的規(guī)章制度、機(jī)房管理制度,明確系統(tǒng)管理員、網(wǎng)絡(luò)管理員及運(yùn)行維護(hù)人員的相關(guān)權(quán)限,建立值班制度、密碼管理制度等,制定計(jì)算機(jī)病毒預(yù)報(bào)制度和安全漏洞預(yù)報(bào)制度,建立病毒、安全應(yīng)急響應(yīng)及處置預(yù)案,制定安全日志管理制度等;最后,要定期對(duì)網(wǎng)站管理人員等進(jìn)行培訓(xùn),提高人員的安全防范意識(shí)和技術(shù)水平,增強(qiáng)人員的責(zé)任感和防范各種社會(huì)工程學(xué)攻擊的能力。
網(wǎng)站安全是一個(gè)相對(duì)的概念,網(wǎng)站的絕對(duì)安全是不存在,合理有效地運(yùn)用各種安全防范措施可以最大程度地保障網(wǎng)站的正常穩(wěn)定運(yùn)行。
(作者單位為鄭州大學(xué)河南省教育科研網(wǎng)網(wǎng)絡(luò)中心)