王志剛 曲善廣 吳東明
信息工程大學 河南 450004
近年來,各種Web網站攻擊事件是頻頻發生, SQL注入,網頁被篡改、信息失竊、甚至被利用成傳播木馬的載體等等。Web安全威脅形勢日益嚴峻,Web安全防護該何去何從?如何保證Web應用程序自身的安全性,更好的為用戶提供快捷穩定的服務,是我們必須應對的挑戰。
Web網站的體系架構一般分為三層,底層是操作系統,中間層是Web服務器、數據庫服務等通用組件,上層是內容和業務相關的Web應用程序,這三層架構中任何一層出現了安全問題都會導致整個Web網站受到威脅,如圖1所示。

圖1 Web網站安全威脅架構示意圖
從上圖我們可以看出,這三層架構中任何一層都不可避免地存在漏洞,具有一定的安全隱患,具體如下。
計算機病毒、后門和黑客攻擊是操作系統所受到的安全威脅中最為人們熟悉的幾種形式。
(1) 計算機病毒。本質上是一個程序或一段可執行代碼,并具有自我復制能力及隱蔽性、傳染性和潛伏性等特征,如CIH病毒,Ska蠕蟲等,其通常處于潛伏狀態,但在特定的邏輯條件滿足的情況下會激活和執行,對系統功能造成嚴重破壞。
(2) 后門(或稱天窗)也是構成操作系統威脅的重要形式之一。其本質上通常是為方便操作系統測試而在操作系統內部預留的特別命令入口,或者是專門在操作系統內部設置的可供滲透的缺陷或漏洞,一般不容易發現。但一經發現和非法利用,則會穿透整個系統安全機制并造成嚴重的后果。
(3) 黑客攻擊。則表現為具備某些計算機專業知識和技術的人員通過分析挖掘系統漏洞,利用網絡對特定系統進行破壞,使功能癱瘓、信息丟失、系統被入侵等,常見的攻擊方式如拒絕服務攻擊,即通過消耗網絡帶寬或頻發連接請求阻斷系統對合法用戶的正常服務或利用操作系統漏洞,獲得目標用戶系統的控制權,進行惡意操作,修改網站內容,竊取信息,甚至系統崩潰。
通用組件漏洞主要是指Web服務器組件(IIS或Apache等)和數據庫(SQL或Oracle等)存在漏洞,影響到Web應用程序的安全。
1.2.1 Web服務器組件漏洞
IIS或Apache等這些服務組件,作為Web應用程序的載體,一旦出現安全問題,那么運行在其上的Web應用程序的安全也無法得到保障。在默認狀態下這些服務組件也存在不少安全漏洞,如Windows server操作系統自帶的IIS6在默認狀態下存在文件解析漏洞,Apache HTTP Server畸形Range選項處理遠程拒絕服務漏洞等,許多非法攻擊者往往會充分利用這些漏洞,來對服務器系統進行安全攻擊,最終導致網站被黑或網絡管理權限發生丟失。
1.2.2 數據庫安全漏洞
SQLsever、Oracle等數據庫安全威脅從來源上,大致可以分為四類:缺省安裝漏洞、人為使用上的漏洞、數據庫設計缺陷、數據庫產品的bug。
(1) 缺省安裝漏洞。在主流數據庫中往往存在若干缺省數據庫用戶,并且缺省密碼都是公開的,攻擊者完全可以利用這些缺省用戶登錄數據庫。
(2) 人為使用上的漏洞。在很多系統維護中,數據庫管理員并未細致地按照最小授權原則給予數據庫用戶授權,一個普通的數據庫維護人員被授予了任意表的創建和刪除、訪問權限,甚至是給予DBA角色。另外,有些用戶口令復雜度不高,攻擊者可能暴力破解。
(3) 數據庫設計缺陷。有些數據以明文形式放置在存儲設備中,存儲設備的丟失將引起數據泄密風險。在數據庫中,以sys和sa為代表的系統管理員,可以訪問到任何數據;除了系統管理員,以用戶數據分析人員、程序員、開發方維護人員為代表的特權用戶,在特殊的時候,也需要訪問到敏感數據,從而獲得了權限,這些都為數據的泄密留下了極大的隱患。
(4) 數據庫產品的Bug。緩沖區溢出,使數據庫內核中存在對于過長的連接串、函數參數、SQL語句、返回數據不能嚴謹的處理,造成代碼段被覆蓋。拒絕服務攻擊漏洞,可以導致服務拒絕訪問,如命名管道拒絕服務、拒絕登錄、RPC請求拒絕服務等。權限提升漏洞,黑客攻擊者可以利用數據庫平臺軟件的漏洞將普通用戶的權限轉換為管理員權限。
Web應用程序風險經歷了從Web服務器的頻繁遭受攻擊,到針對PHP、ASP等動態網頁技術本身漏洞攻擊,再到現在的不局限于具體動態網頁實現技術的各種跨站腳本攻擊(XXS)和各種數據注入攻擊,攻擊的目標和手段不斷變化,其主要表現如下。
1.3.1 緩沖區溢出攻擊
緩沖區溢出是一種非常普遍、非常危險的漏洞,在各種操作系統、應用軟件中廣泛存在。這種攻擊方式一般是通過構造超長請求字符串來試探是否存在漏洞,幾乎可以應用于所有Web應用程序,在適當的條件下,緩沖區溢出攻擊往往能讓攻擊者在受害者機器上以相當高的權限執行任意命令,利用緩沖區溢出攻擊,可以導致程序運行失敗、系統關機、重新啟動等后果。
1.3.2 跨站腳本攻擊
攻擊者利用Web程序對用戶輸入輸出檢查不充分的時候,可盜用用戶賬戶/會話、cookie等,從而盜取用戶資料、進行病毒侵害或者利用用戶身份進行某種攻擊動作。
1.3.3 SQL注入攻
通過利用SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令,獲得系統或數據庫管理員權限,從而達到網頁篡改或破壞網頁的目的。
基于以上分析,要提高Web網站的安全性,要及時對服務器操作系統、Web通用組件和數據庫等進行補丁更新,安全設置,同時也要對Web 應用程序進行檢視,盡量減少網站的安全漏洞,主要防護措施如下。
密切注意操作系統官方網站發布的最新系統補丁、安全工具和建議,并對系統及時修補,卸載不必要的應用程序和組件,東西越少越安全,禁用SMB服務等不需要的服務,利用防火墻阻斷沒必要保留的監聽端口,對有交互式登陸權限的用戶人數加以限制等,嚴格物理安全規章制度避免遭受離線攻擊。
(1) Web服務器組件檢測。定期對Web服務器組件進行漏洞檢測,及時修補,只開啟必要的功能,關閉不需要的端口,設定賬戶專門運行Web服務器組件,上傳文件類型、上傳目錄權限、賬戶權限嚴格控制。
(2) 數據庫安全防護。對數據庫進行全面評估確定必要的功能,禁用不需要的組件減少攻擊面,定期進行漏洞檢查,及時修復補丁,設置本地數據庫專用賬戶,設置賬戶除運行數據服務外的最低權限,對數據庫系統安裝目錄及相應文件訪問權限進行控制。刪除默認、空白以及強度弱的登錄憑證。嚴控特權用戶,將用戶設置為組或者角色的一部分,通過角色來管理權限,找出不安全的配置,重新進行配置,對重要數據加密存儲,制定數據備份計劃,及時對數據進行備份,并妥善保存。
(1) 針對緩沖區溢出攻擊。一方面,要關閉一些不必要的特權程序,及時給程序和漏洞打上補丁,當然補丁的來源越可靠越好。另一方面,程序開發過程中代碼編寫要正確,在所有拷貝數據的地方進行長度和有效性檢查,確保目標緩沖區中數據不越界并有效,緩沖區不可執行。
(2) 針對“跨站點腳本”攻擊。對輸入參數中的特殊字符進行過濾,對輸出進行HTML編碼,如果應用程序設置了cookie,一定要使用微軟的HTTPonly cookie,定期檢查應用程序是否存在XSS漏洞。
(3) 針對“SQL注入”攻擊。凡是來自客戶端的輸入,都要進行完備的輸入檢查,做出盡可能多的限制。把SQL語句替換為存儲過程、預編譯語句或者使用ADO命令對象,如果因為某種原因無法使用存儲過程,就應該吧SQL語句修改為帶參數的查詢。鎖定ODBC不向客戶端返回出錯消息,鎖定對數據庫服務器的配置,對用戶、角色和訪問權限做出嚴格、明確的設定。
Web應用程序的迅速發展帶給我們更加愉悅的用戶體驗的同時必須看到,Web應用程序由于HTML代碼的透明性和HTTP協議本身的脆弱性,其漏洞利用技術難度要比傳統的蠕蟲和木馬技術低很多,Web應用程序的安全性也正變的越來越復雜。所謂“道高一尺魔高一丈”,我們必須要有創新的技術應用和強烈的責任心來應對Web應用程序不斷變化的安全建設需求。
[1] 秦育華.WEB網絡應用程序安全威脅及對策研究與探討[J].電腦知識與技術.2010.
[2] 李昌.Web應用安全防護技術研究與實現[D].湖南:中南大學.2010.
[3] 王燕,張新剛.數字化校園Web應用典型安全威脅及其防護
[J].實驗室研究與探索.2012.
[4] 黃瑋.Web應用程序發掘原理[J/OL].中國科技論文在線.http://www.paper.edu.cn/releasepaper/content/2006.
[5] George Kurtz(著),鐘向群(譯).黑客大曝光[M].北京:清華大學出版社.2010.