ORACLE TNS Listener远程注册投毒原理
CVE-2012-3137 漏洞是Oracle Database 10g/11g 身份验证协议实现中存在一
个设计缺陷,攻击者可无需认证即可远程获取数据库用户密码哈希相关数据,从而
可以离线暴力破解用户密码,进一步控制数据库系统。
我们通过如下的步骤和过程可以实现对Oracle 的入侵:
(1)利用CVE-2012-1675 进行TNS 劫持,在监听下利用远程注册,注册同名数
据库实例;
(2)新登陆的用户,在TNS的负载均衡策略下,有可能流量登录到伪造的监听
服务上;
(3)该监听服务对用户的登陆过程进行监控,并将相关数据流量转发到真实的
数据库上;
(4)利用CVE-2012-3137获得通讯过程中的认证相关信息;
(5)对认证相关信息进行离线的暴力破解,获得登陆的密码;
(6)试用破解的用户名/密码登陆Oracle,完成对Oracle 中数据的访问。
在11.2.0.4 和12.1 中或者在RAC 中的新参数配置解决该问题:Valid Node Checking For Registration (VNCR) (文档 ID 1600630.1)
How to Enable VNCR on RAC Database to Register only Local Instances (Doc ID 1914282.1)
简单来说对于11.2.0.4 以前的版本需要打上对应补丁,创建wallet 密钥并对监听进行相应的修改,而对于11.2.0.4 及12c 以上的版本只需要把默认的VALID_NODE_CHECKING_REGISTRATION_listener_name 参数至为on 即可。对于RAC环境,只需进行以下操作:
如果监听名改过记得修改
单机
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON
VALID_NODE_CHECKING_REGISTRATION_LISTENER=1
RAC
在监听配置文件中加入以下配置,即可启用vncr
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON
VALID_NODE_CHECKING_REGISTRATION_LISTENER=1
VALID_NODE_CHECKING_REGISTRATION_LISTENER_SCAN1=1
REGISTRATION_INVITED_NODES_LISTENER_SCAN1=(node1,node2)
#node1和node2 对应节点的public ip别名
最后重新加载监听生效:
lsnrctl reload
lsnrctl reload listener_scan1




