DB Link içerisindeki kullanıcının şifresinin tespit edilmesi

25 Eki by Ahmet Duruöz

DB Link içerisindeki kullanıcının şifresinin tespit edilmesi

Oracle veritabanları arasında iletişim sağlamak için oluşturulan DB Linklerdeki kullanıcıların zamanla şifrelerinin ne olduğu unutulabilmektedir. Bu kullanıcıların şifrelerinin açık hali tespit edilebilir. Şifrenin tespiti için aşağıdaki adımları uygulayabilirsiniz.

Bu adımlar , veritabanı versiyonu 11.2.0.2 ve öncesinde oluşturulan db linkler için geçerlidir. Sonraki versiyonlarda passwordx değeri 50 karakterden den fazla olduğunda şifre çözülememektedir.

DB linkin oluşturulduğu veritabanında aşağıdaki adımları uygulayın.

Öncelikle şifresinin şifreli hali 50 karakterli olan db linkerin ne olduğunu belirleyelim.

SQL> column name format a30
SQL> column userid format a30
SQL> select name, userid from sys.link$ where length(passwordx)=50;

NAME			               USERID
------------------------------ ------------------------------
ORCL_LINK		           ORCL_LINK_USER

Sonrasında bu db link için kullanılan şifrenin , şifreli halini tespit edelim.

SQL> set lines 1000
SQL> column name format a30
SQL> column passwordx format a60
SQL> select name,passwordx from sys.link$ where name in ('ORCL_LINK');

NAME			       PASSWORDX
------------------------------ ------------------------------------------------------------
ORCL_LINK		       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Tespit edilen şifrenin açık halini bulalım. Aşağıdaki prosedürü çalıştırdığımızda “Sifre : XXXXXXXXX” şeklindeki bölümde şifremizin açık hali yazacaktır.

SQL> SET SERVEROUTPUT ON
SQL> 

DECLARE
   db_link_password   VARCHAR2 (100);
BEGIN
   db_link_password := 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';

   DBMS_OUTPUT.put_line (
         'Plain password: '
      || UTL_RAW.cast_to_varchar2 (
            DBMS_CRYPTO.decrypt (SUBSTR (db_link_password, 19),
                                 DBMS_CRYPTO.DES_CBC_PKCS5,
                                 SUBSTR (db_link_password, 3, 16))));
END;
/
 
Sifre : XXXXXXXXX

PL/SQL procedure successfully completed.

SQL>

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir