oracle TNS Listener远程投毒(CVE-2012-1675)漏洞潜析、复现
字数 1072 2025-08-27 12:33:48
Oracle TNS Listener远程投毒漏洞(CVE-2012-1675)分析与复现指南
漏洞概述
CVE-2012-1675是Oracle数据库TNS Listener组件中存在的一个严重安全漏洞,允许攻击者在不进行身份验证的情况下实施中间人攻击(MITM),窃取敏感数据库信息。
漏洞原理
该漏洞的核心问题在于TNS Listener组件对数据库服务注册缺乏有效的认证机制:
- 信任机制缺陷:TNS Listener允许任何客户端注册为"自家人",无需提供用户名和密码验证
- 负载均衡滥用:当存在同名数据库服务时,监听器会基于负载均衡原则将连接请求分发到负载较低的数据库
- 中间人攻击:攻击者可注册同名数据库服务,诱使合法连接被重定向到攻击者控制的数据库,从而截获通信数据
漏洞影响
- 默认配置下易受攻击
- 可导致敏感数据库凭证和查询数据泄露
- 与CVE-2012-3137组合使用时危害更大
漏洞复现
环境要求
- 攻击者必须拥有Oracle数据库环境
- 目标数据库与攻击者数据库需使用相同的服务名(6字符限制)
复现步骤
1. 漏洞检测
使用Metasploit框架的tnspoison_checker模块进行检测:
use auxiliary/scanner/oracle/tnspoison_checker
set RHOSTS <目标IP>
run
若返回信息确认存在漏洞,则可进行下一步攻击。
2. 实施攻击
使用专用脚本发起TNS投毒攻击:
python tnspoisonv1.py <攻击者IP> <端口> <数据库名> <受害者IP> <端口>
注意:数据库名必须与目标数据库的服务名完全相同。
3. 捕获流量
- 诱使用户执行正常数据库操作(登录、查询等)
- 使用Wireshark等工具捕获网络流量
- 过滤TNS协议流量,分析捕获的数据包
数据捕获分析
- 认证凭证:可在TNS协议数据包中找到数据库账号信息
- 查询语句:能够拦截用户执行的SQL查询内容
防御措施
-
配置VALID_NODE_CHECKING:在sqlnet.ora文件中设置以下参数:
VALID_NODE_CHECKING=ON -
限制注册:配置TNS Listener仅允许可信节点注册服务
-
服务名管理:
- 使用复杂、独特的服务名
- 避免使用默认或易猜测的服务名
-
网络隔离:
- 将Oracle数据库服务置于受保护网络区域
- 实施网络访问控制列表(ACL)
-
补丁更新:及时应用Oracle发布的安全补丁
总结
CVE-2012-1675漏洞利用Oracle TNS Listener的信任机制缺陷,允许攻击者实施中间人攻击窃取敏感数据。虽然利用条件有一定限制(需知道目标服务名且长度为6字符),但与CVE-2012-3137等漏洞组合使用时危害显著增加。管理员应通过配置VALID_NODE_CHECKING等措施加强防护,并及时更新补丁。