这段时间在开发一个数据库漏洞扫描工具,其中用户密码的脆弱性是必不可少的检查项目之一,ORACLE不同于SQL Server,后者提供了一个pwdCompare函数,可以将密码一个一个提交到服务器上让其执行比对,ORACLE只能返回密码的hash值,比对一般需要在客户端完成。
步骤:以SCOTT为例,前提是可以进入数据库(这是数据库扫描器进行深度扫描的前提)
1.先获得SCOTT的密码hash
select name,password from SYS.user$ where astatus=0 and name = 'SCOTT';
得到
NAME PASSWORD
------------------------------ ------------------------------
SCOTT F894844C34402B67
2.这里要使用到一个工具,Oracle Password Checker (Cracker)http://www.red-database-security.com/software/checkpwd.html
运行命令 checkpwd SCOTT:F894844C34402B67 default_passwords.txt
结果为:
SCOTT has weak password TIGER
表示密码为TIGER,如果TIGER这个单词不在default_passwords.txt 中则会显示
SCOTT OK
表示密码不再密码表中
如何集成到程序中就不累述了。