Wednesday, November 11, 2020

Find Oracle APPS User Password From Backend

 

How to get Oracle Application User Password from database - oracle.apps.fnd.security.WebSessionManagerProc.decrypt

Step 1: Compile the below package in APPS schema

-- APPS SCHEMA
DROP PACKAGE get_pwd;

CREATE OR REPLACE PACKAGE get_pwd
AUTHID CURRENT_USER
IS
  FUNCTION decrypt(key   IN VARCHAR2,
                   value IN VARCHAR2
                                 ) return VARCHAR2;
end get_pwd;
/

CREATE OR REPLACE PACKAGE BODY get_pwd
AS
  FUNCTION decrypt_java(key   IN VARCHAR2,
                        value IN VARCHAR2
                                         )
  RETURN VARCHAR2
  AS
  LANGUAGE JAVA NAME 'oracle.apps.fnd.security.WebSessionManagerProc.decrypt
  (java.lang.String,java.lang.String) return java.lang.String';

  FUNCTION decrypt(key   IN VARCHAR2,
                   value IN VARCHAR2
                                 ) return VARCHAR2
  AS
  BEGIN
    IF user = 'APPSVIEWER' -- Schema from where password should not be shown
        THEN
          RETURN NULL;
        ELSE
      RETURN (decrypt_java(KEY,VALUE));
        END IF;
  END;
END get_pwd;

Step 2: Below query will help you to get password

SELECT usr.user_name,usr.user_id,usr.description,
    get_pwd.decrypt
         ((SELECT (SELECT get_pwd.decrypt
                             (fnd_web_sec.get_guest_username_pwd,
                              usertable.encrypted_foundation_password
                             )
                     FROM DUAL) AS apps_password
             FROM fnd_user usertable
            WHERE usertable.user_name =
                     (SELECT SUBSTR
                                 (fnd_web_sec.get_guest_username_pwd,
                                  1,
                                    INSTR
                                         (fnd_web_sec.get_guest_username_pwd,
                                          '/'
                                         )
                                  - 1
                                 )
                        FROM DUAL)),
          usr.encrypted_user_password
         ) PASSWORD
 FROM fnd_user usr
WHERE usr.user_name IN ('SYSADMIN');

No comments:

Post a Comment