Ãœðù - Xakep Online
Ãœðù - Xakep Online
Ãœðù - Xakep Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
взлом<br />
Пример: «select"username"from"sys».«dba_use<br />
rs"where"username"='sys'»<br />
10. Кодирование в ASCII-символ происходит<br />
так же, как и в PostgreSQL, — с помощью функции<br />
chr().<br />
11. Для конкатенации используются пайпы<br />
(«||»).<br />
12. Сайты с бажными скриптами легко ищутся в<br />
поисковике: «ORA-00921: unexpected end of SQL<br />
command».<br />
На официальном сайте можно найти много полезной информации<br />
2. Supplied argument is not a valid PostgreSQL<br />
result<br />
3. Warning: pg_exec() [function.pg-exec]: Query<br />
failed<br />
Перечислять все коды ошибок здесь не имеет<br />
смысла. Полезнее обратиться к документации<br />
(www.postgresql.org/docs).<br />
Немного отойдя от темы, напомню, что поисковик<br />
Google является не только удобным<br />
средством для обнаружения потенциальной<br />
жертвы, но и «историей болезни» многих<br />
порталов, поскольку использует кэширование ;).<br />
Зачастую уязвимые скрипты, которые заменяются<br />
новыми, пропатченными, остаются на<br />
сервере. Найти их поможет веб-архив<br />
(www.web.archive.org). Заходим, вбиваем адрес<br />
нужного нам сайта, находим все доступные<br />
скрипты и по очереди выясняем их наличие<br />
на сервере. Если таковые обнаруживаются, то<br />
проверяем на уязвимости. Здесь мы выполняем<br />
простое сканирование. Да — примитивно,<br />
да — долго, но это последнее, на что следует<br />
идти, если другие решения не найдены.<br />
Явление Oracle<br />
Про Oracle есть несколько очень хороших<br />
статей, ссылки на которые ты найдешь далее,<br />
поэтому я упомяну лишь основные моменты:<br />
1. Идентификация СУБД аналогична определению<br />
PostgreSQL.<br />
xàêåð 05 /101/ 07<br />
/<br />
2. Возможно выполнение таких запросов, как<br />
INSERT, DELETE, UPDATE.<br />
3. Использовать limit, как ты это делал в MySQL,<br />
в Oracle не получится. Вместо этого используй<br />
in (1,2).<br />
4. Подстановка нулей (Null) не сработает для<br />
поля типа integer, используй ее только для строкового<br />
поля.<br />
5. Одной из самых серьезных ошибок при<br />
администрировании Oracle является использование<br />
пользователя с максимальными<br />
правами (DBSNMP), и естественно, возможный<br />
взломщик может внедрять свои запросы, имея<br />
максимальные права.<br />
6. Использование разделения выражений<br />
символом «;» невозможно.<br />
7. Узнать схему СУБД Oracle можно несколькими<br />
способами: «select user from dual», «select name<br />
from V$DATABASE», «select SCHEMANAME from<br />
v$session» или «select sys.login_user from sys.<br />
dual». Зашифрованный пароль (необратимый<br />
хэш, генерируемый из пары «юзер && пароль»)<br />
узнается запросом «select PASSWORD from<br />
dba_users или select PASSWORD from user_<br />
users». Версия — запросом «select VERSION<br />
from V$INSTANCE», аккаунты пользователей<br />
— «select * from sys.dba_users».<br />
8. Используются стандартные комментарии<br />
(«--»).<br />
9. Вместо пробелов можно использовать<br />
кавычки.<br />
А как же автоматизация?<br />
Пропарсив с десяток страниц поисковика, я нашел<br />
всего несколько специализированных утилит<br />
для атаки и аудита СУБД Oracle (всевозможные<br />
сканеры безопасности не в счет). Это программа<br />
NGSSQuirreL от компании Next Generation<br />
Security Software, тулза DB Audit от SoftTree и многим<br />
уже знакомая русскоязычная утилита Console<br />
Oracle Security Scanner от Limpid Byte. Первая<br />
и вторая программы подойдут для аудита собственного<br />
сервера на уязвимости, но никак не для<br />
удаленного анализа системы с целью последующего<br />
проникновения. Поэтому выбор очевиден<br />
— COSS. С помощью этой утилиты можно узнать<br />
версию Oracle и другую полезную информацию<br />
(SID, например), выполнять команды, брутить<br />
на стандартные аккаунты и т.д. Исходники, к сожалению,<br />
не прилагаются.<br />
Новости с фронта<br />
Во время написания этой статьи в багтраке появилась<br />
информация об уязвимостях, найденных<br />
в PostgreSQL (7.4) и Oracle (9i/10g). В обоих<br />
случаях — sql-injection.<br />
В случае с PostgreSQL уязвим модуль contrib/<br />
tsearch2 при объявлении некоторых функций. В<br />
Oracle же все намного серьезнее — 4 дыры и 4<br />
эксплойта (http://xakep.ru/post/36944/default.asp).<br />
Занавес<br />
Я описал лишь основы основ возможностей в<br />
Oracle и PostgreSQL. Есть гораздо более сложные<br />
структурные атаки, требующие глубоких<br />
знаний pgSQL/PL и всех тонкостей вышеназванных<br />
СУБД. И если ты имеешь соответствующую<br />
подготовку, то я советую тебе прочесть<br />
интересный доклад David'a Litchfield'a «Oracle<br />
PL/SQL Injection» и статью Chris'a Ahley’я<br />
«(More) Advanced SQL Injection», которые можно<br />
скачать с моей домашней страницы или взять<br />
на диске. z<br />
081