oracle 密码详解以及破解
参考的相关资料等:
https://docs.oracle.com/en/database/oracle/oracle-database/18/spmsu/finding-and-resetting-user-passwords-10g-password-version.html#GUID-D7B09DFE-F55D-449A-8F8A-174D89936304
http://marcel.vandewaters.nl/oracle/security/password-hashes
https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/changes-in-oracle-database-12c-password-hashes/
实验环境:
oracle:11.2.4环境升级到了19C
一.Oracle密码记录以及大小写敏感和优先级
在10G版本的时候,11g前建的用户密码是不区分大小写的,用户密码存在dba_users视图中,在11.1之前的版本,可以通过alter user identified by values password 来还原oracle 数据库历史密码(当年在电网运维做二级等保的时候,就发现了10g,11g重置密码不一样),但是在11g以及以上版本中出现一下特性:
1. dba_users中无password记录(值为空),这个可以通过直接查询user$.password依然有记录。
2.通过修改USER$.SPARE4为空实现了屏蔽ORACLE 11g,12C以及以上版本密码大小写敏感(password_versions优先级大于sec_case_sensitive_logon)
如下:
col name for a20
col password for a40
col spare4 for a40
select name,password,SPARE4 from user$ WHERE name='SYSTEM';
SELECT a.username,a.password_versions FROM dba_users a WHERE a.username='SYSTEM';
该PASSWORD_VERSIONS
列显示该帐户存在的密码版本的列表。10G
指的是较早的不区分大小写的Oracle密码版本,11G
指的是基于SHA-1的密码版本,并12C
指的是基于SHA-2的SHA-512密码版本。
本次测试用户SYSTEM的SPARE4为空,从低版本(10g)导入到11g中的用户登录是不区分大小写,而11g本身创建的用户是区分大小写(默认sec_case_sensitive_logon为true,区分大小写),而他们的区别仅仅是在dba_users.password_versions为10G,USER$.SPARE4列为空(10g的该列为空),说明sec_case_sensitive_logon 根本没有起到作用;
ALTER USER system PASSWORD EXPIRE; --登陆提示修改密码或者直接执行修改密码(我是直接修改密码的)
alter user system identified by "oracle";