Обзор эксплоитовАндрей «skvoz» Комаров (komarov@itdefence.ru) Обфускация статусбара в Mozilla Firefox («Clickjacking»)BRIEFКлассификация атаки целиком и полностью относится к «спуфингу». Clickjacking, или так называемый «угон кликов» – относительно новая угроза со старым смыслом. Суть в следующем - юзеров обманом заставляют нажимать на невидимые элементы страниц в интернете (ссылки или диалоговые элементы), – что может вести к изменению правил безопасности на компьютере пользователя или к посещению опасных веб-сайтов. Метод не нов, однако свежие исследования свидетельствую о расширении программного обеспечения, в рамках которого пользователь может стать жертвой clickjacking. К примеру, в список попали все современные средства, активно применяющиеся при серфинге в Сети: Adobe Flash Player, Internet Explorer, Opera, Safari и Firefox. Сама вредоносная функция, из-за которой поднялся весь шум, состоит из мизерного количества строк: Вызывается она через TARGETS
EXPLOITS
SOLUTIONУ браузера Firefox нет встроенных средств, которые помогли бы избежать этой напасти. Чтобы как-то обезопасить себя, пользователям предлагается установить специальный плагин Noscript. В IE 8 этим занимается XSSFilter, но аналогов NoScript для других браузеров не существует. В Opera борьба с «кликджекингом» складывается следующим образом. Так как наиболее популярный метод его эксплуатации – это расстановка ifrаme’ов, хорошо бы их запретить. Делается это в «Инструменты -> Настройки -> Дополнительно -> Содержимое -> Настроить стили». В появившемся диалоговом окне необходимо убрать галку с пункта «Включить inline-фреймы». Вводим в строке адреса opera:config, ищем слово IFrames и «Отключить элемент» (необходима перезагрузка браузера). FULL-DISCLOURE. Исполнение команд в MySQL с помощью UDF-функцийBRIEFСовременные базы данных поражают функциональными широтами. Их сложность сравнима с работой операционной системы или отдельного языка программирования. Любая база данных тем или иным образом взаимодействует с операционной системой. В MySQL можно создавать User-Defined функции (UDF) и с помощью них обращаться к окружению операционной системы, на которой эта база установлена. Такое «обращение» зачастую приводит к исполнению потенциально опасных команд. Что и было продемонстрировано пару лет назад в боевом эксплоите для выполнения неавторизированного кода с использованием баз – raptor_udf2.c (0xdeadbeef.info/exploits/raptor_udf2.c). В целом, эксплуатация сводилась к следующему: с какими-либо заданными привилегиями хакер имеет доступ к базе. Иным вариантом могло быть действие по загрузке уже заведомо скомпилированного вредоносного кода – в качестве динамически подключаемой библиотеки (dybnamic-link library – Windows) или shared object (Unix/Linux-like) через load_file на сайте, к примеру, при использовании SQL-injection. Рассмотрим ситуацию локального доступа:
Одним из весомых ограничений является работа только с базами MySQL ниже пятой ветки и разрешенной возможностью подключать динамические библиотеки. О том, как писать такие функции, можно узнать на ресурсе Ролана Баумана (mysqludf.org). Что касается нового метода повысить привилегии (с выполнением неавторизированного кода через базу), – замечу, что для начала следует обратиться к библиотеке lib_mysqludf_sys (mysqludf.org/lib_mysqludf_sys/index.php), которая предоставляет набор методов для непосредственного доступа к системе:
Весь юмор в том, что функции могут быть использованы с базами MySQL 5.x. Важно помнить, что стандартный вывод предоставляет функция sys_eval, а не sys_exec. Вторая возвращает только код выполнения команды – 1 или 0. Исходя из этих соображений, подключаемый «боевой код» в виде нового эксплоита содержит незначительно пропатченную lib_mysqludf_sys, в которой sys_exec заменена на sys_eval.
TARGETS
EXPLOITСкачать эксплоит можно на репозитории известной программы для проведения SQL-injection - svn.sqlmap.org/sqlmap/trunk/sqlmap/extra/mysqludfsys/. SOLUTIONОсновное решение проблемы – запретить записи в актуальные директории, куда бы хакер мог залить скомпилированный эксплоит. Проделать это можно расстановкой прав доступа, а также – применив специальные программные средства, вроде AppArmor. Многие считают, что AppArmor – это WEB-application файрвол. На самом деле, возможности его гораздо шире, потому что основная задача проекта – внедрить дискреционный доступ (DAC) путем останова мандатов (MAC). Для каждого приложения можно создать свой профиль безопасности, в котором урезать многие вещи. Оцени разницу с включенным AppArmor:
Тишина!
Исполнение команд с PostgreSQL UDFBRIEF Ситуация с UDF повторяется в этом типе баз. Злоумышленник может создать злонамеренный вызов UDF и с его помощью исполнить на системе какие-либо команды (запустить программу, прочитать файл, удалить его, создать новый). В PostgreSQL это осуществимо несколькими методами. Самый «базовый» – заюзать стандартную функцию libc system(). Такой метод реализован в известном проекте, активно используемом при пентестах – pgshell (leidecker.info/projects/pgshell.shtml).
Еще со времен Postgree SQL 8.1 можно создавать произвольные UDF-функции с подключением доступных обьектов. Например, так:
Помни, что функция system() будет возвращать INT-значение, хотя нам нужно лицезреть стандартный stdout-поток. Для этого мы применяем такую уловку:
Иной вариант затрагивает аспект использования Procedural Language Function (PL/tcl, PL/pl, PL/python). Соответственно, Postgree разрешает написание соответствующих функций на этих языках и использование их для выполнения операций в базе.
Аналогично можно заюзать PL/Perl:
TARGETS
EXPLOITS
SOLUTION
Squid < 3.1.5 отказ в обслуживании при парсинге редакции HTTP-протоколаBRIEFЛюбой протокол в изобилии напичкан различными пакетами, флагами, модификациями пакетов. Многое из этого изменяют, совершенствуя протокол. Сей факт зачастую осложняет жизнь разработчикам, потому что требуется отслеживать и парсить, что может измениться, а что нет. Squid – известный кэширующий прокси-сервер – впечатляет своими возможностями по настройке функционала. Он поддерживает HTTP/HTTPS, FTP, Gopher. Отсутствие проверок в модулях HttpMsg.c и HttpStatusLine.c этих параметров приводит к Denial Of Service. TARGETS
EXPLOITУязвимости, столь смешной по простоте эксплуатации, но серьезной по наносимому в сетевой среде урону, даже был присвоен собственный CVE-номер (2009-0478) в базе уязвимостей, курируемой NIST. Рабочий эксплоит написан хакером Praveen Dar$hanam и опубликован на портале milw0rm (milw0rm.com/exploits/8021). SOLUTIONВерсии Squid, поставляемые вместе с коммерческой версией Red Hat Enterprise Linux, не затронуты. Обновления для всех уязвимых версий можно найти на www.squid-cache.org. PGP Desktop 9.0.6 Local Denial Of ServiceBRIEFНедавно Максим Суханов описывал принципиально новую атаку на раскрытие информации, хранимой в крипто-контейнерах, в том числе и этой софтины. Теперь знаменитая PGP оказалась некомпетентна при обработке специально сформированной информации драйвером PGPwded.sys, – это приводит к локальному отказу в обслуживании и может обернуться уничтожением ценной информации. Исследование показало, что драйвер некорректно обрабатывает IOCTL (0x80022038):
Напомню, что IOCTL – это контроль ввода/вывода. Иными словами, системный вызов ioctl выполняет различные управляющие действия над обычными устройствами и псевдоустройствами (для файлов, не являющихся псевдоустройствами, действия зависят от устройства). Аргументы command и arg передаются в файл, ассоциированный с соответствующим дескриптором, и интерпретируются драйвером устройства. Кстати, после анализа крэш-дампа и исследования KERNEL_MODE_EXCEPTION_NOT_HANDLED (8e), понимаешь, что присутствует аналогичная угроза падения в «синий экран». Обнаружить такие вещи можно с помощью фаззинга – известного метода тестирования приложений. Суть его состоит в том, что, играясь с приложением разными аномальными данными, можно выявить места переполнений и некорректной обработки информации. К драйверному уровню в этом плане применимы следующие проекты: IOCTL-proxy (orange-bat.com/code/ioctl-proxy.zip), kartoffel.(kartoffel.reversemode.com/downloads.php). TARGETS
EXPLOIT
SOLUTIONИсправлений уязвимости пока нет. Многочисленные уязвимости в ПО аппаратных сетевых устройствBRIEFЕсли нельзя взломать сам сервис, который расположен на машине, сервере, принтере или ином оборудовании, лазейкой может стать исследование его фронтенда (WEB-админки; панели управления, если она доступна). Вот список багов, которые тут были обнаружены: Вендор: AXIS
ЭксплуатацияXSS: Локальный инклуд в модуле помощи (user/help/help.shtml), позволяющий читать любые файлы на сервере:
Вендор: Profense
Эксплуатация«Наш продукт защищает от всех угроз, описанных в десятке OWASP» - цитируем разработчиков проекта. Спорить с ними не будем, но вендор, защищающий от наиболее популярных WEB-угроз, сам же забыл позаботиться о своей безопасности! Включаем SSH/SNMP:
Добавляем proxy:
Отключаем всю красоту («гасим свечи»):
XSS: Вендор: DLINK
ЭксплуатацияПодготавливаем специальный файл для CSRF-нападения со «своей прошивкой»:
Применяем социальную инженерию и впариваем «товар» админу. XSS: Вендор: 3COM
ЭксплуатацияЧтобы управлять устройством полноценно, требуется пройти жесткую авторизацию. Без нее стороннему пользователю запрещено просматривать какие-либо внутренние страницы. При более детальном исследовании ПО выявилось присутствие нескольких CGI-сценариев. Например, утилиты бекапа («System Tools -> Configuration -> Backup Configuration»). Любой, в том числе, неавторизированный пользователь, может обратиться к ней – и выкачать файл, который она генерирует (config.bin). А ведь божественное предназначение этой утилиты – создавать резервную копию данных, содержащую конфигурационные настройки, логины, пароли, wifi-ключи, snmp-пароли и многое другое.
Содержание config.bin:
Для решения проблемы требуется отключить опцию «Remote Administration»:
Вендор: CISCO
ЭксплуатацияПроверяем наличие HTTP-сервера:
XSS:
CSRF (пример изменения):
Активный ресеч при обнаружении этих уязвимостей проявили: Digital Security Research Group [DSecRG], израильская команда BinaryVision, Luca Carettoni ( |