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