有时候我们会需要破解oracle下用户的密码,这时,可能使用orabf工具是个不错的选择。
orabf工具可以从网上下载到,使用也很简单,以下是10g环境下的实验:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.3.0 - Productio
NLSRTL Version 10.2.0.3.0 – Production
SQL> select username,password from dba_users;
USERNAME PASSWORD
------------------------------ ------------------------------
SYSTEM 2D594E86F93B17A1
SYS 8A8F025737A9097A
OUTLN 4A3BA55E08595C81
LINCINQ D78C79D84704D283
LINC 2555BD338BBA1FF5
DIP CE4A36B8E06CA59C
TSMSYS 3DF26A8B17D0F29F
WMSYS 7C9BA362F8314299
DBSNMP E066D214D5421CCC
使用orabf工具:
D:\orabf>
D:\orabf>orabf 2D594E86F93B17A1:system
orabf v0.7.6, (C)2005 orm@toolcrypt.org
---------------------------------------
Trying default passwords...
password found: SYSTEM:ORACLE
D:\orabf>orabf 8A8F025737A9097A:sys
orabf v0.7.6, (C)2005 orm@toolcrypt.org
---------------------------------------
Trying default passwords...
password found: SYS:ORACLE
D:\orabf>orabf 2555BD338BBA1FF5:linc
orabf v0.7.6, (C)2005 orm@toolcrypt.org
---------------------------------------
Trying default passwords...done
Starting brute force session using charset:
#$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_
press 'q' to quit. any other key to see status
password found: LINC:UNIX
1265807 passwords tried. elapsed time 00:00:01. t/s:1227449
一般比较简单的密码,orabf可以轻易地进行暴力破解,或者从文本文件default.txt中枚举得到,当然default.txt文件也是可以手工编辑的。
另外在11g下,出于安全考虑,oracle不再显示dba_uses.password列的信息。
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL> select username,password from dba_users;
USERNAME PASSWORD
------------------------------ ------------------------------
DBSNMP
TEST1
SYSMAN
TEST
MGMT_VIEW
SYS
SYSTEM
FLOWS_FILES
MDSYS
ORDSYS
EXFSYS
WMSYS
ORACLE_OCM
APPQOSSYS
XS$NULL
APEX_030200
OWBSYS_AUDIT
LBACSYS
MDDATA
ORDDATA
CTXSYS
ANONYMOUS
OUTLN
DIP
APEX_PUBLIC_USER
XDB
SPATIAL_CSW_ADMIN_USR
SPATIAL_WFS_ADMIN_USR
ORDPLUGINS
OWBSYS
SI_INFORMTN_SCHEMA
OLAPSYS
已选择32行。
如果需要查询password信息,可直接查询user$基表,以下是11g的实验环境:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 – Production
SQL> show parameter sec_case_sensitive_logon
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon boolean TRUE
SQL> create user xsfree identified by xsfree;
用户已创建。
SQL> select user#,name,password from user$ where name='XSFREE';
USER# NAME PASSWORD
---------- ------------------------------ ------------------------------
90 XSFREE F144DFF1B6068904
SQL> drop user xsfree;
用户已删除。
SQL> create user xsfree identified by XSFREE;
用户已创建。
SQL> select user#,name,password from user$ where name='XSFREE';
USER# NAME PASSWORD
---------- ------------------------------ ------------------------------
91 XSFREE F144DFF1B6068904
SQL> grant connect to xsfree;
授权成功。
SQL> conn xsfree/xsfree
ERROR:
ORA-01017: 用户名/口令无效; 登录被拒绝
警告: 您不再连接到 ORACLE。
SQL> conn xsfree/XSFREE
已连接。
从上述的实验中,我们发现,虽然11g环境受参数sec_case_sensitive_logon影响会导致用户的数据库密码大小写敏感,但在user$.password列显示的内容却是一样的。
因为在11g下,原来旧的密码hash算法校验值仍被存储在user$.password列,而新的160 bit的SHA-1哈希算法校验会被存储在user$.spare4列中,而user$.spare4列中的值会被使用来验证密码的大小写。可以想象,当将参数sec_case_sensitive_logon设置为false时,oracle实际做的只是不校验user$.spare4列的哈希值。
从我实际的实验结果来看,user$.spare4得到的计算结果并非只对密码的大小写进行哈希,因为2次创建相同用户相同密码的user$.spare4值不同。
回到上述实验环境,尝试一下orabf工具:
D:\orabf>orabf F144DFF1B6068904:xsfree
orabf v0.7.6, (C)2005 orm@toolcrypt.org
---------------------------------------
Trying default passwords...
password found: XSFREE:XSFREE
密码同样被破解了,只是这一次,在登录11g数据库时,我们还要进行密码大小写的尝试。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20750200/viewspace-711636/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20750200/viewspace-711636/