日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

数据库防火墙如何防范SQL注入行为

發布時間:2023/12/31 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 数据库防火墙如何防范SQL注入行为 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL注入是當前針對數據庫安全進行外部攻擊的一種常見手段。現有主流應用大多基于B/S架構開發,SQL注入的攻擊方式正是利用web層和通訊層的缺陷對數據庫進行外部惡意攻擊。將SQL命令巧妙的插入通訊的交互過程中,如:Web表單的遞交、域名輸入、頁面請求等。通過硬性植入的查詢語句攻擊數據庫,以期利用服務器自身缺陷執行惡意的SQL命令,從而入侵數據庫。因此通過SQL注入攻擊方式產生的安全事件也在增多,對系統的危害性極大。

通過SQL注入可以遠程獲取并利用應用里的數據,并且獲取未經hashed加密的用戶秘鑰以及信用卡信息,甚至有以管理員身份登陸進這些應用的可能。下面通過一組常見的SQL注入攻擊方式,進行說明:

首先,我們假設數據庫中有JOB表,模擬進行攻擊,查詢表中數據量。

然后,應用中調用惡意的攻擊性url向JOB表植入SQL語句:

http://www.moxcn.com:port/webapp/Default.aspx?jobid=1’or 1=(selectcount(*) from job)—

那么,攻擊時等效的SQL語句如下:

SELECT job_id, job_desc, min_lvl, max_lvl

FROMjobs

WHERE job_id=’1’or 1=(select count(*) from jobs) –‘

如果SQL注入的假設錯誤,web頁面如圖一:

圖一

如果SQL注入的假設成功,web界面如圖二:

圖二

攻擊說明:如果SQL注入的假設成功,即證明了數據庫中該表的表名是jobs,從而我們也就可以對該表進行增刪改操作,從而對數據庫安全造成極其嚴重的危害。

SQL注入的8種攻擊行為

安全界有句名言“未知攻,焉知防”,想要預防SQL注入,需要進一步剖析SQL注入都有哪些常見攻擊方式。

猜測數據庫名,備份數據庫
猜解字段名稱
遍歷系統的目錄結構,分析結構并發現WEB虛擬目錄,植入木馬
查詢當前用戶的數據庫權限
設置新的數據庫帳戶提權得到數據庫管理員賬戶權限
利用存儲過程獲取操作系統管理員賬戶
客戶端腳本攻擊:通過正常的輸入提交方式將惡意腳本提交到數據庫中,當其他用戶瀏覽此內容時就會受到惡意腳本的攻擊。
客戶端腳本攻擊:通過SQL注入方式將惡意腳本提交到數據庫中,直接使用SQL語法UPDATE數據庫,并將注入SQL經過“HEX編碼”,然后通過exec執行“動態”SQL的特性運行腳本。

綜上可知,SQL注入對數據庫的攻擊方式日趨繁多,危害也日益嚴重,因此如何做好SQL注入的防護工作也就變成考量數據庫安全產品的一道標桿。

SQL注入的5種防護方式

常規的SQL注入防護方式,包括以下幾個方面

通過正則表達校驗用戶輸入
通過參數化存儲過程進行數據查詢存取
參數化SQL語句
為數據庫添加新架構
利用LINQ to SQL查詢

針對以上SQL 5種注入防護方式,可以在一定程度上避免SQL注入對數據庫所帶來的入侵危害,但這些操作同步會使數據庫操作復雜化,在一定程度上提高了企業運維成本,同時降低數據庫操作性能。因此,一種專門針對數據庫防護類產品——數據庫防火墻誕生,可以針對SQL注入攻擊行為進行主動有效的防護。

數據庫防火墻如何防御SQL注入

數據庫防火墻作為專業的數據庫安全防護工具,而針對SQL注入等數據庫攻擊行為的防護能力如何,是衡量一款數據庫防火墻產品優略的關鍵要素。

目前國內數據庫安全的專業廠商安華金和,自主研發推出數據庫防火墻(DBFirewall)產品基于對數據庫協議的精準解析,對SQL注入行為的分析更加精確,極大程度上避免了對SQL注入攻擊行為的漏防與誤防。

SQL注入的概念來自于Web系統,數據庫防火墻在防止SQL注入時,針對已經形成且即將到達數據庫的完整SQL,監測是否有非法的操作,并有效阻止針對于數據庫的非法入侵行為。

圖三:DBFirewallSQL注入攻擊防護引擎

DBFirewall對于SQL注入行為的識別,可以分為以下三種:

通過發送意外數據來觸發異常,利用獲取數據的GET操作,變更信息的POST操作,結合數據庫異常信息,從而判斷注入是否發生。

例如:

www.abc/show.php?category=bikes

www.abc/show.php?category=bik’’es

如果以上兩句的執行結果相同,則可能存在SQL注入。

利用應用程序試探。如果應用程序沒有對數據庫服務器返回的錯誤信息進行處理,那么數據庫的錯誤信息將直接反饋到前臺,通過這些錯誤信息,不但可以識別出SQL注入的漏洞所在,甚至可能逐步探測出數據庫表信息。
根據應用響應時間判斷

通過上述幾種方式可以初步判斷SQL注入行為的產生,但是為了提高準確性,安華金和數據庫防火墻具有獨特的設計流程,通過構建一條有效的SQL語句,幫助用戶確認SQL注入行為:

1) SQL語句中區分數值類型和字符串類型

2) 驗證注入SQL代碼時,是否是通過注釋剩下的查詢來成功結束該語句。

3) 當web應用程序未顯示任何錯誤時,數據庫注入時間延遲。

可以檢測服務器響應來確定注入

安華金和數據庫防火墻基于對SQL注入的各種攻擊行為,進行有針對性的數據庫防護,從而形成更加完備的防護體系。下面列舉幾種常見的SQL注入攻擊行為做分析說明,并具體描述一下DBFirewall是如何進行防護的。

1)SQL注入識別數據庫

攻擊方法一:通過獲取數據庫異常信息,數據庫版本信息的方式進行SQL注入攻擊

防御方法:利用DBFW的配置錯誤替換規則,對常見的錯誤信息進行替換

攻擊方法二:獲取版本信息

SELECT banner FROMv$version或

SELECT banner FROMv$version WHERE rownum=1

防控方法:采用風險評估中的系統表控制規則,或者通過訪問控制權限中,對不同的用戶控制對系統表的訪問權限。

2)利用UNION語句提取數據

如果應用返回第一個(原始)查詢得到的數據,那么通過在第一個查詢后面注入一個UNION運算符,并添加另外藝哥任意查詢,便可以讀取到數據庫用戶訪問過的任何一張表。

攻擊方法:多次使用各種數據類型替換null,直到系統不再報錯為止,例如

selectusername,passwordfrom admin union select ‘test’,’test’ from dual

如果測試成功,可以替換為:

selectusername,passwordfrom admin union select user, ’test’ from dual

獲得系統信息

防控方法:開啟DBFW的風險評估union評測,以及系統表的評測

3)利用條件語句

攻擊方法一:基于時間

對于oracle來說,可以使用sleep,或者UTL_HTTP、HTTPURITYPE向一個死的IP地址發送一個HTTP請求來實現相同的效果。如果指定一個不存在監聽者的IP地址,那么下列查詢將一直等待連接知道超時:

selectutl_http.request(‘http://10.0.0.1’)from dual

select HTTPURITYPE(‘http://10.0.0.1’).getclob()from dual

防控方法:開啟風險評估里的暴力破解函數。

攻擊方法二:基于字符串轉換

對于傳入參數是字符串的,可以用char函數轉化其中一個字符,根基返回的結果可以實現SQL注入。

例如:

select * from productswhere brand=’ac’+char(108+(case when system_user=’sa’ then else 0 end))+’e’

防控方法:將char作為暴力破解函數。

4)提權行為

在Oracle中,通過Web應用的SQL注入來提升權限非常困難。大多數權限提升方法均需要PL/SQL注入,而這種注入很少見。如果找到一種PL/SQL注入漏洞,可以通過注入PL/SQL代碼來提升權限或在數據庫服務器上啟動操作。

不需要PL/SQL注入的例子是:使用在Oracle的mod_plSQL組件中發現的一個漏洞。

防控方法:使用訪問控制或者風險評估,加入用戶權限控制或高危操作

除了上述幾種常見的SQL注入行為之外,DBFW內置可防護的SQL注入攻擊行為還包括:竊取hash口令、利用操作系統攻擊等。并且可以根據:風險級別、告警通知、SQL命令、命令特征、風險函數、表達式、類型、操作人、操作等幾項元素自定義SQL注入防護規則。

更多精彩文章 請移步www.moxcn.com

總結

以上是生活随笔為你收集整理的数据库防火墙如何防范SQL注入行为的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。