天天看點

資料庫漏洞安全防護技巧

  資料庫漏洞的存在有多種方式,由于每一個現實的場景由多元組合而成,是以資料庫漏洞對應也可以從不同角度歸類劃分。這種分類将更有利于我們掌握對每種漏洞的防護技術。

  資料庫安全實驗室主要從以下九個角度對資料庫漏洞進行分類介紹:

  1.從漏洞作用範圍劃分

  遠端漏洞:攻擊者可以利用并直接通過網絡發起對資料庫攻擊的漏洞。這類漏洞危害極大,攻擊者能随心所欲的通過此漏洞危害網絡上可辨識的資料庫。此類漏洞為黑客利用漏洞的主力。

  本地攻擊:攻擊者必須在本機擁有通路權限的前提下才能發起攻擊的漏洞。比較典型有本地權限提升漏洞,這類漏洞在資料庫中廣泛存在,能讓普通使用者獲得最高管理者權限。

  2. 從漏洞危害等級劃分

  漏洞危害等級主要按照CVE的評分來劃分,分為三個檔次:0-3(LOW);4-6(MEDIUM)、7-10(HIGH)。 洞的危害等級劃分是根據一個漏洞對資料庫造成什麼影響來劃分的。對資料庫的響的機密性、安全性、可用性影響越大威脅等級越高,反之危險等級越低。舉例說明:

  CVE-2006-1705危險等級是低。它對資料庫系統檔案無任何影響,可能會導緻資料庫某些配置檔案被修改,對資料庫運作無任何影響。

  CVE-2006-1871危險等級是中。它隻是很可能造成某些資訊洩露,有可能導緻資料庫某些配置檔案被修改,可能導緻資料庫性能下降或小幾率出現斷連結。

  CVE-2006-3702危險等級是高。它可以導緻所有資料庫系統檔案洩露,資料庫完全被破壞,可能導緻資料庫徹底當機。

  3. 從受影響系統劃分

  現有的作業系統多種多樣,并且每種系統對應多個版本。作業系統主要分為以下五類:dos 系統、windows 系統、unix 系統、linux 系統和其他作業系統。由于漏洞注入點位址和作業系統具體版本有着直接的關系,是以需要按照作業系統的具體版本來劃分。以oracle為例,由于不同的作業系統對緩沖區溢出的防守機制不同,導緻這類漏洞基本不存在跨平台的可能。

  4.從漏洞的危害範圍劃分

  漏洞危害是指漏洞被利用後造成的各種危害。本文的危害是指對資料庫的直接危害或利用資料庫對其他系統造成的危害。這些危害可以分為三類:

  危害資料庫自身,這類漏洞主要是對資料庫自身進行攻擊。這類漏洞在下文中的“5. 從黑客入侵資料庫的技術劃分”一節中有詳細講解。

  危害資料庫所在伺服器,這類漏洞通過資料庫對伺服器進行攻擊。其中手段可分為:通過pl/SQL運作OS指令、通過JAVA運作OS指令、直接通過任務排程程式運作OS指令、使用ALTER SYSTEM運作OS指令,在oracle的某些版本中可以利用oracle編譯本地pl/SQL應用程式的方式來運作OS指令。

  危害資料庫所在系統的檔案系統,這類漏洞通過資料庫對伺服器上的檔案系統做攻擊。其中手段可分為:使用 UTL_FILE包通路檔案系統、用JAVA通路檔案系統、利用作業系統環境變量通路檔案系統。

  危害資料庫所在網絡上的其他平台,這類漏洞通過資料庫對網絡上的其他資料庫和服務進行入侵。

  5. 從黑客入侵資料庫技術劃分

  5.1 SQL注入

  SQL本文說所的SQLSQL注入不是web端的,而是針對資料庫自身的SQLSQL注入漏洞。兩者差異很大。 pl/SQL注入的思想非常簡單,

  在正常的sql語句中通過嵌入、注釋、轉義符等手段加入針對資料庫漏洞或資料庫設定缺陷的畸形字元串或其他畸形輸入。通過單次或多次這種畸形輸入逐漸擷取資料庫中更高權限,最終擷取資料庫中敏感資訊或直接奪取資料庫DBA權限。進而可能對資料庫所在的網絡環境和本地伺服器造成危害。

  手段具體分為:

  代碼注入。代碼注入攻擊多在支援多條SQL語句執行的資料中存在。它是通過黑客在正常語句中加入惡意EXECUTE指令完成攻擊的。

  函數調用注入。函數調用注入是代碼注入的變體,但确是

二手手機号碼購買

整個SQL注入的核心。它利用資料庫存在漏洞将惡意語句注入其中。具體手法分為:

  注入select /delete/insert/update語句

  注入函數

  注入匿名pl/SQL塊

  遊标注入

  利用觸發器

  lateral提權技術

  其中每種技術中還有細分,例如lateral提權技術中最著名的是CREATE ANT TRIGGER 權限提DBA、CREATE ANT VIEW 權限提DBA、EXECUTE ANY PROCEDURE權限提DBA、CREATE PROCEDUER 權限提DBA。

  緩沖區溢出注入。這個緩沖區溢出和下文的緩沖區溢出不是一種。這種緩沖區溢出是資料庫系統函數中某些參數被傳入了超過參數長度限制的值,而引發的緩沖區溢出。

  針對SQL操作的注入。最常見的是利用where子句修改SQL語句傳回不同的結果集,來達到擷取資料庫敏感資訊的目的。

  5.2 緩沖區溢出

  緩沖區溢出:這裡所說的緩沖區溢出是指源緩沖區的資料向小于自身位數的緩沖區複制資料時,超越目标緩沖區的位數邊界,并且資料庫未對存入資料進行邊界判斷,最終導緻目标緩沖區爆滿。目标緩沖區記憶體改變程式控制流、奪取作業系統、禁止通路等多種結果。緩沖區溢出主要可以分成四種:靜态資料溢出、棧溢出、堆溢出和格式化串。

  手段具體分為:

   棧溢出 。緩沖區溢出的一種主要是通過利用截取函數傳回值來進行棧溢出。方式主要分為兩種,一種是通過緩沖區溢出改變函數邏輯流程;另一種方式是通過緩沖區溢出改變函數傳回位址。其中比較常見的為第二種。

   堆溢出 。緩沖區溢出的一種,利用原理類似棧溢出,但由于堆中位址是動态配置設定的,無法準确定位,是以黑客要利用堆溢出需要通過DWORD SHOOT技術來對堆進行掃描,擷取堆溢出中可利用的位址。

  靜态資料區溢出。靜态資料區域存放連續的全局變量和未初始化的靜态變量,緩沖區在這發生溢出稱為靜态資料區溢出。

   格式化串 。格式化串漏洞最顯著的例子,就是在printf()系列函數中按照一定的格式對資料進行輸出。黑客主要是利用printf()系列函數有三條特殊的性質,首先,第一個可以被利用的性質是:printf()系列函數的參數的個數是不固定的。其次,利用*printf()的一個特殊的格式符%n,黑客就向記憶體中寫入exploit。再次,利用附加格式符控制跳轉位址的值。

  5.3 其他

   弱密碼 。通常指容易被别人猜測到或被破解工具破解的密碼均為弱密碼,其中很大一部分是資料庫預設密碼,其中有一部分是因為預設密碼産生的。

  撞庫。通過已收集到的在其他服務中注冊的使用者名和密碼,對目标資料庫進行通路嘗試。由于很多人習慣用相同密碼和賬号,是以成功登陸到目标資料庫的可能性大大提高,達成盜取大量敏感資訊的目的。

  暴力破解。通過資料字典(密碼庫)對資料庫的使用者名進行碰撞,最終碰出可以用于通路資料庫的使用者和密碼組合。

  6. 從資料庫漏洞成因劃分

  輸入驗證錯誤。這種錯誤主要來源于字元串、包等輸入值缺乏正确合理的驗證,進而導緻畸形的輸入值進入資料庫系統函數中,對資料庫造成不可預計的後果。

   邊界條件錯誤 。由于資料庫屬于大型複雜的軟體,軟體内部函數調用過于複雜,有時會出現對某個傳入值的邊界,不同地方限制不同,可能對資料庫造成不良影響。

   緩沖區溢出錯誤 。由于資料庫中某些函數中的參數值缺乏邊界限制和檢查,進而暴露出的資料庫漏洞。

   通路驗證錯誤 。通路驗證錯誤主要在資料庫的網絡監聽上,黑客通過發送欺詐資料包,來騙取資料庫重要資訊。

   意外條件錯誤 。由于資料庫中邏輯比較複雜,某些很少被觸發的邏輯分支由于軟體周期等原因,未被及時發現而導緻的資料庫漏洞。

   其他錯誤 。除了以上五類原因錯誤導緻的資料庫漏洞,大部分其他錯誤是由于使用者在使用資料庫時,未能按照資料庫官方要求進行操作和配置,或者是資料庫本身的設計缺陷所引發的漏洞。

  7. 從漏洞利用的結果劃分

   越權通路 。通路原本不可通路的資料,包括讀和寫。這一條通常是攻擊者的核心目的,而且可造成非常嚴重的災難(如銀行資料被人可寫)。

   提權 。通過越權等方式,對一個低權限使用者提升權限,一步一步直到提升為DBA權限。利用提權後的賬号竊取資料庫中核心資料。

   拒絕服務 。攻擊者強制目标資料庫停止提供服務,是黑客常用的攻擊手段之一。其中資料庫端口進行的消耗性攻擊隻是拒絕服務攻擊的一小部分,凡是使資料庫服務被暫停甚至所處主機當機,都屬于拒絕服務攻擊。

   奪取作業系統 。當黑客通過網絡對資料庫進行攻擊,利用緩沖區漏洞的攻擊會通過劫持被入侵函數中的棧中的函數傳回值,來奪取函數控制,跳轉到黑客編寫的shellcode。當shellcode打開CMD(windows)即可通過資料庫賬号來操控作業系統,進而奪取整個作業系統的過程。

   認證繞過 。通常利用認證系統的漏洞不用受權就能進入系統。通常認證繞過都是為權限提升或直接的資料通路服務的。

  8. 從資料庫存漏洞的位置劃分

  由于不同資料庫類似功能的名稱不同本文依oracle為例說明:按照漏洞位置可以分為TNS(監聽)漏洞 、Aurora GIOP server漏洞、XDB元件漏洞、DBMS_CDC_IMPDP漏洞、LT元件漏洞、DBMS_CDC_SUBSCRIBE漏洞、DBMS_CDC_ISUBSCRIBE漏洞、MDSYS.SDO_GEOM_TRIG_INSI漏洞、

  SYS.CDC_DROP_CTABLE_BEFORE漏洞、DBMS_SCHRDULER漏洞、UTL_FILE漏洞、Data Redaction漏洞、審計漏洞等。

  9. 從漏洞産生的時序上劃分

   已發現很久的漏洞 。資料庫廠商已經釋出更新檔或修補方法,很多人已經知曉。這類漏洞通常很多人已經進行了修改,宏觀上看,危害較小。

  剛發現的漏洞。資料庫廠商剛釋出更新檔或修補方法,知道的人還不多。相對于上一種漏洞其危害性較大,如果此時出現了蠕蟲或傻瓜化的利用程式,那麼會導緻大批資料庫受到攻擊。這也是一般黑客最多利用的漏洞。

  0day漏洞。還沒有公開的漏洞,在私下交易中的。這類漏洞通常是最危險的,往往是有組織黑客所采用的。