時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(3)
??? Oracle的銷售在向客戶兜售其數(shù)據(jù)庫系統(tǒng)一直把它吹捧為牢不可破的,耍嘴皮子容易,兌現(xiàn)起來可就不那么容易了。不管什么計算機(jī)系統(tǒng),人們總能夠找到攻擊它的方法,Oracle也不例外。本文將和大家從黑客的角度討論黑客是用哪些方法把黑手伸向了你原以為他們不能觸及的數(shù)據(jù),希望作為Oracle的數(shù)據(jù)庫管理員能夠清楚的闡明自己基礎(chǔ)架構(gòu)的哪些區(qū)域比較容易受到攻擊。同時我們也會討論保護(hù)系統(tǒng)防范攻擊的方法。
??? 1.SQL注入攻擊
??? 如今大部分的Oracle數(shù)據(jù)庫都具有為某種類型網(wǎng)絡(luò)應(yīng)用服務(wù)的后端數(shù)據(jù)存儲區(qū),網(wǎng)頁應(yīng)用使數(shù)據(jù)庫更容易成為我們的攻擊目標(biāo)體現(xiàn)在三個方面。其一,這些應(yīng)用界面非常復(fù)雜,具有多個組成成分,使數(shù)據(jù)庫管理員難以對它們進(jìn)行徹底檢查。其二,阻止程序員侵入的屏障很低,即便不是C語言的編程專家,也能夠?qū)σ恍╉撁孢M(jìn)行攻擊。下面我們會簡單地解釋為什么這對我們這么重要。第三個原因是優(yōu)先級的問題。網(wǎng)頁應(yīng)用一直處于發(fā)展的模式,所以他們在不斷變化,推陳出新。這樣安全問題就不是一個必須優(yōu)先考慮的問題。
??? SQL注入攻擊是一種很簡單的攻擊,在頁面表單里輸入信息,悄悄地加入一些特殊代碼,誘使應(yīng)用程序在數(shù)據(jù)庫里執(zhí)行這些代碼,并返回一些程序員沒有料到的結(jié)果。例如,有一份用戶登錄表格,要求輸入用戶名和密碼才能登錄,在用戶名這一欄,輸入以下代碼:
cyw'); select username, password from all_users;--
??? 如果數(shù)據(jù)庫程序員沒有聰明到能夠檢查出類似的信息并"清洗"掉我們的輸入,該代碼將在遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)執(zhí)行,然后這些關(guān)于所有用戶名和密碼的敏感數(shù)據(jù)就會返回到我們的瀏覽器。
??? 你可能會認(rèn)為這是在危言聳聽,不過還有更絕的。David Litchfield在他的著作《Oracle黑客手冊》(Oracle Hacker's Handbook)中把某種特殊的pl/sql注入攻擊美其名曰:圣杯(holy grail),因?yàn)樗racle 8到Oracle10g的所有Oracle數(shù)據(jù)庫版本。很想知道其作用原理吧。你可以利用一個被稱為DBMS_EXPORT_EXTENSION的程序包,使用注入攻擊獲取執(zhí)行一個異常處理程序的代碼,該程序會賦予用戶或所有相關(guān)用戶數(shù)據(jù)庫管理員的特權(quán)。
??? 這就是Oracle發(fā)布的著名安全升級補(bǔ)丁Security Alert 68所針對的漏洞。不過據(jù)Litchfield稱,這些漏洞是永遠(yuǎn)無法完全修補(bǔ)完畢的。
??? 防范此類攻擊的方法
??? 總而言之,雖說沒有萬能的防彈衣,但鑒于這個問題涉及到所有面向網(wǎng)絡(luò)的應(yīng)用軟件,還是要盡力防范。目前市面上有各式各樣可加以利用的SQL注入檢測技術(shù)??梢詤⒄説ttp://www.securityfocus.com/infocus/1704 系列文章的詳細(xì)介紹。
??? 還可以用不同的入侵檢測工具在不同的水平上檢測SQL注入攻擊。訪問專門從事Oracle安全性研究的Pete Finnigan的安全網(wǎng)站http://www.petefinnigan.com/orasec.htm,在該網(wǎng)頁搜索"sql injection",可以獲得更多相關(guān)信息。Pete Finnigan曾在其博客上報告稱Steven Feurstein目前正在編寫一個稱為SQL Guard 的pl/sql程序包,專門用來防止SQL注入攻擊,詳情請查看以下網(wǎng)頁http://www.petefinnigan.com/weblog/archives/00001115.htm。
??? 對于軟件開發(fā)人員來說,很多軟件包都能夠幫助你"清洗"輸入信息。如果你調(diào)用對從頁面表單接受的每個值都調(diào)用清洗例行程序進(jìn)行處理,這樣可以更加嚴(yán)密的保護(hù)你的系統(tǒng)。不過,最好使用SQL注入工具對軟件進(jìn)行測試和驗(yàn)證,以確保萬無一失。
??? 1. 默認(rèn)密碼
??? Oracle數(shù)據(jù)庫是一個龐大的系統(tǒng),提供了能夠創(chuàng)建一切的模式。絕大部分的系統(tǒng)自帶用戶登錄都配備了預(yù)設(shè)的默認(rèn)密碼。想知道數(shù)據(jù)庫管理員工作是不是夠勤奮?這里有一個方法可以找到答案。看看下面這些最常用的預(yù)設(shè)用戶名和密碼是不是能夠登錄到數(shù)據(jù)庫吧:
Username Password
applsys apps
ctxsys change_on_install
dbsnmp dbsnmp
outln outln
owa owa
perfstat perfstat
scott tiger
system change_on_install
system manager
sys change_on_install
sys manager
??? 就算數(shù)據(jù)庫管理員已經(jīng)很勤奮的把這些默認(rèn)配對都改了,有時候想猜出登錄密碼也不是一件困難的事情,逐個試試"oracle"、"oracle4"、"oracle8i"、"oracle11g",看看碰巧是不是有一個能登錄上去的。
Pete Finnigan提供了一份關(guān)于缺省用戶和對應(yīng)密碼的名單,該名單非常全面而且是最新的,并包括已經(jīng)加密的密碼。如果你用all_users來進(jìn)行查詢,可以嘗試并比較一下這份名單,詳細(xì)名單請參閱:http://www.petefinnigan.com/default/default_password_list.htm。
??? 防范此類攻擊的方法
??? 作為數(shù)據(jù)庫管理員,應(yīng)該定期審核所有的數(shù)據(jù)庫密碼,如果某些商業(yè)方面的阻力使你不能輕易更改容易被人猜出的密碼,你可以盡量心平氣和地和相關(guān)人員解釋,用一些直觀的例子來闡明如果不修改密碼的話會有什么不好的事情發(fā)生,會有什么樣的風(fēng)險存在。
??? Oracle也提供了密碼安全profile,你可以激活該profile,在某種水平上加強(qiáng)數(shù)據(jù)庫密碼的復(fù)雜性,還可以執(zhí)行定期密碼失效。要注意要把這個功能設(shè)置為只對通過網(wǎng)絡(luò)服務(wù)器或中間層應(yīng)用服務(wù)器登錄的事件起作用。
??? 2. 蠻力攻擊(Brute Force)
??? 蠻力攻擊,就像其名字所暗示的,就是不停的撬,直到"鎖"打開為止的方法。對于Oracle數(shù)據(jù)庫來說,就是用某種自動執(zhí)行的進(jìn)程,通過嘗試所有的字母數(shù)字組合來破解用戶名和密碼。
??? Unix的管理員就可以利用一款名為John the Ripper的密碼破解軟件來執(zhí)行這類的攻擊?,F(xiàn)在如果你下載某個補(bǔ)丁,你也可以利用這款軟件來對Oracle進(jìn)行蠻力攻擊,敲開其密碼。不過根據(jù)密碼的復(fù)雜程度不同,這可能是個很費(fèi)時的過程,如果你想加快這個進(jìn)程,可以事先準(zhǔn)備一張包含所有密碼加密的表,這樣的表叫做Rainbow table,你可以為每個用戶名準(zhǔn)備一張不同的rainbow table,因?yàn)檫@種密碼加密算法把用戶名作為助燃劑。在這里就不再深入介紹更多的細(xì)節(jié)問題了,大家可以查閱http://www.antsight.com/zsl/rainbowcrack/獲得更多信息。
??? Oracle服務(wù)器的默認(rèn)設(shè)置是,對某個特定帳戶輸錯密碼達(dá)十次就會自動鎖定該帳戶。不過通常"sys as sysdba"權(quán)限沒有這個限制,這可能是因?yàn)槿绻沔i定了管理員,那所有人都將被鎖定。這樣的設(shè)置為我們黑客破解軟件(OraBrute)如開辟了一條生路,它們會晝夜不停地敲打你數(shù)據(jù)庫的前門,直到它乖乖打開為止。
#p#副標(biāo)題#e#
??? 防范此類攻擊的方法
??? 想要抵御此類攻擊,可以使用之前提及的對付預(yù)設(shè)密碼攻擊的方法。不過好奇心過重的數(shù)據(jù)庫管理員也可能下載上面提到的工具侵入自己的系統(tǒng)。這說明了你真正的風(fēng)險來自何方。
??? 4. 從后門偷竊數(shù)據(jù)
??? 在安全領(lǐng)域,這個概念被稱為數(shù)據(jù)向外滲漏(exfiltration),這個詞來自軍事術(shù)語,其反面是向敵人內(nèi)部滲透(infiltration),意思就是在不被發(fā)現(xiàn)的情況下偷偷潛出。對于從目標(biāo)數(shù)據(jù)庫獲取數(shù)據(jù)的過程,可能就像從一些磁帶備份中挑揀數(shù)據(jù)和還原數(shù)據(jù)庫或者像從一個被毀壞的磁盤重復(fù)制一份拷貝一樣簡單。不過,也有可能涉及到窺探網(wǎng)絡(luò)傳輸以獲得相關(guān)的數(shù)據(jù)包。
??? Oracle有一個名為UTL_TCP的程序包,能夠使外部連接指向其他服務(wù)器。對它稍微改編一下,就可以利用它從數(shù)據(jù)庫發(fā)送一套低帶寬數(shù)據(jù)流到遠(yuǎn)程主機(jī)。Oracle也附帶了一些有用的程序包來隱藏數(shù)據(jù)流里的信息,如果你在發(fā)動潛入行動的時候擔(dān)心入侵檢測系統(tǒng)會監(jiān)測到你的不法活動,那么可以充分利用這些功能秘密嵌入,包括DBMS_OBFUSCATION_TOOLKIT和DBMS_CRYPTO。
??? 防范此類攻擊的方法
??? 防范此類攻擊的最佳辦法是安裝入侵檢測系統(tǒng),這些系統(tǒng)能夠檢測網(wǎng)絡(luò)中流入和流出的數(shù)據(jù)包。有一些檢測系統(tǒng)還提供深入數(shù)據(jù)包檢測,可以確實(shí)檢查某些SQL,并可以通過設(shè)定規(guī)則在某種情況下觸發(fā)報警器。這些工具還能夠查找泄密跡象,例如添加的UNION、各種類型的short- circuiting命令、利用"--"注釋進(jìn)行截斷等等。
??? 5. 監(jiān)聽器
??? 計算機(jī)世界最讓人覺得了不起的事情就是,不管有多么困難的事,總有辦法馴服它。尤其是在安全領(lǐng)域,一些漏洞如此的簡單,而這些漏洞的出現(xiàn)僅僅是因?yàn)橛脩?也包括我們現(xiàn)在扮演的角色——黑客)并沒有像軟件設(shè)計者(程序員或軟件開發(fā)員)本來預(yù)想的那樣思考和行動。
??? Oracle監(jiān)聽器的設(shè)置是為了能夠?qū)崿F(xiàn)遠(yuǎn)程管理。那么如果攻擊者把監(jiān)聽器的logfile設(shè)置為Unix .rhosts文件呢?這樣攻擊者就可以輕松的對.rhosts文件進(jìn)行寫操作。Unix上的這個文件設(shè)置了什么人可以不用密碼而使用rsh、rlogin和rcp命令登錄。你可以想想將會發(fā)生什么事情。
??? 這其實(shí)只是圍繞Oracle監(jiān)聽器安全問題的冰山一角而已。其他的還有緩沖區(qū)溢出等一大堆問題需要注意。事實(shí)上Litchfield的《Oracle黑客手冊》里花了一整章的內(nèi)容來討論這個主題。
??? 防范此類攻擊的方法
??? 從預(yù)防的角
關(guān)鍵詞標(biāo)簽:黑客,Oracle系統(tǒng)
相關(guān)閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法