張紅瑞 郝建 呂延崗
摘要:緊密結合OWASP和Trust Wave的安全報告,進行Web應用相關安全威脅(漏洞)特征的分析和提取,并在此基礎上設計和實現Web應用安全攻防實訓平臺,集成了多種類型的Web系統和應用漏洞。在Web應用安全攻防實訓平臺上,對SQL注入攻防過程進行真實訓練,使用戶能清晰地看到攻擊行為、過程、結果,并能夠有針對性地提出SQL注入安全改進建議和完成相關安全措施部署。
關鍵詞:OWASP;Web應用漏洞;安全攻防;實訓平臺;SQL注入
一、引言
隨著計算機與互聯網的快速發展,Web應用已經深入各個領域當中。但是由于 Web 開發人員能力的良莠不齊,致使大量的站點存在著 Web應用安全漏洞,這就給攻擊者打開方便之門。世界上權威的Web安全與數據庫安全研究組織OWASP(Open Web Application Security Project)提供的OWASP TOP10 WEB安全報告,總結了Web應用程序最可能、最常見、最危險的十大安全威脅,包括SQL注入漏洞;跨站腳本(XSS);直接引用安全漏洞;跨站請求偽造(CSRF);配置安全缺陷;加密存儲威脅;未檢驗重定向等。Trust Wave公司在其2012 Global Security Report的十大Web應用安全威脅包括SQL注入漏洞;邏輯缺陷;跨站腳本;授權旁路;會話處理缺陷;旁路認證;跨站請求偽造;源代碼泄露;詳細的錯誤信息;脆弱的第三方軟件等。
Web應用安全受到越來越多的攻擊者的關注,一方面是由于傳統的C/S架構方式逐漸在往“瘦客戶端”的B/S架構上遷移,而且其應用與數據庫系統的結合也更加緊密,使得存在安全漏洞的環節增多;另一方面是由于防火墻和IDS/IPS可以關閉不必要暴露的端口,但是對于Web應用常用的80端口都是對外開放的,這樣使得攻擊者可以方便地借助于這個通道進行攻擊或者執行惡意的操作。
二、系統框架設計
基于B/S架構的Web應用安全攻防實訓平臺允許用戶使用瀏覽器與站點進行交互操作,并且可以通過應用來訪問后臺數據庫系統,其架構主要包括以下方向。
1.Web應用系統。采用標準HTML代碼進行編寫用于顯示數據和接收用戶輸入的數據,在Net Framework框架基礎上采用C#進行編寫代碼接受用戶端傳遞過來的參數,負責處理業務邏輯和數據庫訪問等功能。
2.Web應用服務器。用來支持Web應用和用戶瀏覽器之間的正常通信,負責處理HTTP請求/響應消息等操作,采用Windows自帶的IIS程序,根據實際需要可以擴展到Apache、Lighttpd等Web應用服務器。
3.操作系統和數據庫系統。操作系統默認采用Windows Sever系列,后臺數據庫默認采用SQL Server作為后臺數據庫系統,根據實際需要可以進行相應擴展My SQL、Access、Oracle等等。
攻防實訓平臺的硬件部分包括Web應用服務器、數據庫服務器、防火墻、教師端和學生端等,其系統拓撲圖如圖1所示。學生端分為校內學生端和校外學生端兩組,其中校外學生端通過防火墻進行訪問、分析和處理。
圖1 系統拓撲圖
三、安全漏洞設計和利用
在OWASP和TrustWave的報告中,SQL注入漏洞都被列為最危險的攻擊形式之一,因此,提取SQL注入漏洞作為分析和測試用例。
1.SQL注入漏洞分析。其原理是通過把SQL命令插入到Web表單遞交、或輸入域名或頁面請求的查詢字符串中,最終達到欺騙服務器執行惡意的SQL命令,通過構造巧妙的遞交參數構造巧妙的SQL語句,從而成功獲取想要的數據。其嚴重后果會使得攻擊者得到在數據庫服務器上執行命令的權限,并且甚至可以獲得管理員的權限進行更為危險的操作。
2.SQL注入漏洞構造。為了利用SQL注入漏洞,攻擊者必須找到一個參數傳遞數據,然后這個參數傳送到操作數據庫的SQL語句中,Web應用程序使用該語句操作數據庫,可能導致信息泄漏、數據丟失、記錄篡改等危害。
在Web應用安全攻防平臺的顯示頁面(view.aspx)的部分代碼編寫如下。
SqlCommand Cmd=new SqlCommand("select*from NewView where id =" +Request.QueryString["id"], Conn);
SqlDataReader Dr = Cmd.ExecuteReader();
其傳遞過來的參數id,沒有做任何的限制和處理就傳遞給操作數據庫的SQL語句,那么該語句就產生了SQL注入漏洞。
3.模擬攻擊過程。在構造完SQL注入漏洞以后,使用經典的參數后面附帶單引號()、and 1=1、and 1=2和分號(;)測試數據,分析其返回結果。對于SQL Server的數據庫可以采用錯誤的安全配置和猜解管理員數據表及其內容的方式進行模擬攻擊。
(1)SA用戶權限利用。如果Web應用采用了SA用戶進行數據連接,那么可以構造特殊的SQL Server命令來提交到查詢字符串中,利用SQL Server自帶的xp_cmdshell操作系統外殼命令來執行相應的系統命令,提交的頁面字符串(Web應用地址:192.168.2.5)為:
http://192.168.2.5/view.aspx?id=28;exec master.dbo.xp_cmdshell "net user test test /add"
對于SQL Server阻止了對xp_cmdshell的訪問情況,可以使用sp_configure來恢復和啟用xp_cmdshell,提交的頁面字符串為:
http://192.168.2.5/view.aspx?id=28;EXEC sp_configure 'show advanced options',1 RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1 RECONFIGURE
再次執行xp_cmdshell操作系統外殼命令,如果執行成功即可添加一個系統用戶。
(2)數據表的猜解。對于非SQL Server數據庫的情況,比如,Access和MySQL數據庫類型或者Web應用沒有使用SA用戶進行數據庫連接,那么可以通過SQL注入來完成數據表的猜解,其過程可以分為:猜解表名和記錄數;猜解字段名稱;猜解字段長度;猜解字段字符等步驟。
猜解表名提交的頁面字符串為:
http://192.168.2.5/View.aspx?id=28 and exists(select * from admin)
猜解記錄數提交的頁面字符串為:
http://192.168.2.5/View.aspx?id=28 and 5<(select count(*) from admin)
其余提交的頁面字符串都可以通過手工構造SQL命令或者使用SQL注入工具來自動完成。
4.獲得服務器管理權限。在獲得Web應用管理權限之后,可以進入其管理后臺利用其Web編輯器的上傳功能將準備好的Web Shell上傳到Web服務器上。根據其Web應用服務器類型的不同,可以上傳ASP(.NET)、PHP和JSP等類型的Web Shell,以獲得服務器的管理控制權。
綜上所述,其攻擊過程如圖2所示。
圖2漏洞攻擊過程
四、SQL注入攻擊防范設計
SQL注入攻擊防范首先需要對Web應用和數據庫系統進行安全合理的配置,包括以下幾點。
1.不使用管理員(SA)權限的數據庫連接,為每個應用分配權限有限的數據庫連接。
2.使用參數化的SQL或者直接使用存儲過程進行數據查詢存取。
3.應用的異常信息應該給出盡可能少的提示,最好使用自定義的錯誤頁面提示。
對于用戶提交的客戶端信息,使用SQL注入檢測模塊進行必要的檢測,其步驟主要包括。
1.對客戶端提交的信息進行URL解碼,防止用戶以URL編碼的方式構造SQL命令用來欺騙SQL注入檢測模塊。
2.使用正則表達式來驗證提交信息中是否包含單引號()、分號(;)、結束符(--)等特殊字符,如果存在則轉至異常處理模塊。
3.檢測提交信息中是否包含select、insert、update、from、user、exec等特殊命令,如果存在則轉至異常處理模塊。
4.檢測提交參數信息的長度是否超過預設的閾值,如果超過則轉至異常處理模塊。
SQL注入檢測步驟流程如圖3所示。
圖3 SQL注入檢測防御模塊設計
五、結束語
緊密結合OWASP和Trust Wave提供的相關安全報告,采用積極主動的辦法來訓練用戶對于SQL注入漏洞的處理,分析漏洞原因、構造和設計漏洞、模擬攻擊平臺,并對結果進行分析,確定問題所在,給出改進建議和防護措施。在平臺上,一方面可以實現Web應用攻防技術、過程、方法的演示再現甚至對抗性的攻防演練;另一方面,將教學和實驗操作中產生的Web應用攻擊行為限制在一定的范圍內,防止對互聯網的實際網絡和服務造成干擾和破壞。
Web應用程序的安全攻防是信息(網絡)系統安全中具有挑戰性的部分,對于滿足信息安全人才的培養,實現網絡安全專業方向實驗教學,滿足教育、政府信息化和企業Web應用安全培訓需求是一項十分有意義的工作。
參考文獻:
1.OWASP.The Ten Most Critical Web ApplicationSecurityRisks[R],http://www.owasp.org/images/0/0f/OWASPT10 2010 rc1.pdf.2012-10
2.TrustWave.2012 Global Security Report[R],http://www.owasp.org.cn/OWASP Training/Trustwave WP Global Security Report 2012.pdf.2012-10
3.范淵,《Web應用風險掃描的研究與應用》[J],《電信網技術》,2012.3:13-17
4.章建國,《利用WEB應用漏洞構筑WEB安全檢測系統》[J],《廣東公安科技》,2006.2:36-39
5.尹中旭、朱俊虎、魏強等,《網絡攻防演練平臺的設計與實現》[J],《計算機教育》,2011.2:108-112
6.徐川、唐建、唐紅,《網絡攻防對抗虛擬實驗系統的設計與實現》[J],《計算機工程設計》,2011.32(4):1268-1271
7.王云、郭外萍、陳承歡,《Web 項目中的 SQL 注入問題研究與防范方法》[J],《計算機工程與設計》,2010.31(5):976-978
8.李揚、朱曉民、李煒,《網站安全漏洞解析》[J],《四川兵工學報》,2012.33(1):97-99
9.余靜、高豐、徐良華,《基于 SQL 注入的滲透性測試技術研究》[J],《計算機工程與設計》2007.28(15):3577-3578
10.朱輝、周亞建、鈕心忻,《數據庫SQL注入攻擊與防御研究》[A],《2011年通信與信息技術新進展——第八屆中國通信學會學術年會論文集》,2011,580-583
11.熊婧、曹忠升、朱虹等,《基于構造路徑的存儲過程SQL注入檢測》[J],《計算機研究與發展》,2008.45:125-129
12.王偉平、李昌、段桂華,《基于正則表示的SQL注入過濾模塊設計》[J],《計算機工程》,2011.37(5):158-160
基金項目:河北省高等學??茖W研究計劃項目(課題編號:Z2012087),石家莊市哲學社會科學規劃研究項目(課題編號:WH1217)
作者簡介:張紅瑞(1978—),女,河北定州人,講師,碩士,主要研究領域為計算機網絡、計算機視覺。
【責編 田彩霞】