WEB安全評(píng)估與防護(hù)
隨著用戶對(duì)客戶端便利性的要求,加上服務(wù)提供方對(duì)減少客戶端開發(fā)成本和維護(hù)成本的期望,越來(lái)越多的應(yīng)用已經(jīng)轉(zhuǎn)為B/S(瀏覽器/服務(wù)器)結(jié)構(gòu)。由于用戶對(duì)頁(yè)面展現(xiàn)效果和易用性的要求越來(lái)越高,Web 2.0技術(shù)的
隨著用戶對(duì)客戶端便利性的要求,加上服務(wù)提供方對(duì)減少客戶端開發(fā)成本和維護(hù)成本的期望,越來(lái)越多的應(yīng)用已經(jīng)轉(zhuǎn)為B/S(瀏覽器/服務(wù)器)結(jié)構(gòu)。由于用戶對(duì)頁(yè)面展現(xiàn)效果和易用性的要求越來(lái)越高,Web 2.0技術(shù)的應(yīng)用越來(lái)越廣泛,這樣不但促進(jìn)了Web 應(yīng)用的快速發(fā)展,同時(shí)也使Web 應(yīng)用中所存在的安全問(wèn)題越來(lái)越明顯的暴露出來(lái)。
根據(jù)X-Force 的2008年年度報(bào)告,Web 安全事件數(shù)量增長(zhǎng)迅猛:
2008 年Web 安全事件增長(zhǎng)
在這種背景條件下,除了越來(lái)越多的站點(diǎn)因安全問(wèn)題而被攻擊者攻陷,導(dǎo)致重要信息泄漏,甚至成為傀儡主機(jī),大量傀儡主機(jī)被攻擊者利用發(fā)動(dòng)DDOS (分布式拒絕服務(wù)攻擊)??蛻舳艘裁媾R著很多安全問(wèn)題,惡意頁(yè)面的垃圾信息傳播、網(wǎng)頁(yè)掛馬導(dǎo)致的惡意程序的傳播等等。
一. 概述
1.1 什么是Web 安全評(píng)估
Web 安全評(píng)估主要在客戶的Web 平臺(tái)上,針對(duì)目前流行的Web 安全問(wèn)題分別從外部和內(nèi)部進(jìn)行黑盒和白盒安全評(píng)估。
根據(jù)Web 多層面組成的特性,通過(guò)對(duì)Web 的每一個(gè)層面進(jìn)行評(píng)估和綜合的關(guān)聯(lián)分析,從而查找Web 站點(diǎn)中可能存在的安全問(wèn)題和安全隱患。
1.2 Web安全評(píng)估與傳統(tǒng)評(píng)估服務(wù)的區(qū)別
與傳統(tǒng)的系統(tǒng)層面的評(píng)估不同,Web 站點(diǎn)的安全評(píng)估更加注重“關(guān)聯(lián)性”。
在傳統(tǒng)的系統(tǒng)層評(píng)估中,評(píng)估方向以系統(tǒng)自身安全性和策略的完善程度作為主要的評(píng)估方向,目標(biāo)僅在于揭露系統(tǒng)配置上的缺陷。
而在Web 站點(diǎn)評(píng)估中,除了需要關(guān)注系統(tǒng)層面的安全問(wèn)題外,還需要關(guān)注系統(tǒng)組件及第三方應(yīng)用程序設(shè)計(jì)的安全性。而在Web 站點(diǎn)中,安全問(wèn)題也不再像系統(tǒng)安全問(wèn)題那樣只具備單一的層面,而是多個(gè)層面疊加產(chǎn)生,因此Web 安全評(píng)估還需要更加注重各個(gè)層面安全問(wèn)題的關(guān)聯(lián)性,將這些問(wèn)題進(jìn)行必要的關(guān)聯(lián)分析后來(lái)確認(rèn)Web 站點(diǎn)整體的風(fēng)險(xiǎn)。
從這方面來(lái)說(shuō),Web 安全評(píng)估從人力到技術(shù)等各個(gè)方面的投入都要大于傳統(tǒng)的系統(tǒng)安全評(píng)估,而其所能發(fā)掘的問(wèn)題也是多層面的。
1.3 評(píng)估流程
二. 面臨的威脅
2.1 跨站腳本
跨站腳本攻擊全稱為Cross Site Script,一般縮寫為XSS 。此漏洞是由于應(yīng)用程序在服務(wù)器端獲取用戶提交的數(shù)據(jù)時(shí),沒(méi)有對(duì)內(nèi)容進(jìn)行驗(yàn)證。使得攻擊者精心構(gòu)造的惡意腳本在普通用戶的瀏覽器中得到執(zhí)行,除了可以竊取其他用戶、管理員的Cookie 外,還可以進(jìn)行掛馬,使得更多的訪問(wèn)者感染惡意代碼。在Web 2.0技術(shù)流行的今天,跨站腳本漏洞還有可能被蠕蟲利用,進(jìn)行大規(guī)模的攻擊,危害很大。
此類漏洞的根本原因是,開發(fā)人員在編寫應(yīng)用程序時(shí),對(duì)用戶提交的數(shù)據(jù)過(guò)濾的不夠嚴(yán)格,或者未過(guò)濾。
由于考慮在實(shí)際開發(fā)中需要過(guò)濾的內(nèi)容比較多,可能會(huì)有遺漏,因此我
,們建議開發(fā)人員在對(duì)用戶輸入的變量進(jìn)行檢查時(shí),使用白名單方式,即,檢查用戶傳入的變量是否是系統(tǒng)允許的類型,如果不是,就提示錯(cuò)誤,直到用戶傳入合法的數(shù)據(jù)。
2.2 注入攻擊
注入攻擊中最常見的是SQL 注入,此攻擊類型是由于應(yīng)用程序在服務(wù)器端獲取用戶提交的數(shù)據(jù)時(shí),沒(méi)有對(duì)內(nèi)容進(jìn)行嚴(yán)格驗(yàn)證,就拼接到SQL 語(yǔ)句中執(zhí)行。攻擊者可以精心構(gòu)造特定的SQL 語(yǔ)句使服務(wù)器執(zhí)行,從而進(jìn)行未授權(quán)的數(shù)據(jù)修改,甚至在數(shù)據(jù)庫(kù)服務(wù)器上執(zhí)行系統(tǒng)命令,對(duì)Web 站點(diǎn)的安全造成嚴(yán)重威脅。
此類漏洞的根本原因是,開發(fā)人員在編寫應(yīng)用程序時(shí),未使用安全的方式執(zhí)行SQL 查詢,而使用了拼接的方式將變量輸入到SQL 語(yǔ)句中。防范SQL 注入的最好方法是,修改應(yīng)用程序代碼,使用安全的方式執(zhí)行SQL 查詢,例如:使用PreparedStatement 方式。
2.3 越權(quán)操作
越權(quán)操作通常是由于應(yīng)用程序在編寫時(shí),對(duì)身份驗(yàn)證部分考慮的不全面。越權(quán)操作可以分為水平和垂直兩個(gè)方面:
水平越權(quán)是指:部分頁(yè)面未對(duì)訪問(wèn)者的角色進(jìn)行嚴(yán)格檢查,A 用戶可能利用應(yīng)用程序的漏洞,可以訪問(wèn)到B 用戶的數(shù)據(jù),進(jìn)行越權(quán)查看,修改,甚至刪除。此類越權(quán)操作可能導(dǎo)致用戶信息泄漏,或者被惡意篡改,嚴(yán)重影響網(wǎng)站的形象。如果發(fā)生在存放有重要數(shù)據(jù)的系統(tǒng)中,可能會(huì)導(dǎo)致直接或間接經(jīng)濟(jì)損失,甚至引發(fā)法律糾紛。
垂直越權(quán)是指:部分頁(yè)面未對(duì)訪問(wèn)者的角色進(jìn)行嚴(yán)格區(qū)分,普通用戶可能利用應(yīng)用程序的漏洞,將自己提升到高一級(jí)用戶的權(quán)限,例如管理員權(quán)限。此類越權(quán)操作可能導(dǎo)致管理員權(quán)限泄漏,攻擊者用管理員權(quán)限進(jìn)行一些非法操作,嚴(yán)重影響數(shù)據(jù)的安全性。如果管理員后臺(tái)合并有其他漏洞,例如:圖片上傳漏洞,攻擊者可以向系統(tǒng)中上傳webshell ,進(jìn)一步提升權(quán)限,最終獲得網(wǎng)站服務(wù)器的管理員權(quán)限,危害很大。
2.4 文件上傳
文件上傳漏洞指:開發(fā)人員編寫應(yīng)用程序時(shí),未對(duì)用戶上傳的文件的擴(kuò)展名進(jìn)行嚴(yán)格的檢查,從而導(dǎo)致攻擊者上傳webshell ,獲取到網(wǎng)站的權(quán)限。文件上傳大多數(shù)是由于開發(fā)人員的疏忽或者對(duì)安全的理解不深引發(fā)的。例如:開發(fā)人員只過(guò)濾了asp 擴(kuò)展名的文件,而未過(guò)濾asa 、cer 擴(kuò)展名的文件,而asa 、cer 擴(kuò)展名的文件也會(huì)被asp.dll 解析,從而導(dǎo)致webshell 被上傳。
建議開發(fā)人員在對(duì)用戶上傳的文件進(jìn)行操作時(shí),嚴(yán)格檢查擴(kuò)展名,與防范XSS 的方法類似,也使用白名單方式,例如:只允許用戶上傳jpg 、gif 、bmp 、zip 、rar 擴(kuò)展名的文件,其余擴(kuò)展名的文件禁止上傳。
2.5 信息泄露
,信息泄漏大致分為兩類:一類是由于應(yīng)用程序編寫時(shí)對(duì)錯(cuò)誤處理方便考慮不全面,使得用戶提交非法數(shù)據(jù)時(shí)應(yīng)用程序報(bào)錯(cuò),在錯(cuò)誤信息中可能包含大量操作系統(tǒng)版本、Web 服務(wù)器版本、網(wǎng)站在服務(wù)器上的絕對(duì)路徑等敏感信息。此類型漏洞攻擊者可能無(wú)法直接利用,但和其他漏洞結(jié)合起來(lái),就會(huì)對(duì)成功入侵起到很大的幫助。
還有一類是由于網(wǎng)站維護(hù)人員的疏忽,或者管理不規(guī)范,使得一些測(cè)試頁(yè)面或者備份頁(yè)面未及時(shí)刪除,或者網(wǎng)頁(yè)源代碼中的注釋過(guò)于詳細(xì),都可以不同程度的泄漏網(wǎng)站的信息。為攻擊者獲取網(wǎng)站權(quán)限創(chuàng)造便利條件。
2.6 第三方應(yīng)用程序安全性
由于互聯(lián)網(wǎng)已經(jīng)發(fā)展的很成熟,很多開發(fā)人員在開發(fā)某些模塊時(shí)可能會(huì)上網(wǎng)搜索一些現(xiàn)成的代碼,將其加入到自己的程序中,但由于網(wǎng)絡(luò)上開發(fā)人員的水平層次不齊,很多代碼的安全性很差,而開發(fā)人員將這些程序嵌入到自己的程序中,會(huì)導(dǎo)致安全問(wèn)題產(chǎn)生,如
fckeditor 、ewebeditor 等應(yīng)用程序在歷史上就發(fā)現(xiàn)過(guò)很多漏洞,成為很多攻擊者的突破口。
建議在系統(tǒng)上線前,要嚴(yán)格檢測(cè)每一個(gè)模塊的安全性,開發(fā)人員盡量不隨便使用網(wǎng)絡(luò)上的不成熟的代碼,如果使用,使用前需要進(jìn)行嚴(yán)格的安全檢查。
類似的需要引起注意的是,很多網(wǎng)站的首頁(yè)都嵌入了一些應(yīng)用,而這些應(yīng)用由第三方廠商提供,例如:XXX 客服系統(tǒng),我們的網(wǎng)站在引用這些應(yīng)用時(shí),需要在我們的首頁(yè)中嵌入一些代碼,如果第三方廠商的網(wǎng)站出現(xiàn)了安全問(wèn)題,那么就會(huì)直接影響到我們的網(wǎng)站的安全性。
建議在使用此類第三方應(yīng)用程序時(shí),一定要確認(rèn)廠商的規(guī)模及資質(zhì),盡量少嵌入第三方廠商的程序,以降低風(fēng)險(xiǎn)。
三. 評(píng)估方式
3.1 外部評(píng)估
外部評(píng)估是指測(cè)試人員由外部發(fā)起的、針對(duì)服務(wù)器和應(yīng)用服務(wù)的遠(yuǎn)程評(píng)估工作,主要模擬來(lái)自外部的惡意掃描等行為,以此發(fā)現(xiàn)暴露于網(wǎng)絡(luò)上的安全問(wèn)題。
3.1.1 操作系統(tǒng)及應(yīng)用服務(wù)安全性
操作系統(tǒng)及應(yīng)用服務(wù)器的安全性主要通過(guò)使用遠(yuǎn)程安全評(píng)估系統(tǒng)對(duì)操作系統(tǒng)和應(yīng)用服務(wù)層面進(jìn)行遠(yuǎn)程的安全測(cè)試,例如:極光遠(yuǎn)程安全評(píng)估系統(tǒng)等商業(yè)產(chǎn)品,測(cè)試中包含了常見的安全問(wèn)題:
遠(yuǎn)程緩沖區(qū)溢出漏洞
遠(yuǎn)程拒絕服務(wù)漏洞
,遠(yuǎn)程信息泄漏漏洞
遠(yuǎn)程身份驗(yàn)證漏洞
......
3.1.2 Web服務(wù)安全性
Web 服務(wù)的外部安全性主要通過(guò)使用遠(yuǎn)程Web 評(píng)估系統(tǒng)對(duì)站點(diǎn)進(jìn)行遠(yuǎn)程的安全測(cè)試,測(cè)試中包含了常見的Web 安全問(wèn)題:
跨站腳本漏洞
文件包含漏洞
命令執(zhí)行漏洞
目錄遍歷漏洞
信息泄漏漏洞
暴力破解漏洞
????
此部分工作也主要使用Web 安全評(píng)估系統(tǒng)進(jìn)行,由于網(wǎng)站上頁(yè)面數(shù)量和連接數(shù)量較多,使用自動(dòng)化工具可以明顯提高工作效率,防止遺漏。而且Web 安全評(píng)估系統(tǒng)都內(nèi)置了大量的插件,對(duì)已知的Web 安全漏洞可以快速發(fā)現(xiàn)。
除了使用Web 安全評(píng)估系統(tǒng)外,還需要人工進(jìn)行輔助分析,一方面需要確認(rèn)自動(dòng)化工具掃描結(jié)果的準(zhǔn)確性,是否誤報(bào);另一方面需要對(duì)一些工具無(wú)法檢查的地方進(jìn)行補(bǔ)充,最大化的發(fā)現(xiàn)網(wǎng)站存在的問(wèn)題。
3.2 內(nèi)部評(píng)估
內(nèi)部評(píng)估是指從內(nèi)部發(fā)起針對(duì)服務(wù)器配置、策略及代碼本身的安全檢查。相對(duì)外部安全的黑盒測(cè)試方式來(lái)講,內(nèi)部評(píng)估更近似于白盒測(cè)試,注重功能性及安全性的檢查,從根源上發(fā)現(xiàn)安全隱患。
3.2.1 系統(tǒng)安全策略檢查
針對(duì)操作系統(tǒng)層面,使用安全策略檢查工具進(jìn)行檢查,需要檢查的內(nèi)容如下: 用戶管理:是否有多余用戶,例如:開發(fā)用戶,測(cè)試用戶
,口令策略:是否設(shè)置口令策略,強(qiáng)制用戶使用強(qiáng)壯的密碼
不必要服務(wù):是否存在不需要的網(wǎng)絡(luò)服務(wù),例如:DHCP 、DNS 、FrontPage 擴(kuò)展
共享連接:是否存在不需要的共享連接:例如:windows 默認(rèn)共享,unix 的NFS 共享 文件系統(tǒng):是否使用可靠的文件系統(tǒng),例如:NTFS 文件系統(tǒng)
權(quán)限設(shè)置:是否對(duì)網(wǎng)絡(luò)服務(wù)的配置文件進(jìn)行了正確的設(shè)置,防止非法用戶篡改,提權(quán) 訪問(wèn)控制:是否對(duì)訪問(wèn)者的IP 地址進(jìn)行了限制
審計(jì)設(shè)置:是否對(duì)網(wǎng)絡(luò)服務(wù)啟用了審計(jì),審計(jì)日志的權(quán)限是否進(jìn)行了正確的設(shè)置
3.2.2 Web服務(wù)配置檢查
除了操作系統(tǒng)外,還需要對(duì)Web 服務(wù)的配置進(jìn)行檢測(cè),需要檢查的內(nèi)容如下: Web 服務(wù)是否安裝了不必要的組件
Web 服務(wù)的運(yùn)行身份是否正確設(shè)置
Web 服務(wù)的版本信息是否隱藏
Web 服務(wù)的目錄遍歷功能是否啟用
Web 服務(wù)是否設(shè)置了必要的ACL
Web 服務(wù)是否對(duì)隱秘頁(yè)面使用SSL 傳輸加密
Web 服務(wù)是否加強(qiáng)了日志記錄內(nèi)容
Web 服務(wù)是否進(jìn)行了嚴(yán)格的權(quán)限設(shè)置
3.2.3 數(shù)據(jù)庫(kù)安全檢查
網(wǎng)站評(píng)估中對(duì)數(shù)據(jù)庫(kù)權(quán)限進(jìn)行檢測(cè),是為了查看數(shù)據(jù)庫(kù)中權(quán)限是否得到了正確的設(shè)置,一方面保護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全,防止未授權(quán)用戶訪問(wèn);另一方面防止數(shù)據(jù)庫(kù)出現(xiàn)安全問(wèn)題后,進(jìn)一步影響數(shù)據(jù)庫(kù)服務(wù)器操作系統(tǒng)的安全,需要檢查的內(nèi)容如下:
數(shù)據(jù)庫(kù)是否為應(yīng)用程序建立了單獨(dú)的帳號(hào),避免應(yīng)用程序使用數(shù)據(jù)庫(kù)管理員等高權(quán)限的用戶訪問(wèn)數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是否為各個(gè)用戶劃分了角色,使不同的用戶訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象時(shí)權(quán)限有所區(qū)分
,對(duì)不用的用戶和角色賦予權(quán)限時(shí),是否只賦予了最低的權(quán)限
是否啟用了訪問(wèn)控制列表ACL ,防止無(wú)關(guān)用戶連接數(shù)據(jù)庫(kù)端口
3.2.4 代碼安全性檢查
3.2.4.1 掛馬檢測(cè)
攻擊者在發(fā)現(xiàn)網(wǎng)站存在漏洞,進(jìn)行利用,獲得一定權(quán)限后,向動(dòng)態(tài)網(wǎng)頁(yè)文件或數(shù)據(jù)庫(kù)中添加特定的字符串,正常用戶在訪問(wèn)該網(wǎng)頁(yè)后,執(zhí)行惡意代碼,可能導(dǎo)致感染病毒。在網(wǎng)站評(píng)估中需要網(wǎng)站的所有頁(yè)面進(jìn)行檢測(cè),確認(rèn)是否有特定的惡意字符串被插入。
此類檢查可以使用一些網(wǎng)絡(luò)安全產(chǎn)品完成,如:綠盟科技Web 應(yīng)用防火墻,或者綠盟科技極光遠(yuǎn)程安全評(píng)估系統(tǒng)的Web 掃描。
3.2.4.2 WebShell檢測(cè)
WebShell 是站長(zhǎng)用于管理服務(wù)器的一種asp/aspx/php/jsp等應(yīng)用程序,可以進(jìn)行在線編輯文件、上傳下載文件、查看數(shù)據(jù)庫(kù)、執(zhí)行任意程序命令等操作。如果被攻擊者利用,可以控制服務(wù)器。通常攻擊者在發(fā)現(xiàn)應(yīng)用程序有漏洞時(shí),會(huì)嘗試上傳WebShell ,因此在網(wǎng)站安全評(píng)估中需要對(duì)網(wǎng)站所在目錄中可能存在的WebShell 進(jìn)行檢測(cè)。
此類檢查可以使用一些網(wǎng)絡(luò)安全產(chǎn)品完成,如:綠盟科技Web 應(yīng)用防火墻,或者綠盟科技極光遠(yuǎn)程安全評(píng)估系統(tǒng)的Web 掃描。
3.2.4.3 代碼審計(jì)
代碼審計(jì)在安全開發(fā)中是很重要的一個(gè)環(huán)節(jié),遠(yuǎn)程漏洞掃描和滲透測(cè)試只是黑盒測(cè)試,對(duì)很多漏洞可能無(wú)法檢測(cè)。目前國(guó)內(nèi)大多數(shù)企業(yè)的測(cè)試部門由于對(duì)安全的理解不深,在傳統(tǒng)軟件質(zhì)量測(cè)試中無(wú)法發(fā)現(xiàn)代碼中存在的安全問(wèn)題。
進(jìn)行一次成功的代碼審計(jì)不僅可以發(fā)現(xiàn)應(yīng)用程序編寫時(shí)產(chǎn)生的安全漏洞及不規(guī)范的代碼,督促開發(fā)人員及時(shí)修正。同時(shí)也能提高開發(fā)人員的素質(zhì),從而提升應(yīng)用程序的質(zhì)量。
四. 防護(hù)策略
作為信息系統(tǒng)的一個(gè)典型應(yīng)用,網(wǎng)站的安全防護(hù)與信息系統(tǒng)一樣,涉及的層面比較多,可分為網(wǎng)絡(luò)層面、系統(tǒng)層面、一般服務(wù)組件如數(shù)據(jù)庫(kù)、通用軟件、常用軟件等、特定應(yīng)用,對(duì)于前三類防護(hù)手段是通用的,我們使用的是傳統(tǒng)的防護(hù)技術(shù)。如下圖:
,對(duì)網(wǎng)絡(luò)、通信協(xié)議、操作系統(tǒng)、數(shù)據(jù)庫(kù)等層面上的防護(hù)可以認(rèn)為是通用的,傳統(tǒng)的邊界安全設(shè)備,如防火墻、安全網(wǎng)關(guān)、IDS /IPS、審計(jì)產(chǎn)品、終端防護(hù)產(chǎn)品等,作為網(wǎng)站整體安全策略中不可缺少的重要模塊,其防護(hù)效果是比較有效的。
但在對(duì)WEB 站點(diǎn)采用傳統(tǒng)技術(shù)手段進(jìn)行安全防護(hù)的同時(shí),也要充分考慮如何針對(duì)用戶特定應(yīng)用的應(yīng)用層面脆弱性及威脅進(jìn)行安全保障。由于WEB 應(yīng)用程序本身具備個(gè)性化的特點(diǎn),因此如果需要減少WEB 應(yīng)用程序本身所面臨的威脅,僅僅依靠通用產(chǎn)品就顯得多少有些力不從心了。
因此,對(duì)WEB 應(yīng)用程序的防護(hù)并不能單單考慮被動(dòng)的、通用的防護(hù)方式,而需要以更為主動(dòng)的方式進(jìn)行,如,在程序的設(shè)計(jì)過(guò)程中的功能安全性的考慮,在開發(fā)過(guò)程中的安全測(cè)試及上線前的代碼審計(jì)等工作。通過(guò)這樣一系列工作將安全滲透到每一個(gè)環(huán)節(jié)中,增加安全的主動(dòng)性,以此達(dá)到應(yīng)用程序安全、穩(wěn)定。