Oracle 8i/9i DIRECTORY对象远程
目录遍历文件操作漏洞
tomqq 4/13/2006
1、 概述
Oracle Database是一款商业性质大型数据库系统。Oracle处理DIRECTORY对象存在问题,远程攻击者可以利用这个漏洞遍历目录执行文件操作。
用于Oralce数据库的Directory对象用于执行访问文件系统的功能,用户要访问文件系统必须创建一个Directory对象并赋于相应的权限,这个对象指向文件系统上的一个目录,服务器进程对于用户指定的目录字串没有充分的过滤,远程攻击者可能利用特定的字串输入遍历文件系统执行文件操作。
2、影响系统
Oracle Oracle8i
Oracle Oracle9i Standard Edition 9.2.0.4
Oracle Oracle9i Standard Edition 9.2.0.1
Oracle Oracle9i Personal Edition 9.2.0.4
Oracle Oracle9i Personal Edition 9.2.0.1
Oracle Oracle9i Enterprise Edition 9.2.0.4
Oracle Oracle9i Enterprise Edition 9.2.0.1
Oracle Oracle10g Application Server 9.0.4.0
Oracle Oracle10g Application Server 10.1.0.2
Oracle Oracle10g Enterprise Edition 9.0.4.0
Oracle Oracle10g Enterprise Edition 10.1.0.2
Oracle Oracle10g Personal Edition 9.0.4.0
Oracle Oracle10g Personal Edition 10.1.0.2
Oracle Oracle10g Standard Edition 9.0.4.0
Oracle Oracle10g Standard Edition 10.1.0.2
3、真机验证
有2台机器作为测试用机。219装有Oracle服务端,版本是10.1.0.2。首先,我们用217的客户端sqlplus连上219的服务端,然后首先在Oracle上创建一个Directory对象,命令是:

然后,创建一个SQL过程,其中调用了有问题的函数,传入恶意参数,即大量的\\.\\.\\.\\.\\.````

如何检验攻击是否成功?登陆219,搜索这个可疑文件,

我们可以看见,恶意命令超越了权限,在Oracle根目录下随意建立了一个文件。同理可以如此的修改和删除宿主系统目录下的任意文件。
数据通信抓包结果:
在第203帧抓住了恶意请求数据包,如下:
