程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 進行Oracle web環境下注射的具體方法

進行Oracle web環境下注射的具體方法

編輯:Oracle數據庫基礎

在每個計算機技術的產生都會有不同的背景,以下的文章就是介紹Oracle Web Hacking 技術背景,以下是文章關於Oracle Web Hacking 技術背景的具體介紹,望你浏覽完以下的內容會有所收獲。

Oracle豐富的系統表。Oracle幾乎所有的信息都存儲系統表裡,當前數據庫運行的狀態,當前用戶的信息,當前數據庫的信息,用戶所能訪問的數據庫和表的信息......系統表就是整個數據庫的核心部分,通過恰當地查詢需要的系統表,幾乎可以獲得所有的信息。

如sys.v_$option就包含了當前數據庫的一些信息,如是否支持Java等,all_tables裡就包含了所有的表信息,all_tab_colmuns包含所有的列信息等等,為我們獲得信息提供了非常大的便利,後面將有關於如何利用系統表獲取敏感信息的描述。

在Oracle的各種漏洞裡,需要特別說下存儲過程的注射,其實也並沒有什麼神秘,存儲過程和函數一樣是接受用戶的輸入然後送到數據庫服務器解析執行,如果是采取的組裝成SQL字符串的形式執行的話,就很容易將數據和命令混淆,導致SQL注射。

但是根據注射發生的點不同,一樣地注射漏洞的性質也不同。Oracle使用的是PL/SQL,漏洞發生在select等DML語句的,因為不支持多語句的執行,所以如果想運行自己的語句如GRANT DBA TO LOVEHSELL這些DDL語句的話,就必須創建自己的函數或存儲過程,如果沒有這相關的權限還可以利用cursor注射,用dbms_sql包來饒過限制。

大多數的注射正是上面這些有限制的注射,必須依靠自己創建的一些其他包或者cursor來實現提升權限的目的,但是還是有些非常少見但是注射環境非常寬松的漏洞,就是用戶的輸入被放在begin和end之間的匿名pl/sql塊的注射,這種環境下的注射可以直接注射進多語句,幾乎沒有任何限制,而可以看到,正是這種閃光的漏洞為我們的web注射技術帶來了怎樣的輝煌。

好了,上面談到的都是Oracle的一些攻擊技術,但是現在很多的環境是,對外開放web服務,後台數據庫被防火牆保護著,無法得到數據庫的太多詳細信息,已經不能直接登陸進數據庫進行操作,這個時候就要考慮利用web下的漏洞來攻擊後台的數據庫了。

現在來看下如何進行Oracle web環境下注射吧!Oracle可以在各種web環境下良好地工作,各種web環境對我們注射的影響也並不是很大,在ASP,.net,JSP中對進入的參數基本沒做任何過濾,但是由於.Net,JSP語言是強類型語言,在數字類型的注射上即使sql語句沒有做過濾但是可能在接受參數的時候就出錯了,所以注射出現在字符串類型的參數上比較多一些。

在PHP環境下,所有的'會被轉義為\',在Oracle環境裡\'並不會成為轉義(在Oracle環境裡的正確轉義應該為''),但是在我們自己的注射語句裡使用'會因為被轉成\'而遭到破壞,所以在注射時不能使用'。除此之外,web環境下就沒什麼限制了。

在數據庫方面,如果語句采取的是參數的方式執行,也不能夠被注射,除非使用的是字符串連接的方式(由於字符串連接的方式比較簡單,也因為一些歷史上的原因,很多程序員往往會偏向於這種方式,),字符串連接方式的話也會分為兩種,參數在select,update,insert這些DML語句之間,與參數在pl/sql匿名塊之間,如果web程序沒有捕獲錯誤,那麼我們很容易根據錯誤判斷出當前語句的類型,後面會提到。

在pl/sql匿名塊之間的比較少見,但也不排除,這樣的注射基本也是沒有什麼限制的,可以執行多語句,做任何事,跟本地登陸沒有任何區別。

以上的相關內容就是對Oracle Web Hacking 技術背景的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved