多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > Oracle > 如何入侵被防火墻防護的Oracle數據庫

如何入侵被防火墻防護的Oracle數據庫

來源:程序員人生   發布時間:2013-10-21 00:16:55 閱讀次數:3517次
【建站學院文檔】本文也并沒有對sql注射中存在的一些共性進行討論,如利用substr函數和經典注射這些,而是站在oracle數據庫的角度,盡量展現一些Sql注射入侵的思路以及如何利用數據庫的一些特性,在web 上做最大的入侵。一些牛人的工具也即將發布出來,希望還有人喜歡手工優美的注射。

  一、Oracle 簡單介紹

  Oracle作為一款比較早期出現的RDBMS數據庫,市場占有率比較大,經常用在一些大型數據庫上。它本身除了很好地支持各種SQL語句外,還提供了各種豐富的包,存儲過程,甚至支持java和創建library等特性,如此強大的功能為Hacking提供了很好的便利。

  Oracle自身有很多默認的帳戶,并且有很多的存儲過程,這些存儲過程是由系統建立的,很多默認都是對public開放的,在過去的幾年里公布了很多oracle的漏洞,包括溢出和SQL注射在內的許多漏洞。在這里面,SQL注射漏洞顯得格外嚴重,因為在Oracle里,在不加其他關鍵字 AUTHID CURRENT_USER的情況下,創建的存儲過程在運行時是以創建者身份運行的,而public對這些存儲過程都有權限調用,所以一旦自帶存儲過程存在注射的話,很容易讓普通用戶提升到Oracle系統權限。Oracle本身內置了很多的帳戶,其中一些帳戶都有默認的密碼并且具有CONNECT的權限,這樣如果oralce的端口沒有受到防火墻的保護又可以被人遠程連接的話,就可以被人利用默認帳戶遠程登陸進系統然后利用系統里的存儲過程的SQL注射漏洞,系統就會淪陷,當然,登陸進oracle還需要sid,不過這也并不困難,oracle的tnslintener默認沒有設置密碼,完全可以用 tnscmd.pl用services命令查出系統的sid(到比較新的版本,這個漏洞已經被修復了),這也是非常經典的入侵oracle的方式。

  二、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 基本思路

  下面說說如何確定目標,注射參數的確定就由大家自己來了,主要是如何判斷數據庫屬于oracle,根據數據庫的特性很容易判斷出來,oracle支持 --類型注釋,但是不支持;分隔執行多語句,oracle有很多系統表,譬如all_tables,通過對這些表的訪問也可以判斷出是否屬于 oracle,另外在oracle里的一些函數也可以用來判斷,譬如utl_http.request這些,語言上的小細節也可以用來區分系統,譬如在 oracle里||是連接符號,但是在其他數據庫里就不是了,所以 and chr(123)||chr(123)=chr(123)||chr(123)這樣的,如果可以順利執行,那么就基本應該是oracle了,另外,一些腳本在出現數據庫查詢錯誤時,對錯誤信息沒有處理,也會泄露真實的后臺數據庫,這個可以很明顯地看出來。

  然后需要確定的是注射點的類型,一般的情況下,我們進入的參數不是數字類型就基本是字符類型(其他很多人所說的搜索型注射其實還是應該歸結于字符類型的),對于數字類型的基本不用考慮什么,很容易添加--注釋字符就可以讓語句正確閉合了,如果是字符類型的就要考慮如何讓整個語句正確,通常是添加’以及 --這些注射字符來構造自己的注射環境。在一些復雜的情況下,如同一個參數在多個sql語句和邏輯里出現,就要自己小心構造出符合環境的注射語句了,記住,我們只需要一個能便利插入自己sql命令的完好環境:)
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美午夜理伦三级理论三级 | tom影院亚洲国产日本一区 | 亚洲精品免费在线观看 | 国产精品久久久久久久久久一区 | 欧美成人免费高清二区三区 | 国产精品亚洲欧美一区麻豆 | 欧美视屏| 中文字幕福利 | 一二三四视频免费观看高清版在线 | 欧美在线观看高清一二三区 | 999精品久久久中文字幕蜜桃 | 美国一级毛片视频 | 成年人视频在线观看免费 | 亚洲色图校园春色 | h视频无遮挡免费网站 | 中文第一页 | 在线免费观看a级片 | 国产成人啪午夜精品网站 | 在线播放免费人成毛片乱码 | 一级毛片免费视频观看 | 欧美一级aa天码毛片 | 亚洲精品综合一区二区三区 | 日韩精品手机在线 | 德国女人一级毛片免费 | xx性黑人freesex| 性欧美大战久久久久久久 | 欧美一区精品 | v片免费观看 | 亚洲精品成人图区 | 亚洲一区二区观看 | 麻豆va一区二区三区久久浪 | 在线欧美三级 | 青青草原国产在线观看 | 在线满18网站观看视频 | 免费看欧美毛片大片免费看 | 国产高清日韩 | 成人免费播放视频777777 | 国产色在线 | 亚洲 国产色综合久久无码有码 国产色综合一区二区三区 国产上床视频 | 欧美日韩国产精品va | 一二三四视频在线观看免费高清 | 亚洲视频成人 |