|
6.權限提升
簡單的說,“權限提升”包括使用現(xiàn)有的低權限帳戶,利用巧取、偷竊或非法的方式獲取更高的權限,甚至是數據庫管理員的權限。
下面舉個使用CREATEANY權限的例子。假設我能通過一個擁有CREATEANYTRIGGER權限的用戶CYW訪問數據庫,這樣我就能在任意的模式里創(chuàng)建觸發(fā)器。如果你能追蹤到一個任何用戶都能執(zhí)行寫入操作的表,你在SYSTEM里創(chuàng)建了一個能夠在低權限的你對該可寫表進行插入或更新操作時執(zhí)行的觸發(fā)器。你編寫的觸發(fā)器會調用一個存儲過程(也是你自己編寫的),該存儲過程會使用AUTHIDCURRENT_USER為調用者授權。這就意味著,當該觸發(fā)器運行“你”的存儲過程時,擁有SYSTEM的權限。現(xiàn)在你的非法存儲過程內部,包含了“EXECUTEIMMEDIATE’GRANTDBATOCYW’”。這樣我就可以在觸發(fā)器運行的時候插入到我的公共表里,該觸發(fā)器由SYSTEM所有,而SYSTEM會調用我的change_privileges存儲過程,這個存儲過程使用AUTHIDCURRENT_USER為我授權。這樣“我”就可以在不改變我自身權限的情況下獲得并執(zhí)行SYSTEM的權限。
防范此類攻擊的方法
數據庫管理員該怎么應對這個問題呢?首先,你應該審核數據庫的CREATEANY權限,刪除其中不需要的那些部分。其次,看看類似于www.securityfocus.com這類的論壇,看看關于權限提升的最新漏洞。最后,激活對某些特定類型數據庫活動的審計功能并沒有什么壞處,這樣數據庫就能讓你實現(xiàn)自我保護。當數據庫自行審核類似于GRANTDBA這樣的事件時,你可以通過查看審計日志知道有沒有出現(xiàn)惡意或突發(fā)的活動
7.操作系統(tǒng)指令和安全
黑客并不總是通過shell命令行提示符登錄到你的系統(tǒng)的。不過,通過誘使Oracle數據庫運行操作系統(tǒng)水平的指令,我們的確給黑客提供了一條運行指令的有效途徑。這些指令能夠刪除和破壞文件、改寫日志(以便隱藏他們的行蹤)、創(chuàng)建帳戶,以及其他一些能通過命令行輸入指令達成的操作。他們是怎么做到的呢?盡管方法有很多,最容易的一種就是通過Java和PL/SQL這些程序語言。通?梢岳脛(chuàng)建外部存儲過程的能力,使之執(zhí)行一個具備系統(tǒng)調用功能的存儲程序。這個系統(tǒng)調用指令能夠以首次安裝時使用的oracle帳戶權限執(zhí)行。
防范此類攻擊的方法
雖然Oracle在保護用戶免受此類攻擊上已經取得了一定進展,不過你最好還是把希望寄托在你的預防監(jiān)測工作上。嚴密留意你的系統(tǒng)內部有沒有出現(xiàn)這類活動,當有攻擊者試圖對你使用此類惡意攻擊時,你最好能夠事先掌握主動權。
8.文件系統(tǒng)安全
對文件系統(tǒng)(filesystem)的訪問是一個讓你頭大的棘手問題。“oracle”操作系統(tǒng)用戶擁有所有Oracle軟件和數據庫數據文件的訪問權限,所以如果數據庫內部的某些用戶利用UTL_FILE包訪問filesystem上的文件時,他們就可以訪問之前由于權限和角色限制而無權訪問的很多數據庫內部文件。
防范此類攻擊的方法
Oracle引入DIRECTORY對象在防止此類攻擊上也有一定作用。在10g系統(tǒng)中,必須通過DIRECTORY對象來定義某些類型的讀寫操作。這意味著用戶必須擁有CREATEDIRECTORY權限,而在前面介紹的權限提升問題中,我們已經看到可以通過很多方法獲取這種權限。即使這些也被解決了,還是有很多方法可以通過PL/SQL或Java語言來獲取對filesystem的訪問權限和對文件的讀寫權限。
總論:
就像上面討論的一樣,Oracle數據庫產品有很多漏洞,有時候看起來就像由一些聰明透頂的工程師建造的一所豪宅,工程師固然聰明,但比那些覬覦此宅的黑客們忠厚老實多了。因此,他們沒有預料到有人會利用這種種方法來偷磚竊瓦削弱豪宅的根基。黑客可以通過很多不同的方法進行攻擊,侵入到目標數據庫。
不過,只要數據庫管理員能夠花點時間和精力來解決,其中很多問題都是可以避免的。Oracle已經針對很多漏洞在數據庫內部打上了補丁,而且入侵監(jiān)測系統(tǒng)能體構額外的安全保障。所以數據庫管理員應該對每一種漏洞都銘記在心,警惕性才是防范的關鍵,盡量執(zhí)行好自己制定的安全計劃。 |
【收藏】【打印】【進入論壇】 |
|
|
|
|
|
|
|