1 Oracle Легко представить Oracle как относительно раннюю СУБД, имеющую относительно большую долю рынка и часто используемую в некоторых очень больших базах данных. Помимо хорошей поддержки различных языков SQL, он также предоставляет множество многофункциональных пакетов, хранимых процедур и даже поддерживает создание Java и библиотек. Такие мощные функции обеспечивают хорошее удобство для взлома.
Сам Oracle имеет множество учетных записей по умолчанию и множество хранимых процедур. Эти хранимые процедуры создаются системой. Многие учетные записи по умолчанию открыты для общественности. За последние несколько лет было выпущено множество уязвимостей Oracle, включая переполнение и SQL. включая инъекции. Здесь особенно важна уязвимость SQL-инъекции, поскольку в Oracle без добавления других ключевых слов AUTHID CURRENT_USER созданный хранимый процесс при запуске запускается как создатель, и public не имеет доступа к этим хранимым процессам. Все имеют разрешения на вызов, поэтому если. происходит внедрение во встроенный хранимый процесс, обычным пользователям легко перейти на системные разрешения Oracle. Сам Oracle имеет множество встроенных учетных записей, некоторые из которых имеют пароли по умолчанию и разрешения CONNECT. Таким образом, если порт Oracle не защищен брандмауэром и может быть подключен удаленно, можно использовать учетную запись по умолчанию. удаленно войти в систему, а затем использовать SQL хранимого процесса в системе, чтобы внедрить уязвимость, система выйдет из строя. Конечно, для входа в Oracle требуется SID, но tnslintener Oracle не устанавливает пароль. по умолчанию, поэтому вы можете использовать tnscmd.pl использует команду Services, чтобы узнать SID системы (в новых версиях этот недостаток исправлен). Это также очень классический способ вторжения в Oracle.
2 Техническая информация по веб-хакерству Oracle
Богатые системные таблицы Oracle. Почти вся информация в Oracle хранится в системных таблицах. Текущее состояние работы базы данных, текущая информация о пользователе, текущая информация о базе данных, информация о базах данных и таблицах, к которым пользователи могут получить доступ... системные таблицы являются практически основной частью всей базы данных. получить всю информацию, запросив срочно необходимые системные таблицы. Например, sys.v_$option содержит некоторую информацию о текущей базе данных, например, поддерживает ли она Java и т. д., all_tables содержит всю информацию о таблицах, all_tab_colmuns содержит всю информацию о столбцах и т. д., что предоставляет нам очень широкие возможности для Удобство получения информации, далее будет описано, как использовать системные таблицы для получения конфиденциальной информации.
Среди различных уязвимостей Oracle следует отдельно упомянуть внедрение хранимых процедур. На самом деле, в этом нет никакой тайны. Хранимые процедуры и функции также получают пользовательский ввод и затем отправляют его на сервер базы данных для анализа и выполнения. выбрано. Если схема сконструирована в виде строки SQL и реализована, можно легко смешать данные и команды, что приведет к внедрению SQL. Но в зависимости от того, где происходит инъекция, природа инъекционной уязвимости также различна. Oracle использует PL/SQL, и уязвимость возникает в языках DML, таких как select. Поскольку он не поддерживает реализацию нескольких языков, если вы хотите запускать свои собственные языки, такие как GRANT DBA TO LOVEHSELL и другие языки DDL. , вы должны создать свои собственные функции или хранимые процедуры. Если у вас нет соответствующих разрешений, вы также можете использовать внедрение курсора и использовать пакет dbms_sql для обхода ограничений. Большинство внедрений представляют собой описанные выше ограниченные внедрения. Для достижения цели повышения разрешений вам придется полагаться на некоторые другие пакеты или курсоры, созданные вами. Однако все еще существуют некоторые очень распространенные уязвимости, но среда внедрения очень свободна, что зависит от пользователя. input. Внедрение анонимного блока pl/sql, помещенного между началом и концом. В этом случае внедрение можно напрямую внедрить в несколько слов, практически без ограничений. Видно, что именно такая яркая уязвимость создает. проблема для нашей сети. Технология инъекций вернула такой блеск.
Хорошо, вышеупомянутое — это некоторые из агрессивных технологий Oracle, но во многих современных средах веб-сервисы открыты для внешнего мира, а база данных внутреннего сервера защищена брандмауэром. Невозможно потерять слишком много подробной информации о базе данных. , и больше невозможно войти в систему напрямую. База данных работает. В настоящее время пришло время рассмотреть возможность использования веб-уязвимостей для атаки на резервную базу данных. Теперь давайте посмотрим, как разрабатывать инъекции в веб-среде Oracle! Oracle может хорошо работать в различных веб-средах, и влияние различных веб-сред на наши инъекции невелико. В asp, .net и jsp это не так уж и важно. входящие параметры вообще не фильтруются, но поскольку языки .net и jsp являются языками строгой категории, даже если язык SQL не фильтруется, когда дело доходит до числовых внедрений, при приеме параметров могут возникать ошибки. Причина, по которой появляются инъекции. Класс string имеет больше параметров. В среде php все ' будут экранированы как ', в среде oracle ' не будут экранированы (правильный escape в среде oracle должен быть ''), но в нашей собственной. Использование 'в дискурсе внедрения может быть поврежден при преобразовании в ', поэтому его нельзя использовать во время инъекции'. За исключением того, что в веб-среде нет никаких ограничений. Что касается базы данных, если дискурс выполняется в режиме параметров, его нельзя внедрить, если не используется режим соединения строк (поскольку режим соединения строк относительно прост, и по некоторым историческим причинам многие программисты часто предпочитают эту форму, ). Режим строкового соединения также будет разделен на два типа. Параметры находятся в словах DML, таких как select, update и Insert, а параметры находятся в анонимном блоке pl/sql, если веб-программа не улавливает. ошибка. Тогда мы можем легко судить о категории текущего дискурса на основе ошибки, о которой речь пойдет позже. В анонимном блоке pl/sql это встречается сравнительно редко, но не исключено, что такой инъекции нет предела. Можно реализовать несколько диалогов и делать что угодно, ничем не отличающееся от локального входа.
3 основные идеи Oracle Web Hacking
В следующей части рассказывается о том, как определить цель. Определение параметров внедрения — дело каждого. Главное — как определить принадлежность базы данных Oracle. Это легко определить, исходя из характеристик базы данных Oracle. поддерживает интерпретацию --category, но не поддерживает ее; Много слов, Oracle имеет множество системных таблиц, таких как all_tables. Обращаясь к этим таблицам, вы также можете определить, принадлежит ли она Oracle. Кроме того, некоторые функции в Oracle могут. также может использоваться для определения, например, utl_http.request, языка. Небольшие детали также могут использоваться для различения систем. Например, || является символом соединения в Oracle, но не в других базах данных. Причина, по которой и chr(123)|. |chr(123)=chr(123)| |chr(123) Если он может быть успешно выполнен, это должен быть Oracle. Кроме того, некоторые сценарии не обрабатывают сообщение об ошибке при возникновении ошибки запроса к базе данных и также могут привести к утечке. реальная база данных поддержки. Это ясно видно.
Следующее, что необходимо срочно определить, — это тип точки внедрения. Обычно параметры, которые мы вводим, являются либо числовыми, либо просто символьными (то, что многие другие называют внедрением типа поиска, на самом деле следует классифицировать как символьный). категория цифр, вообще ни о чем не думайте. Очень просто добавить символы интерпретации, чтобы высказывание было точно замкнутым. Если это категория символов, вам придется подумать о том, как сделать все высказывание точным. обычно добавляя 'и - эти символы инъекции, чтобы организовать собственную ситуацию инъекции. В некоторых сложных ситуациях, например, когда параметр появляется в нескольких словах и логике sql, вам придется тщательно структурировать слова внедрения, соответствующие ситуации. Помните, нам нужна только полная среда, которая может легко организовать различные команды sql :)