999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

新型二階SQL注入技術研究

2015-01-01 02:56:10樂德廣李鑫龔聲蓉鄭力新
通信學報 2015年1期
關鍵詞:頁面數據庫用戶

樂德廣,李鑫,龔聲蓉,鄭力新

(1. 常熟理工學院 計算機科學與工程學院,江蘇 常熟 215500;2. 華僑大學 工學院,福建 泉州 362021)

1 引言

隨著Web技術的飛速發展,Web應用也面臨著越來越多的安全問題。根據開放式Web應用安全項目(OWASP,open Web application security project)公布的數據,SQL注入漏洞是目前影響 Web安全的首要漏洞[1]。過去幾年,許多專家和學者對SQL注入漏洞進行了大量研究,并提出了許多注入方法和防御技術[2~7],但是這些研究卻大多局限于一階SQL注入。二階SQL注入是在傳統一階SQL注入技術基礎上發展而來,它更難以被發現,卻有和一階SQL注入一樣的安全威脅。目前對于二階SQL注入技術的研究較少,YAN[8]等分析了二階SQL注入的原理和形成過程,提出一種動態和靜態結合檢測二階SQL注入漏洞的方法。田玉杰[9]等提出了一種基于改進參數化的二階 SQL 注入攻擊防御模型,包括輸入過濾模塊、索引替換模塊、語法比較模塊和參數化替換模塊。但是這些方法對于二階SQL注入漏洞的檢測效果并不理想。隨著HTML5等Web技術的興起,SQL注入有了進一步的發展,新型二階SQL注入就是其中一種。新型二階SQL注入是在 HTML5等新技術規范下的最新利用形式,包括二階SQL盲注、二階SQL注入攻擊操作系統和客戶端二階SQL注入。其中,二階SQL盲注在通過二次請求能夠執行存儲于數據庫中的攻擊載荷,但不能返回查詢結果或任何錯誤消息的情況下使用,可以通過時間延遲技術確認并利用漏洞。二階SQL注入攻擊操作系統通過組合Web應用中不同部分的權限實現高數據庫權限的攻擊操作系統。不同于傳統SQL注入攻擊服務器,客戶端二階SQL注入利用HTML5引入客戶端數據存儲的機制,通過二階SQL注入攻擊客戶端。這些新發展的二階SQL注入,使傳統SQL注入防御技術失去作用,不僅會威脅到服務器的信息安全,也會對個人電腦、手機等客戶端造成損失。

2 SQL注入技術

2.1 一階SQL注入

一階SQL 注入是指通過Web輸入直接把包含攻擊載荷的用戶輸入拼接到 Web應用構造的動態SQL 語句中,該動態SQL 語句被提交到數據庫執行從而獲取未授權訪問的技術[10],其中攻擊載荷是指被拼裝入SQL查詢后能夠改變原查詢邏輯,實現想要執行功能的一組語句[11]。例如,在用戶登錄的頁面login.php中,采用如下所示的動態查詢語進行登錄用戶認證。

以上代碼使用POST表單的用戶輸入動態構造SQL查詢,發送到數據庫后可以被直接執行。如果用戶構造 username輸入的值為“’OR 1=1;DROP TABLE Users; --”,password字段填任意值,則構造后的SQL查詢語句如下。

SELECT * FROM Users WHERE username = ‘’OR 1=1; DORP TABLE Users; -- ’ AND password =‘×××’

以上用戶輸入構造的 SQL查詢改變了執行邏輯,不僅通過驗證而且會附加執行刪除Users表的操作。圖1顯示了一階SQL注入攻擊的操作流程。

圖1 一階SQL注入流程

從圖1可以看出,首先在客戶端發送包含攻擊載荷的用戶輸入到Web應用,Web應用使用用戶輸入構造動態SQL查詢語句發送給數據庫執行,然后數據庫執行查詢并返回結果集到 Web應用,最后Web應用發送構造好的HTML頁面到客戶端,從而能夠在客戶端獲取信息。一階SQL注入中常用的技術有聯合查詢、堆疊查詢、錯誤提示、存儲過程、重言式和盲注等[12]。

2.2 二階SQL注入

二階SQL 注入不同于一階SQL注入中把攻擊載荷直接動態構造到SQL查詢中并被數據庫解析執行,而是把SQL注入過程分為2個階段,即把攻擊載荷存入數據庫階段和通過相關請求使Web應用檢索之前存入數據庫的攻擊載荷構造SQL查詢階段[13]。造成二階 SQL注入的原因是Web應用過于信任來自數據庫的數據。例如,通過Web應用的用戶注冊和用戶資料修改功能可以進行二階SQL注入,即首先通過用戶注冊功能把攻擊載荷存入數據庫中,然后通過用戶資料修改功能提取用戶注冊頁面中用戶存入數據庫中的數據構造SQL查詢。其中,用戶注冊的關鍵代碼如下所示。

上述代碼使用預編譯語句代替動態構造 SQL查詢實現向數據庫中插入一條包含 username、password、email等字段用戶記錄的功能。當數據庫處理預編譯語句時,首先會編譯由占位符代替用戶輸入的SQL指令,然后再代入用戶輸入運行。由于已經完成編譯,即使用戶輸入中含有攻擊載荷也不會被數據庫解析執行,實現對一階 SQL注入的防御。例如,向數據庫中插入一條包含有攻擊載荷的用戶記錄,把 email字段構造為“123’ WHERE 1=(updatexml(1,concat(0x5e24,(select password from admin limit 1),0x5e24),1)); -- ”,由于用戶注冊采用了預編譯語句,攻擊載荷會被當作數據處理而存入數據庫中。

但是,存入數據庫中的攻擊載荷在進行用戶資料修改時將會被使用。例如,Web應用的用戶資料修改功能在用戶修改密碼前會驗證用戶名和密碼,并把數據庫中對應用戶的數據全部提取到內存中以構造修改后的用戶記錄,其驗證并提取用戶數據的SQL指令如下所示。

在上述SQL指令中,只有用戶輸入了正確的username和password才會返回包含全部用戶資料的非空結果集。Web應用通過驗證返回結果集是否為空判斷用戶是否通過驗證,并把結果集保存在內存中來創建動態 SQL查詢。Web應用使用內存中結果集構造修改用戶密碼的關鍵代碼如下所示。

上述代碼使用內存中的username和email以及用戶新輸入的password構造UPDATE指令。此時存儲在 email字段中的攻擊載荷會被動態構造到SQL查詢中,新構造的SQL指令如下所示。

數據庫執行上述SQL指令時,當updatexml()函數接收到的XPath字符串存在語法錯誤時,就會產生數據庫錯誤提示,如圖2所示。

圖2 觸發錯誤提取信息

在圖2所示的錯誤提示中,會把用戶密碼的具體內容admin展示出來,導致二階SQL注入。二階SQL注入流程如圖3所示。

從圖3可以看出,二階SQL注入分為存儲(1)~5))和觸發(6)~21))2個階段。在存儲階段中,首先把攻擊載荷寫入用戶輸入中發送給Web應用。由于Web應用中部署防御措施,使數據庫執行由Web應用構造的INSERT/UPDATE等語句后把攻擊載荷當作數據存入數據庫中。在觸發階段,讓Web應用使用存儲階段中存入數據庫的攻擊載荷來構造新的 SQL指令。首先在客戶端加載能調用攻擊載荷的模塊使Web應用從數據庫提取攻擊載荷到內存中,然后使Web應用用內存中的數據動態構造 SQL指令。數據庫在執行Web應用新構造的SQL指令后攻擊載荷被解析執行,完成SQL注入。針對二階SQL注入在觸發階段采用的不同方法,本文提出了3種新型二階SQL注入技術:二階SQL盲注、二階SQL注入攻擊操作系統和客戶端二階SQL注入技術。其中,二階SQL盲注針對Web應用屏蔽錯誤提示和帶內數據傳輸無法實現圖3中步驟18)~21)的情況構造攻擊載荷,借助數據庫執行攻擊載荷后Web應用產生的不同響應推斷數據庫中的數據。二階SQL注入攻擊操作系統通過數據庫與操作系統交互的能力,把文件讀/寫、執行操作系統命令等指令寫入攻擊載荷中,使攻擊載荷被執行后實現對操作系統的攻擊。進行二階SQL注入攻擊操作系統時,可以結合各個頁面權限實施高權限攻擊。客戶端二階 SQL注入技術中攻擊載荷雖然會被發送給服務器但是最終卻是在被攻擊者的客戶端執行,在發送攻擊載荷時所用的通道和提取所捕獲數據的有效機制上與傳統二階SQL注入技術不同。客戶端二階SQL注入不僅需要圖3中所示的二階SQL注入流程,還需要在SQL注入前使用白盒測試的方法收集信息以確定注入方法。

3 新型二階SQL注入技術

3.1 二階SQL盲注

二階SQL盲注是一種把二階SQL注入與SQL盲注結合使用的新技術。與一階SQL盲注發送各種構造好的輸入重復提交獨立請求并監視響應中的異常不同,二階SQL盲注在不同的頁面輸入攻擊載荷和觀察Web應用響應。針對SQL注入中基于錯誤的數據提取和帶內數據連接[14],已有屏蔽錯誤提示等技術[15~17]進行有效防御。因此在進行二階SQL注入時常常遇到異常條件是盲的情況,即Web應用不返回查詢結果或任何錯誤消息。為此可以利用SQL盲注來提取信息[18],其中較為常用的有基于時間的盲注和基于布爾值的盲注[19,20]。

圖3 二階SQL注入流程

基于布爾值的盲注通常以布爾值的2種狀態作為提取信息的新通道,通過 Web應用不同的響應提取信息。例如在 Web應用的文章發表和修改功能中,允許用戶輸入任意文章標題和文章內容,但是采用了參數化查詢使攻擊者無法直接進行 SQL注入。構造的攻擊載荷被存儲到數據庫中。用戶文章修改功能頁面羅列出當前用戶已發表的文章,并在用戶選擇要修改的文章后通過文章標題查找對應的文章內容呈現在用戶客戶端。正常情況下,其執行的SQL指令如下。

SELECT * FROM Article WHERE title = ‘標題’

如果構造文章標題為“test’ AND 2=3”,實際執行的SQL語句如下。

SELECT * FROM Article WHERE title = ‘123’AND 2 = 3

在以上語句中,由于“2 = 3”邏輯值為false,并且與查詢條件“id = 1”通過邏輯與運算符連接,即整個WHERE條件為false,使Web應用無法返回結果給用戶,這時會看到一個為空或者出錯頁面。為了驗證構造的數據確實能被數據庫解析執行,可以修改文章標題為“Test’ AND 3=3”以使 SQL查詢WHERE條件邏輯值為true。如果使用“AND 3=3”構造標題時應用能夠返回正常頁面,則說明此處存在SQL注入。

基于時間的SQL盲注使用Web應用響應請求的時間作為提取數據的通道,通常是在SQL查詢語句中拼接入時延函數或者耗時大的運算實現。例如在前面的例子中構造標題為“test’;SELECT (IF( user() = ‘root’ ), SLEEP (4), 1 )”,Web 應用查找對應文章內容時的SQL指令如下。

SELECT * FROM Article WHERE title =‘test’;SELECT ( IF ( user() = ‘root’ ), SLEEP (4), 1)

如果修改上述標題的請求提交后,Web應用通過SLEEP(4)時延函數等待4 s時間響應正常頁面,則可以推斷出數據庫當前用戶為“root”。表1列出了不同數據庫中常用的延時方式。

表1 時延函數

二階SQL盲注首先要尋找一組相關聯的界面。這組相關聯界面包括能夠把用戶控制數據持久保存的頁面 A和能夠隱式或顯式使用這些數據的頁面B。其次,提交盲注攻擊載荷并存入數據庫中。然后,通過頁面B請求攻擊載荷,使其被加載、執行。最后,通過觀察Web應用的響應獲取數據。二階SQL盲注的流程如圖4所示。

傳統SQL注入漏洞防御技術無法對二階SQL盲注提供有效防御。首先,二階SQL盲注并不借助錯誤消息或帶內數據連接,而是通過推斷Web應用的響應獲取信息。因此,屏蔽錯誤消息等防御方法無法有效覆蓋二階 SQL盲注攻擊。其次,現有的WAF防御方法大多是針對特定參數的用戶輸入進行檢測,這樣能有效防御一階SQL盲注,但是二階SQL盲注把攻擊載荷通過數據庫發送給執行 SQL查詢的函數,從而能繞過WAF檢測進行SQL注入。

圖4 二階SQL盲注流程

3.2 二階SQL注入攻擊操作系統

目前常用的數據庫,如SQL Server、Oracle、MySQL等都提供與底層操作系統交互的能力。它們不僅能訪問文件系統,甚至還能夠執行操作系統命令,這為利用SQL注入攻擊數據庫服務器的操作系統提供了可能。例如,數據庫的 xp_cmdshell允許數據庫管理員以和命令提示符相同的方式執行操作系統命令,如添加操作系統用戶。

EXEC master..xp_cmdshell ‘net user john 12345/add’

表2列出了常見數據庫訪問文件系統和執行操作系統命令的功能。

表2 攻擊操作系統

傳統的一階 SQL注入攻擊操作系統面臨很大的局限性,即需要高權限。例如在SQL Server中需要 sa權限才能執行擴展存儲過程和系統存儲過程等功能,在MySQL中需要FILE權限才能實現對文件系統的讀寫操作等。而有經驗的管理員通常會盡可能地降低Web應用的數據庫權限。例如,對Web應用顯示文章的功能只分配SELECT權限,發布文章的功能只分配INSERT權限,修改用戶資料功能只分配UPDATE權限等。這使攻擊者無法在單一頁面獲得足夠權限實施對操作系統的攻擊。利用二階SQL注入組合不同頁面的功能實施攻擊可以解決這一問題。例如發布/查看文章的功能中,發布文章頁面只分配了INSERT權限,但是由于文章內容的多樣性允許輸入任意字符。而修改文章頁面只分配了 FILE權限,但是對用戶輸入使用嚴格的白名單過濾,無法直接進行SQL注入。在發布文章頁面構造文章標題如下。

Test’;SELECT ‘’INTO OUTFILE ‘/var/www/a.php’

發布文章后數據庫執行INSERT指令把上述攻擊載荷存入數據庫中,之后再查看文章頁面請求查看文章內容,Web應用使用數據庫中的攻擊載荷構造查找對應文章內容的SQL指令如下所示。

SELECT * FROM Article WHERE title = ’Test’;SELECT ‘’ INTO OUTFILE ‘/var/www/a.php’

數據庫執行上述代碼將會在 Web應用的/var/www/文件夾下創建一個名為 a.php的一句話Webshell。通過二階SQL注入組合Web應用不同部分的權限,實現對操作系統的有效攻擊。

3.3 客戶端二階SQL注入

HTML5的新特性之一是內置通過SQL語言來訪問的數據庫[21]。客戶端可以通過JavaScript使用SQLite文件型數據庫在客戶端獲取和存儲數據。例如,以下代碼是打開一個名為Webdb版本1.0的最大存儲容量為1 000 000的數據庫,并創建一個名為test,包含有id、name、email字段的表。

HTML5允許Web應用把數據存入客戶端數據庫以便用戶界面快速檢索所需數據,這能在加快Web應用響應速度的同時減小服務器負擔。此外,它還允許Web應用離線運行,Web應用處理的數據先駐留在客戶端中,聯網后再與服務器同步。

HTML5在帶來便利的同時也產生安全隱患。與服務器端SQL注入類似,如果客戶端應用程序以非安全的方式訪問本地數據庫中的攻擊載荷,就會產生客戶端二階SQL注入。客戶端二階SQL注入主要在發送攻擊載荷的通道和提取敏感數據的機制2個方面區別于普通二階SQL注入。進行客戶端二階SQL注入時,必須先找到能被攻擊者控制并且被Web應用發送到客戶端數據庫中的數據片段,例如新聞類應用中的用戶評論、社交網絡應用中的用戶個人資料等。這些數據片段首先被發送到服務器,再由服務器分發到客戶端數據庫,最終數據片段中的攻擊載荷在客戶端數據庫被執行。進行敏感數據提取時,借助應用程序離線數據同步的機制把想要獲取的數據發送給服務器,然后從服務器讀取數據。例如在社交網絡應用中,可以把想要獲取的敏感數據復制到用戶資料實現讀取數據。客戶端二階SQL注入的流程如圖5所示。

圖5 客戶端二階SQL注入流程

從圖5可以看出,客戶端二階SQL注入分為白盒測試和注入攻擊2個階段。白盒測試是客戶端二階SQL注入相比與其他二階注入所特有的階段,其目的是收集信息。其中,在分析客戶端實例中,通過分析在客戶端中加載的實例獲知 Web應用使用了什么防御措施,Web應用的哪些位置可以實施二階注入攻擊,用戶機密數據存儲的位置,可以提取數據的途徑等。通常能夠直接輸入但是會受到輸入驗證檢測的數據和可以控制的基于文本的數據容易進行客戶端二階SQL注入。雙客戶端模擬攻擊操作是通過加載2個客戶端實例來收集每一條攻擊語句執行后的效果,哪些繞過防御措施的方法有效等信息。注入攻擊階段利用在白盒測試中收集到的信息構造攻擊載荷和選擇注入點,然后把攻擊載荷包含在受其控制的一組數據中發送給服務器,被攻擊客戶端應用存儲這些數據。接著,通過修改數據或者其他方式誘使被攻擊客戶端加載該攻擊載荷從而進行客戶端二階SQL注入。

社交網絡、新聞等都是易受這種攻擊的應用。例如在社交網絡應用中,好友資料被存儲在本地數據庫中以便離線查看。好友資料內容包括聯系人ID、姓名、郵箱、用戶狀態等。如果攻擊者在自己資料的郵箱參數中添加攻擊載荷,被攻擊客戶端將接收并儲存這些攻擊載荷。然后,攻擊者修改用戶狀態并發布。被攻擊客戶端應用程序接收到被修改后的聯系人信息后,提取存儲在本地數據庫中的聯系人信息到內存中,把被修改過的用戶狀態參數與內存中其他參數一起構造新的UPDATE語句并執行,從而造成客戶端二階SQL注入。

4 測試結果與分析

下面通過實驗測試本文提出的 3種新型二階SQL注入漏洞存在的情況和目前主要SQL注入防御措施對3種新型二階SQL注入技術的防御效果。

首先通過滲透測試的方式從 Alexa[22]中隨機抽取30個網站測試二階SQL盲注和二階SQL注入攻擊操作系統,另抽取30個網站測試客戶端二階SQL注入。測試過程中,與數據庫交互的方式如表3所示,并用“.”分隔測試的 2個階段,如Ⅱ.Ⅰ表示二階SQL注入過程中第一階段使用UPDATE語句將有效載荷存入數據庫,第二階段采用SELECT語句觸發攻擊載荷。

表3 數據庫操作類型

根據表3的表示方法,表4詳細列出了測試結果。其中,針對二階SQL盲注的測試采用基于時間的盲注方法,判別依據為是否會觸發時延函數。在對二階 SQL注入攻擊操作系統的測試中,對于Linux+MySQL的情況采用判斷Web應用的數據庫用戶是否有 FILE權限的方法,判斷依據為是否能夠執行LOAD_FILE指令。對于SQL Server情況,采用判斷能否使用 wscript.shell對象的方法,判斷依據為在遠程服務器上啟動一個記事本程序時應用能夠正常運行。對于Oracle的情況,采用判斷數據庫用戶是否具有正確的Java IO許可權限,判斷依據為能否執行DBMS_JAVA_TEST.FUNCALL函數。針對客戶端二階SQL注入,通過白盒測試的方法,2個客戶端同時本地運作,判斷依據為客戶端能否通過修改自己的數據獲得被攻擊客戶端中的數據。表4列出了測試結果。

表4 測試結果

在表4中,第1行的6、10、5和10表示在測試的 30個網站中分別使用Ⅱ.Ⅰ、Ⅱ.Ⅱ、Ⅲ.Ⅰ和Ⅲ.Ⅱ的方式進行二階SQL盲注測試時發現SQL注入漏洞的網站數量。這說明二階SQL盲注在存儲階段中對于攻擊載荷存入數據庫的方式沒有特別的要求,使用UPDATE與INSERT這2種方式均可。但是在觸發階段中,使用Ⅱ方式能夠成功進行SQL注入的網站數量幾乎是Ⅰ方式的 2倍,說明二階SQL盲注使用 UPDATE方式觸發攻擊載荷效果明顯好于使用SELECT方式。這是因為SELECT方式能夠起作用需要應用把攻擊載荷存在內存或者隱藏表單中,并用來構造新的查詢。第2行的二階SQL注入攻擊操作系統使用Ⅱ.Ⅰ、Ⅱ.Ⅱ、Ⅲ.Ⅰ和Ⅲ.Ⅱ方式進行測試時,成功進行SQL注入的網站數量分別為2、5、2和4。在不考慮觸發階段的情況下,方式Ⅱ與方式Ⅲ有相似的結果,在不考慮存儲階段的情況下,方式Ⅱ的效果好于方式Ⅰ,這是因為和二階SQL盲注一樣,二階SQL注入攻擊操作系統的存儲與觸發攻擊載荷都是在服務器端執行。第 3行的客戶端二階SQL注入使用Ⅱ.Ⅰ、Ⅱ.Ⅱ、Ⅲ.Ⅰ和Ⅲ.Ⅱ方式進行測試時,成功進行 SQL注入的網站數量分別為 5、6、4和 6。雖然在存儲階段,方式Ⅱ與方式Ⅲ效果相同,但是在觸發階段,方式Ⅱ與方式Ⅰ檢測結果差距不如前2種二階SQL注入明顯,這是因為在客戶端應用中使用SELECT查詢的機會相比較于服務器端應用要多。此外,最后一列總計表示在測試的30個網站中,通過Ⅱ.Ⅰ,Ⅱ.Ⅱ,Ⅲ.Ⅰ和Ⅲ.Ⅱ方式分別進行3種新型二階SLQ注入測試時,測出SQL注入漏洞的網站總數量分別是 11、5和 6,其測試的成功率如圖6所示。

從圖6可以看出,二階SQL盲注的成功率為36.67%,是3種新型二階SQL注入測試中最高的,這是因為目前絕大多數 Web應用都會采取屏蔽錯誤消息和帶內數據傳輸等功能,而二階SQL盲注可以有效應對這種情況。二階SQL攻擊操作系統的成功率最低,僅為16.67%。這說明二階SQL攻擊操作系統的應用場景較少,其主要原因是利用該技術對權限有較高的要求,如需要Web應用數據庫用戶擁有sa或root權限,在MySQL+Linux中要求應用具有文件寫權限等。客戶端二階SQL注入的成功率為20%,有較高的應用場景。這是因為HTML5作為一種新的技術規范,開發人員對它的安全問題缺乏有效的防范。

圖6 漏洞利用情況

接著,本文構建 PHP+MySQL+Apache+Linux測試環境,模擬一個具有新用戶注冊、修改和查看用戶資料功能,并存在二階SQL注入漏洞的Web應用。在Web應用中,存在二階SQL注入漏洞的關鍵代碼如下。

然后,在Web應用中部署包括參數化語句、屏蔽錯誤消息提示和帶內數據傳輸(簡稱錯誤消息)、基于黑名單的輸入驗證(簡稱輸入驗證)、數據庫用戶最小權限(簡稱最小權限)、編碼輸入和Web應用防火墻(WAF)等各種SQL注入防御措施[23]。表5顯示了目前主要SQL注入防御措施對3種新型二階SQL注入技術的防御效果,其中√表示該技術可以繞過對應的防御措施。

表5 防御效果

從表5中可以看出,目前主流防御措施對于3種新型SQL注入技術不能夠起到良好的防御作用。其中,參數化語句雖然能夠對二階SQL注入有較好的防御效果,但是它要求Web應用在每一處需要構造SQL查詢的地方使用參數化語句。而服務器端的參數化查詢無法在客戶端中使用,因而無法使用該方法防御客戶端二階SQL注入。屏蔽錯誤消息和帶內連接只是阻止了注入過程中獲得信息的途徑,而漏洞本身依然存在,可以利用其他方式獲取信息,因此無法提供對本文提出的3種新型二階注入攻擊的有效防御。基于白名單的輸入驗證雖然能夠防御各種二階SQL注入,但是在實際的應用中大多數情況下無法使用白名單而必須使用黑名單,使攻擊者可以使用多種方式繞過輸入驗證,因此也無法真正有效防御本文提出的3種新型二階SQ注入。配置數據庫用戶最小權限能有效防御SQL注入,尤其是需要較高權限才能實施的二階 SQL注入攻擊操作系統。但是二階盲注和客戶端二階SQL注入仍能夠在配置數據庫用戶最小權限的情況下有效實施。編碼輸入可以轉義用戶輸入中有特殊作用的符號。例如最為常用的雙重編碼單引號的方法,雖然可以在防御一階 SQL注入時能夠使攻擊載荷中的單引號失去分隔用戶輸入與語法的作用,但是Web應用從數據庫中加載數據時卻會進行還原,使這種方法無法對二階SQL注入攻擊實施有效防御。WAF通過檢測用戶輸入、監測用戶行為、訪問控制等的方式對SQL注入進行防御。但是,本文提出的3種新型二階SQL注入通過把注入過程分為了2個階段繞過WAF。在存儲階段使用多重編碼、替換、大小寫混合等的方式改變攻擊載荷的特征,而觸發階段是以正常請求數據庫中數據的方式觸發攻擊載荷,使WAF無法檢測出異常行為。此外,在3種新型的二階SQL注入中,客戶端二階SQL注入效果最好,因為它基于HTML5這樣的新規范產生的漏洞,而很多防御措施無法實施。二階SQL注入攻擊操作系統效果最差,因為該技術對環境有較為苛刻的要求,但是如果條件滿足,所造成的威脅也最大。

5 結束語

SQL注入從開始的不被重視到現在Web應用普遍采用防注入措施,一直是影響Web安全的首要漏洞。二階SQL注入是SQL注入發展出的一種新技術。本文在分析二階SQL注入原理的基礎上提出了3種新型的二階SQL注入技術,并通過實驗證明這些新技術能夠避開現有 Web應用防御措施實施攻擊,并對客戶端和服務器造成威脅。在未來工作中,需要進一步研究如何對新型二階SQL注入漏洞及其利用攻擊進行有效的檢測和防御的方法。

[1] OSWAP. Category: OWASP top ten project [EB/OL].http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project.

[2] 章思宇,姜開達,韋建文, 等.基于 SQL-on-Hadoop的網絡日志分析[J].通信學報,2014,35(Z1):14-19.ZHANG S Y,JIANG K D,WEI J W,et al. Network log analysis with SQL-on-Hadoop[J]. Journal on Communications, 2014, 35(Z1):14-19.

[3] KIM M Y, LEE D H. Data-mining based SQL injection attack detection using internal query trees[J]. Expert Systems with Applications, 2014,41 (11):5416-5430.

[4] SHAR L K, TAN H B K. Predicting SQL injection and cross site scripting vulnerabilities through mining input sanitization patterns[J].Information and Software Technology, 2013,55(10): 1767-1780.

[5] JANG Y S, CHOI J Y. Detecting SQL injection attacks using query result size[J]. Computers & Security, 2014,44(7):104-118.

[6] SHAR L K, TAN H B K. Defeating SQL injection[J]. IEEE Computer,2013,46(3):69-77.

[7] 田偉,許靜,楊巨峰,等.模型驅動的Web應用 SQL注入滲透測試[J].高技術通訊,2012,22(11):1161-1168.TIAN W, XU J, YANG J F,et al. Model-driven penetration test of the SQL injection in Web applications[J]. Chinese High Technology Letters, 2012,22(11):1161-1168.

[8] YAN L, LI X H, FENG R T,et al. Detection method of the second-order SQL injection in Web applications[J]. Lecture Notes in Computer Science, 2014, 8332:154-165.

[9] 田玉杰,趙澤茂,張海川,等.二階 SQL 注入攻擊防御模型[J].信息網絡安全,2014,(11):70-73.TIAN Y J, ZHAO Z M, ZHANG H C,et al. Second-order SQL injection attack defense model [J]. Netinfo Security, 2014,(11):70-73.

[10] PINZONA C I, PAZB J F D, HERRERO á,et al. idMAS-SQL:intrusion detection based on MAS to detect and block SQL injection through data mining[J]. Information Sciences, 2013,231(5):15-31.

[11] KIEYZUN A, GUO P J, JAYARAMAN K,et al. Automatic creation of SQL Injection and cross-site scripting attacks[A]. Proceedings of the 31st International Conference on Software Engineering (ICSE), IEEE Computer Society[C]. Washington, DC, USA, 2009.199-209.

[12] HALFOND W G J,VIEGAS J,ORSO A. A classification of SQL injection attacks and countermeasures[A]. Proceedings of the International Conference on Software Engineering[C]. Arlington, VA,USA, 2006.35-45.

[13] DAHSE J, HOLZ T. Static detection of second-order vulnerabilities in Web applications[A]. Proceedings of the 23rd USENIX Conference on Security Symposium (USENIX)[C]. 2014.989-1003.

[14] FOCARDI R, LUCCIO F L. SQUARCINA M. Fast SQL blind injections in high latency networks[A]. Proceedings of IEEE First AESS European Conference on Satellite Telecommunications (ESTEL)[C].2012.1-6.

[15] SADEGHIAN A, ZAMANI M, IBRAHIM S. SQL injection is still alive: a study on SQL injection signature evasion techniques[A].Proceedings of International Conference on Informatics and Creative Multimedia (ICICM)[C]. 2013.265-268.

[16] 王溢,李舟軍,郭濤等.防御代碼注入式攻擊的字面值污染方法[J].計算機研究與發展,2012,49(11):2414-2423.WANG Y,LI Z J,GUO T,et al. Literal tainting method for preventing code injection attack in Web application [J]. Journal of Computer Research and Development, 2012,49(11):2414-2423.

[17] 王文明,李海煒.SQL服務器注入攻擊的主動防御技術研究[J].計算機科學,2012,39(z3):9-13.WANG W M,LI H W. Research of the active defense technology for the SQL server injection attack [J]. Computer Science, 2012,39(z3):9-13.

[18] DAHSE J, KREINN N, HOLZ T. Code reuse attacks in PHP:automated POP chain generation[A]. Proceedings of ACM SIGSAC Conference on Computer and Communications Security (CCS)[C].New York, NY, USA,2014.42-53.

[19] MICROSOFT. Time-based blind SQL injection with heavy queries[EB/OL]. https://technet.microsoft.com/en-us/library/cc512676.aspx. 2015.

[20] Practical identification of SQL injection vulnerabilities[EB/OL].https://www.us-cert.gov/sites/default/files/publications/Practical-SQLi-Identification.pdf.2015.

[21] MEIYAPPAN Y. Using the Web SQL database API in HTML 5[EB/OL]. http://www.databasejournal.com/sqletc/article.php/3903201/Using-the-Web-SQL-Database-API-in-HTML-5.htm.2015.

[22] ALEXA. The top 1000 sites on the Web [EB/OL]. http://www.alexa.com/ topsites.2015.

[23] BANDHAKAVF S, BISHT P, MADHUSUDAN P,et al. CANDID:preventing SQL injection attacks using dynamic candidate evaluations[A]. Proceedings of the 14th ACM Conference on Computer and Communications Security (CCS)[C]. New York, NY, USA,2007.12-24.

猜你喜歡
頁面數據庫用戶
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
主站蜘蛛池模板: 好吊色国产欧美日韩免费观看| 国产乱子伦手机在线| 在线国产欧美| 91欧美在线| 免费观看成人久久网免费观看| 国产精品99一区不卡| 亚洲侵犯无码网址在线观看| 日本在线国产| 97精品伊人久久大香线蕉| 日韩国产黄色网站| 亚洲人成成无码网WWW| 亚洲第一页在线观看| 国产精品自在在线午夜| 2021天堂在线亚洲精品专区 | 精品少妇人妻av无码久久| 伊人成人在线| 国产精品黄色片| 亚洲国产成人麻豆精品| 国产人妖视频一区在线观看| 国产美女自慰在线观看| 日韩av在线直播| 亚洲精品国产综合99久久夜夜嗨| 黄色不卡视频| 国产美女视频黄a视频全免费网站| 99免费视频观看| 丁香综合在线| 亚洲综合18p| 久草视频中文| 亚洲男人天堂网址| 国产91精品最新在线播放| 找国产毛片看| 国产精品片在线观看手机版 | 99精品欧美一区| 中国丰满人妻无码束缚啪啪| 在线无码九区| 亚洲色欲色欲www在线观看| 婷婷99视频精品全部在线观看| 在线观看欧美精品二区| 日本日韩欧美| 亚洲人精品亚洲人成在线| 国产成人免费高清AⅤ| 亚洲V日韩V无码一区二区| 国产成人亚洲综合a∨婷婷| 精品国产一区91在线| 97se亚洲| 免费播放毛片| 97se亚洲综合不卡 | 成人午夜视频免费看欧美| 国产在线啪| 欧洲成人在线观看| 欧美影院久久| 天堂av综合网| 亚洲成A人V欧美综合| 精品久久久久无码| 精品在线免费播放| 蜜芽一区二区国产精品| 国产原创演绎剧情有字幕的| 精品视频免费在线| 一级毛片免费不卡在线视频| 亚洲精品桃花岛av在线| 91九色视频网| 无码精品国产VA在线观看DVD| 国产亚洲精品资源在线26u| 欧美成一级| 毛片在线播放a| 日韩国产高清无码| 久久免费视频6| 一级做a爰片久久毛片毛片| 2021国产v亚洲v天堂无码| 亚洲美女视频一区| 九色免费视频| 亚洲精品国产精品乱码不卞| 亚洲午夜天堂| 久久久久久尹人网香蕉 | 久久久久国产一区二区| 免费看a级毛片| 2021精品国产自在现线看| 欧美精品在线免费| 国产福利小视频高清在线观看| 精品一区二区三区水蜜桃| 国产超碰在线观看| 黄色免费在线网址|