自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)庫防火墻如何防范SQL注入行為

安全 數(shù)據(jù)安全
通過SQL注入可以遠(yuǎn)程獲取并利用應(yīng)用里的數(shù)據(jù),并且獲取未經(jīng)hashed加密的用戶秘鑰以及信用卡信息,甚至有以管理員身份登陸進(jìn)這些應(yīng)用的可能。

一、SQL注入簡介

什么是SQL注入

SQL注入是當(dāng)前針對數(shù)據(jù)庫安全進(jìn)行外部攻擊的一種常見手段?,F(xiàn)有主流應(yīng)用大多基于B/S架構(gòu)開發(fā),SQL注入的攻擊方式正是利用web層和通訊層的缺陷對數(shù)據(jù)庫進(jìn)行外部惡意攻擊。將SQL命令巧妙的插入通訊的交互過程中,如:Web表單的遞交、域名輸入、頁面請求等。通過硬性植入的查詢語句攻擊數(shù)據(jù)庫,以期利用服務(wù)器自身缺陷執(zhí)行惡意的SQL命令,從而入侵?jǐn)?shù)據(jù)庫。因此通過SQL注入攻擊方式產(chǎn)生的安全事件也在增多,對系統(tǒng)的危害性極大。

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

首先,我們假設(shè)數(shù)據(jù)庫中有JOB表,模擬進(jìn)行攻擊,查詢表中數(shù)據(jù)量。

然后,應(yīng)用中調(diào)用惡意的攻擊性url向JOB表植入SQL語句:

http://localhost:port/webapp/Default.aspx?jobid=1'or 1=(select count(*) from job)—

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

 

  1. SELECT       job_id, job_desc, min_lvl, max_lvl   
  2. FROM         jobs   
  3. WHERE      job_id='1'or 1=(select count(*) from jobs) --'  

 

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

數(shù)據(jù)庫防火墻如何防范SQL注入行為

圖一

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

數(shù)據(jù)庫防火墻如何防范SQL注入行為

圖二

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

SQL注入的8種攻擊行為

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

1. 猜測數(shù)據(jù)庫名,備份數(shù)據(jù)庫

2. 猜解字段名稱

3. 遍歷系統(tǒng)的目錄結(jié)構(gòu),分析結(jié)構(gòu)并發(fā)現(xiàn)WEB虛擬目錄,植入木馬

4. 查詢當(dāng)前用戶的數(shù)據(jù)庫權(quán)限

5. 設(shè)置新的數(shù)據(jù)庫帳戶提權(quán)得到數(shù)據(jù)庫管理員賬戶權(quán)限

6. 利用存儲過程獲取操作系統(tǒng)管理員賬戶

7. 客戶端腳本攻擊:通過正常的輸入提交方式將惡意腳本提交到數(shù)據(jù)庫中,當(dāng)其他用戶瀏覽此內(nèi)容時就會受到惡意腳本的攻擊。

8. 客戶端腳本攻擊:通過SQL注入方式將惡意腳本提交到數(shù)據(jù)庫中,直接使用SQL語法UPDATE數(shù)據(jù)庫,并將注入SQL經(jīng)過“HEX編碼”,然后通過exec執(zhí)行“動態(tài)”SQL的特性運(yùn)行腳本。

綜上可知,SQL注入對數(shù)據(jù)庫的攻擊方式日趨繁多,危害也日益嚴(yán)重,因此如何做好SQL注入的防護(hù)工作也就變成考量數(shù)據(jù)庫安全產(chǎn)品的一道標(biāo)桿。

SQL注入的5種防護(hù)方式

常規(guī)的SQL注入防護(hù)方式,包括以下幾個方面

1. 通過正則表達(dá)校驗(yàn)用戶輸入

2. 通過參數(shù)化存儲過程進(jìn)行數(shù)據(jù)查詢存取

3. 參數(shù)化SQL語句

4. 為數(shù)據(jù)庫添加新架構(gòu)

5. 利用LINQ to SQL查詢

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

二、數(shù)據(jù)庫防火墻如何防御SQL注入

數(shù)據(jù)庫防火墻作為專業(yè)的數(shù)據(jù)庫安全防護(hù)工具,而針對SQL注入等數(shù)據(jù)庫攻擊行為的防護(hù)能力如何,是衡量一款數(shù)據(jù)庫防火墻產(chǎn)品優(yōu)略的關(guān)鍵要素。

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

SQL注入的概念來自于Web系統(tǒng),數(shù)據(jù)庫防火墻在防止SQL注入時,針對已經(jīng)形成且即將到達(dá)數(shù)據(jù)庫的完整SQL,監(jiān)測是否有非法的操作,并有效阻止針對于數(shù)據(jù)庫的非法入侵行為。

數(shù)據(jù)庫防火墻如何防范SQL注入行為

圖三:DBFirewall SQL注入攻擊防護(hù)引擎

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

1. 通過發(fā)送意外數(shù)據(jù)來觸發(fā)異常,利用獲取數(shù)據(jù)的GET操作,變更信息的POST操作,結(jié)合數(shù)據(jù)庫異常信息,從而判斷注入是否發(fā)生。

例如:

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

如果以上兩句的執(zhí)行結(jié)果相同,則可能存在SQL注入。

2. 利用應(yīng)用程序試探。

如果應(yīng)用程序沒有對數(shù)據(jù)庫服務(wù)器返回的錯誤信息進(jìn)行處理,那么數(shù)據(jù)庫的錯誤信息將直接反饋到前臺,通過這些錯誤信息,不但可以識別出SQL注入的漏洞所在,甚至可能逐步探測出數(shù)據(jù)庫表信息。

3. 根據(jù)應(yīng)用響應(yīng)時間判斷

通過上述幾種方式可以初步判斷SQL注入行為的產(chǎn)生,但是為了提高準(zhǔn)確性,安華金和數(shù)據(jù)庫防火墻具有獨(dú)特的設(shè)計流程,通過構(gòu)建一條有效的SQL語句,幫助用戶確認(rèn)SQL注入行為:

1) SQL語句中區(qū)分?jǐn)?shù)值類型和字符串類型

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

3) 當(dāng)web應(yīng)用程序未顯示任何錯誤時,數(shù)據(jù)庫注入時間延遲。

可以檢測服務(wù)器響應(yīng)來確定注入

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

1) SQL注入識別數(shù)據(jù)庫

攻擊方法一:通過獲取數(shù)據(jù)庫異常信息,數(shù)據(jù)庫版本信息的方式進(jìn)行SQL注入攻擊

防御方法:利用DBFW的配置錯誤替換規(guī)則,對常見的錯誤信息進(jìn)行替換

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

SELECT banner FROM v$version或

SELECT banner FROM v$version WHERE rownum=1

防控方法:采用風(fēng)險評估中的系統(tǒng)表控制規(guī)則,或者通過訪問控制權(quán)限中,對不同的用戶控制對系統(tǒng)表的訪問權(quán)限。

2) 利用UNION語句提取數(shù)據(jù)

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

攻擊方法:多次使用各種數(shù)據(jù)類型替換null,直到系統(tǒng)不再報錯為止,例如

 

  1. select username,password from admin union select ‘test’,’test’ from dual  
  2.  

 

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

 

  1. select username,password from admin union select user, ’test’ from dual 

 

獲得系統(tǒng)信息

防控方法:開啟DBFW的風(fēng)險評估union評測,以及系統(tǒng)表的評測

3) 利用條件語句

攻擊方法一:基于時間

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

 

  1. select utl_http.request(‘http://10.0.0.1’) from dual  
  2. select HTTPURITYPE(‘http://10.0.0.1’).getclob() from dual 

 

防控方法:開啟風(fēng)險評估里的暴力破解函數(shù)。

攻擊方法二:基于字符串轉(zhuǎn)換

對于傳入?yún)?shù)是字符串的,可以用char函數(shù)轉(zhuǎn)化其中一個字符,根基返回的結(jié)果可以實(shí)現(xiàn)SQL注入。

例如:

 

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

 

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

4) 提權(quán)行為

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

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

防控方法:使用訪問控制或者風(fēng)險評估,加入用戶權(quán)限控制或高危操作

除了上述幾種常見的SQL注入行為之外,DBFW內(nèi)置可防護(hù)的SQL注入攻擊行為還包括:竊取hash口令、利用操作系統(tǒng)攻擊等。并且可以根據(jù):風(fēng)險級別、告警通知、SQL命令、命令特征、風(fēng)險函數(shù)、表達(dá)式、類型、操作人、操作等幾項(xiàng)元素自定義SQL注入防護(hù)規(guī)則。

責(zé)任編輯:藍(lán)雨淚 來源: 51CTO.com
相關(guān)推薦

2011-03-17 14:35:08

防火墻SQL Server數(shù)

2018-05-25 16:56:43

2011-08-02 13:37:17

2011-02-28 09:14:36

2021-02-19 11:10:10

數(shù)據(jù)庫

2018-05-17 23:07:12

2011-02-16 10:46:27

2020-11-02 17:59:19

防火墻數(shù)據(jù)庫美創(chuàng)科技

2010-09-15 16:52:16

2011-04-08 17:13:39

2012-03-12 11:21:12

虛擬防火墻虛擬化平臺虛擬機(jī)

2022-09-20 16:38:08

數(shù)據(jù)安全數(shù)據(jù)泄露安全

2010-12-21 18:04:26

2010-09-30 17:33:46

2021-07-28 09:53:53

FalconEye注入安全檢測

2018-06-28 13:22:34

防火墻數(shù)據(jù)庫服務(wù)器

2018-03-10 07:39:06

2010-09-16 11:18:01

2018-07-02 09:18:11

Linuxiptables防火墻

2010-12-08 09:29:27

下一代防火墻
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號