![]() |
Oracle Hack часть первая: Oracle Application Server
1. Статья рассчитана на людей которые уже имеют знания в sql-injection в Oracle.
2. В этой часть речь пойдет именно об Oracle Application Server 3. Все вопросы или дополнения приветствуются 1. Начало Oracle Application Server — это основанная на стандартах интегрированная программная платформа, позволяющая организациям любого масштаба оперативнее реагировать на меняющиеся требования рынка. Oracle Application Server 10g обеспечивает полную поддержку технологии J2EE и распределенных вычислений, включает встроенное ПО для корпоративных порталов, высокоскоростного Web-кэширования, бизнес-анализа, быстрого внедрения приложений, интеграции бизнес-приложений, поддержки беспроводных технологий, Web-сервисов — и все это в одном продукте. Поскольку платформа Oracle Application Server 10g оптимизирована для Grid Computing, она позволяет повысить степень готовности IT-систем и снизить расходы на приобретение аппаратных средств и администрирование.(www.oracle.com )1.Начнем с того как нам понять что мы имеем дело именно с Oracle Application Server. Первое и самое главное это спецефический URL который легко распознается. Пример Код:
http://www.site.com/pls/dad/package_name.procedure_name/dad/ это так называемый дескриптор доступа к БД (Database Access Descriptor) он прописан в dads.conf и содержит в себе данные для подключения к БД (адресс сервера,логин, пароль, sid) /pls/ это укозатель на то что будет использоватся PlSql модуль, он прописан по умолчанию в plsql.conf в Apache Web Server Но даже если использован другой укозатель распознать не проблема по псевдо расщирению файлов так как это название процедуры которую надо выполнить Второе это так называемый баннер который передается в ответ на http запрос если он содержит в себе Oracle-Application-Server или Oracle HTTP Server то это Application server правдо есть еще варианты Oracle9iAS и Oracle_Web_listener3 но с такими не сталкивался, из личной практики скажу что банеры часто меняют администраторы так что вариант номер один дает больше уверености. 2. Как оно работает Oracle Application Server это всеволиш вебсервер который обращается к БД все пакеты процедур физически находятся в БД то есть сервер всеволиш дает запрос на выполнение процедуры и передает нам данные, формирования HTML страниц тоже происходит на уровне БД Важно понемать что все найденные "баги" в Oracle Database можно использовать просто сформировав нужный Url. И так что происходит когда мы набираем в браузере к примеру Код:
http://site.com/pls/prt/news.get_news?id=1сервер формирует запрос к бд который выгледит так Код:
declare3. В бой Как раньше упоминал при обращение к бд Oracle Application Server вписывает в запрос строку для проверки базой нет ли названий процедры и пакета в списке запрещенных. этот список постоянно дополняется поэтому сказать какой он на сегоднящний день я не могу но выглядит он примерно так Код:
OWA*Путь первый: url кодировка которую сервер естественно перекодирует и отправляет базе Пример Код:
site.com/pls/prt/%0AHTP.PRINT?id=123Так же можно использовать не только символ переноса строки а так же таб пробел итд, проверяйте ищите) David Litchfield (http://www.ngssoftware.com/) предложил один простой но очень эфективный способ, я tit не встречал случая чтоб он не сработал и надеюсь не встречу :) Первое что нам надо найти это процедуру не требующию передачу параметра через переменную то есть что-то набодобие Пример Код:
site.com/pls/prt/portal.aboutто есть строки Код:
...Напомню что одностроковый коментарий в oracle обозначается как "--". Пример Код:
site.com/pls/prt/portal.about?);HTP.PRINT(:1);--=testКод:
...Таким способом можно получит доступ к процедурам из списка "запрещенных" но и не только так можно выполнить любую процедуру которая выполняется от имени супер пользователя sys (как root в mysql, sa в mssql итд) и как известно в стандартных пакетах процедур oracle database есть много таких которые подвержены sql иньекциям. Также использую процедуру OWA_UTIL.CELLSPRINT или ctxsys.driload.validate_stmt(в версии oracle 9i сечыны имеет права DBA) выполнить просто sql запрос к базе Пример Код:
site.com/pls/prt/portal.about?);CTXSYS.DRILOAD.VALIDATE_STMT(:1);--=SELECT+USERNAME+FROM+ALL_USERSДалее Но вот делема что делать если доступ нужен не к БД которая часто на другом сервере а именно на тот сервер где стоит Application Server но и тут разработчики Oracle нас не подвели :)Oracle Application Server так-же имеет уязвимости, переполнения буфера одно из них, используя этот способ такого полета фантазии как при sql иньекциях не будет так как если патч стоит то он стоит и всё тут но всё-же о некоторых я думаю стоит упомянуть. Старая уязвимость в админ хелпе но много где не патченая выглядит так Код:
http://site.com/pls/prt/admin_/help/AAAAA......Еше одна уязвимость под которую кстате в metasploite есть експлоит находится в процессе http авторизации описывать данную уязвимость не буду просто скажу что переполнение происходит при слишком длинном значении пароля кому интересно загляните на http://trac.metasploit.com/browser/framework3/trunk/modules/exploits/windows/http/oracle9i_xdb_pass.rb?rev=4059 Еше у нас есть чтение файлов пример Код:
http://site.com/pls/prt/admin_/help/..%255Cplsql.confДа и чуть не забыл упямянуть что по умолчанию администрировать Oracle Application Server старых версий можно без пароля то есть мы заходим на Код:
http://site.com/pls/prt/admin_/Конец Если всё описаное выще в вашем случае не подходит советую посетить metalink.oracle.com и прочетать какие исправления выпущены по личному опыту скажу что один два патча минимум не стоят или же пойти по пути более интересному находить процедуры которые уязвимы к sql иньекциям это не сложно просто при этом есть некоторые специфические только для оракла правила но об этом будет написано в следущей статье. P.S Хочу выразить благодарность David Litchfield и Pete Finnigan Pete Finnigan Статья не полная будет дополнятся тут описаны не все способы а только лиш то о чего можно благополучно отталкиваться. Статья будет дополнятся и это только часть серии статей посвященных продуктам компании Oracle Сорри за мой русский не родной язык. |
первый нах!
А если по теме, то статья написана грамотно, но пользователей которым будет она интересна тут не так много... |
Отлично! Кто автор?
|
Автор я в процесе написания да и изучения оракла использовал матерьял личфилда и финегана почему в конце и написал спасибо им
|
Молодец! Материала выходящего за рамки LAMP реально мало, а жаль..
З.Ы. А базировался на материалах какого года? |
дорк или живой пример?
|
2003-2008 год так как к от оракла отошел в конце 2008 только вот опять заинтересовл он меня на фоне этого и решил написать серию статей.
Но тут описал то чем пользовался сам и не раз... поэтому и могу каждый нюянс при необходимости в подробностах обьяснить yckb возникнут вопросы. |
[QUOTE=geezer.code]дорк или живой пример?[/QUOTE
Вплане живой пример? |
Цитата:
хотя это конечно блажь уже :) материал хороший, положу в закладки, надеюсь когда-нибудь пригодится. |
В общем, живой пример покажи, если есть что на примете :)
|
| Время: 03:08 |