欧美精品一区二区,体育生GAY白袜调教VIDEO,私人影院播放器,色偷偷AV老熟女色欲涩爱

?
內(nèi)容中心
按關(guān)鍵字查找
數(shù)據(jù)庫SQL注入分類及防護(hù)思路
作者:思成 發(fā)布時(shí)間:2016-06-29

一. 背景

數(shù)據(jù)庫憑借其強(qiáng)大的數(shù)據(jù)存儲(chǔ)能力和卓越的數(shù)據(jù)處理性能,在各行各業(yè)的信息化建設(shè)中發(fā)揮著關(guān)鍵的作用。隨著數(shù)據(jù)庫在各行業(yè)的大規(guī)模應(yīng)用,數(shù)據(jù)泄露事件也頻繁發(fā)生,這就使數(shù)據(jù)庫安全問題也日益凸顯,逐漸變成用戶越來越擔(dān)心的問題。雖然數(shù)據(jù)庫廠商已經(jīng)做了許多有效的措施來盡量解決數(shù)據(jù)庫存在的安全問題,但至今為止數(shù)據(jù)庫的安全漏洞仍然不斷增加。下圖為近5年數(shù)據(jù)庫漏洞數(shù)量圖。

在數(shù)據(jù)庫漏洞中最為常見的漏洞類型是SQL注入漏洞。安華金和數(shù)據(jù)庫攻防實(shí)驗(yàn)室結(jié)合多年的實(shí)踐結(jié)果總結(jié)出了數(shù)據(jù)庫注入的分類分享給大家,以便大家對(duì)SQL注入型漏洞有一個(gè)更加全面的了解。

SQL注入漏洞不僅出現(xiàn)在WEB端,也出現(xiàn)在數(shù)據(jù)庫的自定義或標(biāo)準(zhǔn)庫的存儲(chǔ)過程、函數(shù)、觸發(fā)器中。數(shù)據(jù)庫自身的SQL注入漏洞比WEB端的注入漏洞對(duì)數(shù)據(jù)庫的威脅性更大。本文對(duì)SQL注入的分類是從數(shù)據(jù)庫的角度來劃分,不考慮WEB端的角度,這兩者在分類上有著不同的角度。

首先在解釋不同的數(shù)據(jù)庫SQL注入漏洞之前先簡(jiǎn)要說明一下數(shù)據(jù)庫攻擊者能夠進(jìn)行SQL注入的主要原理:SQL注入漏洞是用戶在輸入中混入了程序命令。最直接的例子就是攻擊者在正常的 Web 頁面中把自己的 SQL 代碼通過用戶輸入傳輸?shù)较鄳?yīng)的應(yīng)用程序中,從而執(zhí)行一些非授權(quán)的 SQL 代碼,以達(dá)到修改、竊取或者破壞數(shù)據(jù)庫信息的目的。SQL 注入攻擊甚至可以幫組攻擊者繞過用戶認(rèn)證機(jī)制,使其可以完全的操控遠(yuǎn)程服務(wù)器上的數(shù)據(jù)庫。如果應(yīng)用程序使用一些用戶輸入的數(shù)據(jù)來構(gòu)造動(dòng)態(tài)的SQL語句去訪問數(shù)據(jù)庫,將可能遭受到 SQL 注入攻擊。同樣的如果在代碼中使用了存儲(chǔ)過程,并且這些存儲(chǔ)過程缺乏對(duì)用戶輸入的合理限制也很容易發(fā)生 SQL 注入。

二. SQL注入分類

1) 注入途徑分類

SQL注入漏洞按照注入的物理途徑可以分成兩大類:通過WEB端對(duì)數(shù)據(jù)庫進(jìn)行注入攻擊和直接訪問數(shù)據(jù)庫進(jìn)行注入攻擊。

直接訪問數(shù)據(jù)庫進(jìn)行注入攻擊是以數(shù)據(jù)庫用戶的身份直接連接數(shù)據(jù)庫進(jìn)行SQL注入攻擊。在這種攻擊方式中,攻擊者可以通過SQL注入來執(zhí)行SQL語句從而提高用戶權(quán)限或者越權(quán)執(zhí)行。而那些在PL/SQL程序中在給用戶授權(quán)的時(shí)候沒有使用authid current_user進(jìn)行定義的存儲(chǔ)過程、函數(shù)、觸發(fā)器、程序塊將更容易受到SQL注入攻擊。

通過WEB應(yīng)用程序的用戶對(duì)數(shù)據(jù)庫進(jìn)行連接并進(jìn)行SQL注入攻擊。在這種類型的SQL注入攻擊中,攻擊者多采用拼接語句的方法來改變查詢的內(nèi)容。獲取該賬號(hào)權(quán)限下的全部信息。

一些高級(jí)的攻擊手段往往結(jié)合這兩種方式,先利用WEB應(yīng)用程序上的SQL注入漏洞獲取數(shù)據(jù)庫和數(shù)據(jù)庫所在服務(wù)器的基本信息。再利用數(shù)據(jù)庫自身SQL注入漏洞對(duì)獲取的數(shù)據(jù)庫賬號(hào)進(jìn)行提權(quán)、越權(quán)等操作已達(dá)到對(duì)數(shù)據(jù)庫進(jìn)行破壞或者獲取敏感信息的目的。

2) 注入方式分類

根據(jù)入侵方式,針對(duì)數(shù)據(jù)庫的SQL注入攻擊可以分為四種類型,分別是SQL Manipulation、Code Injection 、Function Call Injection以及Buffer Overflows 。前兩種SQL注入攻擊較為常見,多出現(xiàn)在WEB端的SQL注入上,而后兩種攻擊類型是直接針對(duì)數(shù)據(jù)庫自身的攻擊方式,所以對(duì)數(shù)據(jù)庫的安全威脅更加致命。

1.針對(duì) SQL 操作的注入攻擊(SQL manipulation)是在所有的 SQL 注入攻擊類型中最常見的一種類型。這種攻擊的原理在于攻擊者會(huì)試圖在已經(jīng)存在的SQL 語句中通過集合運(yùn)算符(SET Operator)比如 UNION、INTERSECT 或者M(jìn)INUS 來添加一些內(nèi)容在 WHERE 子句中使其功能產(chǎn)生變化。當(dāng)然還有可能會(huì)有其他的很多變化存在。最經(jīng)典的 SQL manipulation 攻擊就存在于登錄驗(yàn)證過程中。一個(gè)簡(jiǎn)單的 Web 應(yīng)用程序就可以通過執(zhí)行以下的 SQL 語句來檢查用戶認(rèn)證是否有返回值:

SELECT * FROM users WHERE username = 'admin' and PASSWORD = 'guess'而攻擊者就可以嘗試修改 SQL 語句使其變?yōu)椋?/p>

SELECT * FROM users WHERE username = 'admin' and PASSWORD = 'xxxx'or 'a' = 'a'

通過以上對(duì)于 WHERE 子句的修改操作可以使用戶登錄的判定恒為真,這樣攻擊者便繞過了用戶驗(yàn)證獲得了進(jìn)入后臺(tái)的權(quán)利。集合運(yùn)算符 UNION 也常常被用在 SQL 注入攻擊中,其最主要的目的就是通過操作 SQL 語句來從另外一個(gè)表中返回某些行。一個(gè)WEB 窗體可以執(zhí)行以下SQL 語句從一個(gè)存在的 product 表中返回一個(gè)需要的表單:

SELECT product_name FROM all_products WHERE product_name like '%ddd%'

而攻擊者可以修改 SQL 語句使其變?yōu)椋?/p>

SELECT product_name FROM all_products WHERE product_name like '%ddd%' UNION SELECT username,password FROM dba_users WHERE username like ‘%’

這種情況下在執(zhí)行完這個(gè)SQL語句以后所返回的web表單中的結(jié)果就會(huì)包括

所有的產(chǎn)品名以及所有的數(shù)據(jù)庫用戶名和密碼(當(dāng)然需要鏈接賬號(hào)具備查詢表dba_users權(quán)限)。

2.代碼注入攻擊(CODE INJECTION)就是嘗試在已經(jīng)存在的 SQL 語句中添加額外的SQL語句或者命令。這種類型的攻擊會(huì)經(jīng)常的被應(yīng)用在微軟的SQLServer 應(yīng)用程序里。在 SQL Server 中EXECUTE 語句經(jīng)常會(huì)成為 這種SQL 注入攻擊的目標(biāo)。雖然Oracle 這類數(shù)據(jù)庫中沒有相應(yīng)的語句,在 PL/SQL 和 Java中,也不支持單個(gè)數(shù)據(jù)庫的多條SQL 語句的請(qǐng)求,但一些程序語言或者 API 可能允許多個(gè) SQL 語句同時(shí)執(zhí)行。PL/SQL 和Java 應(yīng)用程序可以動(dòng)態(tài)的執(zhí)行那些容易受到代碼注入攻擊的匿名 PL/SQL 塊。所以在特定情況下代碼注入攻擊對(duì)即便不支持多SQL請(qǐng)求的數(shù)據(jù)庫依舊有效。

3.函數(shù)調(diào)用注入(FUNCTION CALL INJECTION)是因?yàn)樵跀?shù)據(jù)庫函數(shù)或者自定義函數(shù)中存在某些漏洞,攻擊者對(duì)問題函數(shù)進(jìn)行 SQL 語句注入從而使此函數(shù)可以執(zhí)行非預(yù)期功能而達(dá)到攻擊者的目的。嚴(yán)格講不光數(shù)據(jù)庫中的函數(shù)可能存在這些漏洞存儲(chǔ)過程、觸發(fā)器等也存在類似漏洞。這些函數(shù)調(diào)用可以被用來在數(shù)據(jù)庫中生成數(shù)據(jù)或者系統(tǒng)調(diào)用。

以O(shè)racle為例,Oracle 數(shù)據(jù)庫允許自定義函數(shù)或者包中的函數(shù)作為 SQL 語句的一部分來執(zhí)行。同時(shí) Oracle 數(shù)據(jù)庫在 175 個(gè)標(biāo)準(zhǔn)數(shù)據(jù)庫包中提供了 1000 多個(gè)函數(shù),其中有一小部分有可能遭到 SQL 注入攻擊,而那些用作網(wǎng)絡(luò)通信的函數(shù)同樣可以被攻擊者利用。任何的自定義函數(shù)或者那些存在于自定義包中的函數(shù)都可以在 SQL語句中執(zhí)行。當(dāng)函數(shù)作為 SQL SELECT 語句中的一部分來執(zhí)行的時(shí)候?qū)τ跀?shù)據(jù)庫 來 說 不 會(huì) 造 成 任 何 變 化 除 非 這 個(gè) 函 數(shù) 被 標(biāo) 記 成 了 “PRAGMATRANSACTION”。只有極少數(shù)的標(biāo)準(zhǔn)數(shù)據(jù)庫函數(shù)會(huì)被自動(dòng)執(zhí)行,而那些在插入、更新、刪除語句中執(zhí)行的函數(shù)會(huì)對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行修改。當(dāng)攻擊者使用那些有漏洞的標(biāo)準(zhǔn)

Oracle 函數(shù)的時(shí)候就可以將數(shù)據(jù)庫中的信息發(fā)送到遠(yuǎn)程計(jì)算機(jī)或者在其他的數(shù)據(jù)庫服務(wù)器執(zhí)行攻擊。許多基于 Oracle 的應(yīng)用程序都可能會(huì)使用那些有漏洞的數(shù)據(jù)庫軟件包,而這些自定義的軟件包里就有可能會(huì)包括那些可以修改密碼或執(zhí)行那些敏感的應(yīng)用程序的函數(shù)。

對(duì)于函數(shù)調(diào)用注入攻擊來說,任何動(dòng)態(tài)生成的 SQL 語句都是脆弱的,即使是最簡(jiǎn)單的 SQL 語句都可以被攻擊者利用。
例如創(chuàng)建存儲(chǔ)過程test說明

用DBA權(quán)限建立自定義存儲(chǔ)過程

create or replace procedure test (putin varchar2) as

type c_type is ref cursor;

cv c_type;

buffer varchar2(200);

begin

dbms_output.enable(1000000);

open cv for ‘select object_name from all_objects where owner =’’’||putin||’’’and object_type=’’library’’’’;

close cv;

End;

/

這個(gè) SQL 語句不容易遭到其它類型的注入攻擊,但是卻很容易遭受到函數(shù)注入攻擊。這是因?yàn)樵谶@個(gè)函數(shù)中缺乏對(duì)輸入變量的約束。攻擊者可能會(huì)輸入的是一個(gè)想要執(zhí)行的命令。例如 grant dba to public;

低權(quán)限用戶構(gòu)造一個(gè)含有想要執(zhí)行的命令的函數(shù)

Create or replace function get_dba return varchar authid current_user is

Pragma autonomous_transaction;

Begin

Execute immediate ‘grant dba to scott’;

End;

/

在這個(gè)例子中本來存儲(chǔ)過程test是用來查詢用戶所擁有的庫的,但是為了方便其他用戶使用test的執(zhí)行,這一權(quán)限被賦予了所有用戶,導(dǎo)致任何用戶都可以執(zhí)行test存儲(chǔ)過程。但是函數(shù)中由于采用了定義者權(quán)限定義test,所以造成所有用戶在執(zhí)行test的時(shí)候都獲得了DBA權(quán)限。

這一過程是低權(quán)限用戶創(chuàng)建注入函數(shù)get_dba。通過test把任意低權(quán)限賬號(hào)提權(quán)到DBA權(quán)限。

Exec sys.test(‘AAAA’||username.get_dba()—‘);

至此低權(quán)限用戶通過漏洞把自身提權(quán)到DBA權(quán)限可以對(duì)整個(gè)數(shù)據(jù)庫進(jìn)行非法控制。數(shù)據(jù)庫廠商的解決方案一般是通過刪除存在漏洞函數(shù)的public執(zhí)行權(quán)限來解決

4.許多的標(biāo)準(zhǔn)數(shù)據(jù)庫函數(shù)都很容易受到緩沖區(qū)溢出(BUFFER OVER FLOWS)攻擊,這是因?yàn)橹恍枰獙?duì)那些沒有及時(shí)打補(bǔ)丁的數(shù)據(jù)庫做 SQL 注入攻擊就可以很容易利用到緩沖區(qū)溢出漏洞。緩沖區(qū)溢出漏洞危害很大,往往最終會(huì)造成攻擊者直接控制數(shù)據(jù)庫或數(shù)據(jù)庫所在操作系統(tǒng)。

以O(shè)racle為例,在某些版本的標(biāo)準(zhǔn)數(shù)據(jù)庫軟件包和標(biāo)準(zhǔn)數(shù)據(jù)庫函數(shù)中

TZ_OFFSET,TO_TIMESTAMP_TZ, BFILENAME, FROM_TZ, NUMTOYMINTERVAL, andNUMTODSINTERVAL 等函數(shù)存在緩沖區(qū)溢出漏洞。而要使用這些存在緩沖區(qū)溢出漏洞的標(biāo)準(zhǔn)數(shù)據(jù)庫包和函數(shù)來做緩沖區(qū)溢出漏洞攻擊就需要利用到之前所介紹的函數(shù)注入的方法;當(dāng)攻擊者通過 SQL 注入攻擊來利用緩沖區(qū)溢出漏洞的時(shí)候,就可以實(shí)現(xiàn)遠(yuǎn)程連接操作系統(tǒng)。此外,一些應(yīng)用程序和 WEB 服務(wù)器都不能夠正常處理由于緩沖區(qū)溢出所造成的數(shù)據(jù)庫連接中斷;通常,Web 進(jìn)程將會(huì)被掛起,甚至導(dǎo)致發(fā)生拒絕服務(wù)攻擊。

三. 防護(hù)SQL注入

數(shù)據(jù)庫廠商針對(duì)SQL注入進(jìn)行了大量的工作,其中以oracle為例在Oracle推出10G r2的時(shí)候開發(fā)了一個(gè)dbms_assert補(bǔ)丁包。這個(gè)補(bǔ)丁包主要被用來修復(fù)sql注入漏洞,加強(qiáng)對(duì)用戶輸入的信息的防守。修復(fù)了大量存在的數(shù)據(jù)庫漏洞。但并不能呢徹底解決數(shù)據(jù)庫自身的所有SQL注入漏洞。根據(jù)測(cè)試DBMS_ASSERT對(duì)二階SQL注入和跨語言傳參缺乏有效防守。

數(shù)據(jù)庫廠商雖然一直在努力,但受限于數(shù)據(jù)庫應(yīng)用環(huán)境和場(chǎng)景。很多時(shí)候數(shù)據(jù)庫不能及時(shí)進(jìn)行補(bǔ)丁升級(jí),所以很多時(shí)候數(shù)據(jù)庫威脅依然存在。安華金和攻防實(shí)驗(yàn)室建議廣大數(shù)據(jù)庫用戶,除了及時(shí)更新數(shù)據(jù)庫補(bǔ)丁的同時(shí),必要的時(shí)候采用第三方產(chǎn)品來加固數(shù)據(jù)庫的安全。

這里安華金和攻防實(shí)驗(yàn)室給出兩種數(shù)據(jù)庫加固思路:

1.從信息的源頭著手,對(duì)敏感信息進(jìn)行加密。即便被攻擊者獲取到敏感信息,也保障信息是全密文,攻擊者無法獲得有價(jià)值的信息。

2.從數(shù)據(jù)庫安全加固的角度。數(shù)據(jù)庫防火墻可以有效防護(hù)來自外部的攻擊行為。專業(yè)的數(shù)據(jù)庫防火墻應(yīng)該是基于數(shù)據(jù)庫協(xié)議準(zhǔn)確解析,通過對(duì)SQL語法/詞法中存在的風(fēng)險(xiǎn)進(jìn)行準(zhǔn)確識(shí)別,擁有數(shù)據(jù)庫虛擬補(bǔ)丁技術(shù),能夠進(jìn)行細(xì)粒度權(quán)限管控,行為審計(jì)、監(jiān)測(cè)分析等核心功能,以防止攻擊者對(duì)數(shù)據(jù)庫進(jìn)行入侵。發(fā)揮保護(hù)數(shù)據(jù)庫安全的作用。

相信以上無論哪種方式都會(huì)使用戶數(shù)據(jù)庫中的數(shù)據(jù)更加安全。


?
成人精品视频99在线观看免费| 自w到高c的25种方法带图| 无码av一区二区三区| 日本无码sm凌虐强制m字开腿| 出轨的女人在线观看| 三级网站午夜三级| sm调教贱屁股眼哭叫求饶h| 午夜无码熟熟妇丰满人妻| 欧美日韩国产精品| 欧美大成色WWW永久网站婷| 小娟翁止熄痒禁伦短文合集俏佳人| 夫洗澡公强我了30分钟| 闺蜜男友猛撞h花液h深| 国产又黄又大又粗的视频| 天天躁夜夜躁狠狠躁av乐播蜜桃| AV在线观看| 刺激的乱亲小说43部分阅读| 国偷自产av一区二区三区123| 久热国产精品视频一区二区三区| 欧美视频| 一本加勒比hezyo东京热高清| 再深点灬舒服灬太大了添a片v| 六十路の高齢熟女が中文在线播放| 蜜臀av夜夜澡人人爽人人| 手机在线看片| 一女被二男吃奶a片免费观看| 狠狠人妻久久久久久综合蜜桃| 无码人妻av免费一区二区三区 | 50多岁岳不让我戴套| 丝袜美腿一区二区三区 | 成人性生交A片免费看武则天一| 波多野たの结衣在线播放| 伊人狠狠色丁香婷婷综合尤物| 久久久久国色av免费观看性色 | 国产麻豆成人传媒免费观看| 国产麻豆剧传媒精品国产AV| 老汉噗嗤一声整根全进视频| 学生16女人毛片免费视频| 张柏芝阿娇全套无删减1313| 国产chinese男男gay| xfplay5566色资源网站|