Обзор эксплойтовВ очередном обзоре эксплойтов мы собрали для тебя самые интересные экспонаты за последний месяц. Кроме того, в рубрике небольшое изменение: теперь к каждой уязвимости прилагается CVSS v2 Base Score — стандартная для индустрии информационной безопасности шкала оценки серьезности уязвимостей. SQL инъекция в JOOMLA! COM_VIRTUEMARTCVSSV2
BriefИ вновь CMS Joomla радует нас дырой в своем компоненте. На этот раз под раздачу попал популярный скрипт интернет-магазина Virtuemart. Исследователи Стивен Сили и Рокко Келви из компании Stratsec обнаружили возможность проведения слепой SQLинъекции в этом компоненте. Успешное применение атаки позволяет получить доступ к информации в БД и может привести к полному контролю над веб-сервером. ExploitОбратимся к скрипту 'com_virtuemart/classes/ps_module.php' и рассмотрим функцию get_dir(), которая занимает строчки 255-270:
Обрати внимание на строку, в которой формируется запрос. Переменная $basename поступает туда без всякой фильтрации. Пользователь, в свою очередь, может влиять на еe содержание через GET-параметр page, что можно увидеть в скрипте 'com_virtuemart/virtuemart_parser.php', строки 189-210:
В последней строке вызывается функция checkModulePermissions() из скрипта 'com_virtuemart/classes/ps_module.php' с интересующим нас параметром page. В ней и происходит вызов уязвимой get_dir(), рассмотренной выше:
Эксплуатация этой уязвимости осложняется двумя вещами:
Так как по содержанию страницы мы не можем понять, выполнился наш запрос или нет, то остается использовать технику временных задержек при проведении инъекции. Например, если мы имеем дело с MySQL 5 версии, то при таком запросе последует задержка примерно в 30-60 секунд:
В этом запросе используется классическая для техники временных задержек функция benchmark(count, expr), которая выполняет заданное количество раз (count) функцию, указанную во втором аргументе (в данном случае вычисляется хеш MD5 от буковки 'x'). Эта функция выполняется только в том случае, если выражение 'substring(@@version,1,1)=5' истинно. Несложно догадаться, что это выражение сравнивает первый символ переменной @@version с 5. Если на сервере используется MySQL 4-й ветки, то в этом можно убедиться, подставив 4 вместо 5. Если после этого сервер будет тупить целую минуту — значит, наши предположения верны. Эксплойт к этой баге доступен здесь:
Синтаксис:
Пример использования:
В эксплойте предусмотрено использование прокси-сервера, за это отвечает параметр '-p', после которого следует указать реквизиты сервера в формате «хост:порт». По опыту использования могу сказать, что иногда в процессе его работы возникают ложные положительные срабатывания. Они могут происходить из-за перебоев в соединении с интернетом, прокси-сервером или связи с целевым веб-сервером. Так что если в версии БД или хеше админа появляются разные спецсимволы или недопустимые буквы, то это повод прогнать эксплойт ещe раз. Кроме того, процесс работы эксплойта весьма неспешный, в среднем на извлечение инфы уходит около часа, так что одной чашкой кофе, как предлагает автор эксплойта mr_me, тут не отделаешься. Для экономии времени можно закомментировать ненужные циклы подбора в функции doBlindSqlInjection(). Например, чтобы не извлекать лишний раз информацию о БД, а сразу приступить к хешу админа, нужно закомментировать строчки 163-176. Targets
SolutionОбнови com_virtuemart до версии 1.1.8 либо поставь патч под номером 1.1.7а. Исполнение произвольного кода в VLC MEDIA PLAYERCVSSV2
BriefУязвимость была найдена небезызвестным Рикардо Нарваха, автором эпического руководства «Введение в крекинг с нуля, используя OllyDbg», в VLC Media Player при обработке файловых форматов AMV и NSV. Она эксплуатируется удаленно и приводит к выполнению произвольного кода с привилегиями текущего пользователя. Техника Dangling Pointer, с помощью которой эксплуатируется бага, была описана в далеком 2007 году на конференции Black Hat USA (whitepaper доступна на их сайте). Сама ошибка возникает в библиотеке libdirectx_plugin.dll при обработке 0x41-байта, если его значение больше 90. Эту библиотеку использует Internet Explorer при обработке видео формата AMV, поэтому для успешной эксплуатации достаточно зайти на специально сформированную страничку через бажный IE. ExploitС 26 марта эксплойт доступен в Metasploit Framework по адресу exploit/windows/browser/vlc_amv. Для его подготовки и запуска проделываем стандартные шаги:
Напоминаю, что доступные опции можно просмотреть командой show options, полезные нагрузки — show payloads, а доступные целевые системы — show targets. Так же полезно пользоваться автодополнением, которое вызывается клавишей табуляции. После команды exploit на локальной машине запустится веб-сервер и будет дана ссылка неприметного вида, которую и нужно впарить жертве. Targets
Кроме того, для успешной отработки эксплоита из Metasploit Framework у жертвы должна быть одна из следующих конфигураций:
SolutionВ конце марта стала доступна обновленная версия плеера 1.1.8, рекомендуется установка данной или более поздней версии. Переполнение стека в Microsoft HTML help <= 6.1CVSSV2
BriefДля начала приведем выдержку из Википедии: «HTMLHelp (Microsoft Compressed HTML Help, Microsoft Compiled HTML Help, .CHM) — проприетарный формат файлов контекстной справки, разработанный корпорацией Microsoft и выпущенный в 1997 году в качестве замены формата WinHelp. Содержит в себе набор HTML-страниц, может также включать в себя содержание со ссылками на страницы, предметный указатель, а также базу для полнотекстового поиска по содержимому страниц. Все входящие в .CHM файлы сжаты алгоритмом LZX. Для просмотра .CHM-файлов используется стандартное средство, встроенное во все версии Microsoft Windows, начиная с Windows 98, и Windows NT. Кроме того, существует ряд сторонних программпросмотровщиков, FBReader и другие. Для создания .CHM-файлов можно использовать бесплатные инструменты Microsoft HTML Help Workshop, Htm2Chm, плагины для Total Commander’a, а также другие средства». ExploitБиблиотека itss.dll, подгружающаяся в адресное пространство процесса hh.exe (собственно, это и есть Microsoft HTML Help) во время открытия chm-файлов, подвержена ошибке переполнения стека. Ошибка происходит во время декомпрессии контента, в результате отсутствия соответствующих проверок при копировании произвольного количества данных в буфер, располагающийся на стеке. Уязвимое место в иде выглядит следующим образом (WinXP SP3):
Данные, которые копируются в этот стековый буфер, представляют собой один из декомпрессированных блоков, являющийся дампом части файлов, внедренных во входной chm-файл. Чтобы передать управление на уязвимую область кода, необходимо изменить несколько байт после тэга «/#WINDOWS» (первый байт устанавливаем в 0 — значение меньше, чем первоначальное, следующее за ним слово устанавливаем в количество байт для копирования). После выполнения уязвимого call’а будет записано 0x3ff7 байт из пользовательского буфера по адресу 0xb9b58 в стек по адресу 0x7f998, что, очевидно, и приведет к нехорошей ситуации. Следует обратить внимание на тот факт, что функция l_memmove_call (являющаяся оберткой над memmove или memcpy под win7) помимо вышеприведенного уязвимого места также используется и в других дислокациях библиотеки itss.dll, что должно определенным образом побуждать интересующихся к дальнейшим исследованиям... Алгоритм создания вредоносного chm-файла до смешного прост:
Содержимое test.hhc:
Содержимое test.htm:
В ходе проводимых экспериментов было замечено, что отладчики, работающие в 3-м кольце защиты, ведут себя возмутительнейшим образом. Неадекватность их поведения состоит в том, что под отладкой мы попадаем на переписанный в результате эксплуатации уязвимости EIP только в том случае, если этот новый EIP будет больше, чем 0x7fffffff. В противном случае необходимо догадаться до правильной 16-битной поправки (destination + 0x1c8), а также определить количество байт, которое не будет записано через доступный стек. Вся основная соль, материализованная в виде адреса, по которому будет передаваться управление после переполнения, кроется в файле poc.gif. Ниже приведен скрипт, позволяющий генерировать данный файл. В качестве полезной нагрузки выбрана классика жанра: запуск калькулятора.
TargetsWindows (любая версия, включая Windows 7). SolutionЗаплатки на данный момент нет. Переполнение буфера в MPLAYER LITE 33064 (SEH)CVSSV2
BriefMplayer WW — предназначенный для пользователей ОС Windows фронтэнд к популярному мультиплатформенному медиапроигрывателю mplayer, воспроизводящему большинство форматов (MPEG/ VOB, AVI, Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, RealMedia, Matroska, NUT, NuppelVideo, FLI, YUV4MPEG, FILM, RoQ, PVA), поддерживаемых множеством встроенных, XAnim и Win32 DLL кодеков. С помощью Mplayer можно смотреть фильмы в форматах VideoCD, SVCD, DVD, 3ivx, DivX 3/4/5, WMV и даже H.264. Другой величайшей возможностью MPlayer является большое число поддерживаемых драйверов вывода. Он работает с X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, DirectFB, VESA (на любой VESAсовместимой карте, даже без X11) и некоторыми низкоуровневыми картозависимыми драйверами (для Matrox, 3Dfx и ATI), а также ты можешь использовать GGI, SDL (и все ее драйверы). Большинство из них поддерживают программное или аппаратное масштабирование, так что ты можешь наслаждаться видео в полноэкранном режиме. MPlayer поддерживает вывод через некоторые из аппаратных MPEGдекодеров, таких как Siemens DVB, DXR2 и DXR3/Hollywood+. 19 марта 2011 года господа C4SS!0 и h1ch4m опубликовали эксплойт, реализующий уязвимость mplayer ww при парсинге m3u-файлов. ExploitВ процессе разбора m3u-файла, поданного на вход mplayer’у, уязвимым оказался вызов функции strcpy, копирующий пользовательский буфер, располагающийся по адресу 0xbc8008, в стек по адресу 0x22ebb8. В результате отсутствия каких бы то ни было проверок на размер копируемого буфера происходит переполнение стека.
В момент переполнения перетирается адрес SEH-обработчика. В дальнейшем управление передается на адрес, которым его перезатерли, и происходит выполнение стандартного для SEH-эксплойтов кода «pop pop ret», возвращающего управление на блок Next SEH. Далее совершается прыжок вперед на nop-цепочку (nopsled), по которой мы достигаем последовательности байт «\xE9\xD4\xEB\ xFF\xFF», представляющей собой прыжок назад на nop-цепочку, находящуюся непосредственно перед кодом полезной нагрузки. Ну а дальше управление получает полезная нагрузка, ограниченная только лишь фантазией своего создателя. Чтобы было легче осознать всю важность момента, я набросал общую схему выполнения эксплойта.
Targets
SolutionПатча, исправляющего уязвимость в процессе парсинга m3u-файла, пока что нет. |