Oracle数据库监听器引起的安全威胁与防护技术

怪狗 2016-7-31 Exploit 0 0

  2、TNS Listener面临的威胁

  根据安华金和数据库安全实验室统计,2001年至2012年间,针对TNS LISTENER的漏洞有15个,其中高危漏洞9个,中危漏洞6个。TNS Listener漏洞总数并不多,但其具备威胁大,跨越数据库版本多,适合通过网络远程攻击的特点。本文将针对这15个TNS漏洞按照攻击原理进行分类,并最终给出对应防护技术。

  2.1、TNS Listener 漏洞分类

  TNS Listener作为ORACLE的必备组件,TNS Listener不仅定义了数据库和客户端之间的通讯协议,更负责对客户端进行身份验证(确认客户端用于通讯的用户名和密码是否合法)。根据TNS这2条主要功能可以把漏洞分成三大类:

  第一类漏洞,TNS Listener被触发缓冲区重写,导致服务器无法响应客户端。造成通讯失败。简单说就是使TNS Listener崩溃。例如漏洞CVE-2007-5507就是这个类型的代表。

  第二类漏洞,绕过TNS身份验证,获得合法数据库账号和密码。这个类型具体可以分三种:

  1.通过劫持TNS信息,把oracle的登录信息劫持到攻击者机器,获取敏感信息,甚至获取oracle管理员账号密码。具体请参考安华金和数据库安全实验室发表的《Oracle数据库漏洞隐患无需user/password快速入侵 》一文。

  2.直接对在TNS中加密的oracle登录密钥进行破解具体请参考安华金和数据库安全实验室发表《破解oracle9i、oracle10g、oracle11g密码》一文。

  3.在远程登陆过程中对服务器进行sql注入。利用某些特殊函数,创建新的数据库账号,并为新账号创建DBA权限。例如漏洞CVE-2006-0552就是这个类型的代表。

  第三类漏洞,通过缓冲区溢出控制数据库所在操作系统。这个类型具体可分两种方式:

  1.直接通过向TNS Listener发送含有异常字段的包,当oracle调用含有异常字段的包的时候,触发缓冲区溢出。具体可以参考安华金和数据库安全实验室发表《通过OracleTNS漏洞攻占oracle所在操作系统,进而入侵oracle》一文。

  2.向TNS Listener发送含有异常数据的包,直接触发缓冲区溢出,夺取数据库所在操作系统控制权限。例如漏洞CVE-2002-0965就是这个类型的代表。

  其中第三类漏洞在15个漏洞中分布最广泛。下面我们按照类型进行原理介绍。

  2.2、TNS Listener服务崩溃漏洞(第一类)

  第一类漏洞中的代表是CVE-2007-5507。GIOP格式的消息中的DWORD被用来描述后面的字段的长度。当DWORD被恶意的修改后,如果DWORD所指出的长度比实际的字段的长度要长。TNS Listener会按照DWORD的数值来分配内存,把实际的字段考入。再读取的时候按照DWPRD的长度去读取,就会导致读取失败。TNS Listener服务崩溃,无法接受客户端的请求。导致服务器无法响应客户端。

  2.3、TNS 劫持(第二类第一种)

  该问题几乎存在于Oracle的所有版本,并且Oracle至今仅是发布了警告性通知,并未提供解决方案。TNS劫持的核心点在于监听会按照目标数据库名递送到名称正确的数据库。通过远程注册的方法可以让一个监听下同时存在2个同名数据库(1个黑客的机器1个目标机器)。监听将自动按照负载均衡把每次访问发送到负载低的数据库上,进行连接访问。也就是说有高过一半的几率TNS Listener有可能把客户端的请求错误的发送到黑客的机器上。黑客的机器再配置listener_name=

  (DESCRIPTION=

  (ADDRESS=(PROTOCOL=tcp)(HOST=目标机器IP)(PORT=目标机器端口)))

  就可以变成客户端和目标机器的中间站。自己发送信息给目标机器,让目标机器误以为是客户端发送的信息。

  3、TNS Listener漏洞防护技术

  TNS Listener作为oracle的核心组件和安全门户。如果被黑客用上述任何一种方式入侵都很可能产生,类似2013年CSDN公司用户信息大规模泄漏事件。而且由于TNS Listener位置的特殊性,对TNS Listener的防护手段有别于其他数据库组件的安全防护手段。对TNS Listener的防护手段主要分为四个层次:

  第一层是:通过数据库弱口令扫描产品和定期更换安全密码进行预防。

  第二层是:对TNS Listener进行密码设置防止远程注册被黑客利用。(阻止来自网络的非法注册)

  最三层是:通过下载官方补丁或者使用含有VPATH的防火墙产品对已知漏洞进行修复。

  最后一层:是通过数据局保险箱对数据库进行全库或者敏感字段加密。保证即便TNS Listener被攻破,核心数据依旧不会泄露。

  3.1、数据库弱口令检查(第一层)

  大多数黑客通过TNS Listener入侵数据库并非因为漏洞,而是通过默认口令、弱口令、撞库等方式。数据库弱口令扫描工具就是专门用来检测oracle的账号口令安全强度。利用探测到的账号以数据库管理员特权身份或其他特权身份进入被扫描的数据库系统,从内部检查数据库的认证、授权与系统完整性等内部配置信息,全面地分析、评估数据库的安全弱点和安全风险。

  3.2、定期更换oracle推荐的密码(第一层)

  针对第二类第二种,截获通讯包线下暴力破解。虽然这个密码是通过模拟oracle加密的过程算出来的。但是本质上还是需要足够大的密码库进行比对。所以只要定期更换长度和复杂度满足oracle官方要求的密码,就基本可以应付线下暴力破解问题。关键是不要用不满足oracle的密码,和长期不换密码。

  3.3、TNS Listener加密(第二层)

  虽然TNS Listener默认是不设置密码的,但是其本身是支持加密的。加密后可以杜绝外来黑客对TNS Listener进行的非法注册。从根本上杜绝了第二类中的第一种漏洞。

  TNS Listener加密方法如下:

  LSNRCTL> start

  LSNRCTL> change_password

  Old password:

  New password:

  Reenter new password:

  Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))

  Password changed for listener_demo92

  The command completed successfully

  LSNRCTL> save_config

  Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))

  TNS-01169: The listener has not recognized the password

  LSNRCTL> set password

  3.4、下载对应官方补丁包(第三层)

  TNS Listener是oracle 的重要组件,所以尽可能第一时间安装Oracle公司会定期地公布的补丁包,这些补丁包也会修复TNS Listener中存在的漏洞。有些数据库漏洞扫描工具能够扫描出这些缺陷,并提醒用户下载补丁包。当然更为安全的策略,是定期到Oracle官方网站上进行访问,看是否有新的补丁包发布并进行安装。

  3.5、数据库防火墙(第三层)

  当然有些生产或测试环境因为种种原因无法对数据库进行补丁升级,那么建议在数据库服务器和应用服务器之间加入带有虚拟补丁(可以起到打oracle升级包效果)功能的数据库防火墙产品。这样既不对数据库服务器有任何变化,还同时能阻止黑客使用未修复的TNS Listener漏洞。数据库防火墙还可以通过设置对SQL语句、客户端IP地址、应用服务请求等进行人为禁止。为数据库搭建可信的安全访问环境。

  4、结束语

  本文分析了TNS Listener漏洞带来的五种安全威胁:TNS Listener服务崩溃漏洞(第一类)、TNS 劫持(第二类第一种)、破解TNS默认加密方式(第二类第二种)、远程非法创建新DBA权限用户(第二类第三种)、通过TNS夺取操作系统(第三类)。同时提出了四层防护手段:数据库弱口令检查、定期更换oracle推荐的密码、TNS Listener加密、下载对应官方补丁包、数据库防火墙、数据库加密。当然对TNS Listener漏洞的安全威胁和防护的研究,需要持续不断地进行下去,更关键的是要不断地普及防护意识和技术,才能有效保护政府部门的信息安全。

原文地址:https://www.77169.com/exploits/2015/20150316021600.shtm

转载请注明来自华盟网,本文标题:《Oracle数据库监听器引起的安全威胁与防护技术》

喜欢 (0) 发布评论