Обзор эксплоитовМаг (icq 884888, http://wap-chat.ru) Жаркий август прямо-таки плавит уставшие мозги разработчиков. Хакеры же, наоборот, прилагают все больше и больше усилий для поиска знаменательных уязвимостей в самых различных приложениях. Вот и сегодняшний обзор порадует свежим урожаем багов в таких известнейших продуктах, как WordPress, MediaWiki, Mozilla Firefox, MS Internet Explorer вместе с компонентами MS Office, а также в целой куче web cms, в которых используется WYSIWYG-редактор FCKeditor. Недостаточная проверка привилегий в WordPressBRIEFПоиск дыр в известнейшей блоговой платформе WordPress становится для многих уже не просто увлекательным занятием, но и самым настоящим хобби. Вот и на этот раз ребята из Core Security Technologies (http://www.coresecurity.com/corelabs) обнаружили, что движок некорректно проверяет права доступа у непривилегированных пользователей при просмотре (а также редактировании и сохранении) страниц конфигурации самых различных плагинов. Удаленный авторизованный пользователь может легко внедрить свой XSS-код в конфиги плагинов, а также просмотреть другую чувствительную информацию. Редактирование опций плагинов обычно проходит через сценарий
Как видно, валидацию проходят только физически расположенные на жестком диске файлы плагина. Никаких проверок на права доступа к ним нет и в помине. EXPLOITВ качестве примера авторы приводят следующие векторы использования: 1. Просмотр конфигурации плагина Collapsing Archives:
2. Просмотр информации об антиспам плагине Akismet, идущем в дефолтном дистрибутиве вордпресса:
3. XSS в плагине Related Ways To Take Action:
Для использования бага вставляем в поле «Exclude actions by term» код: 4. Просмотр Dashboard плагина WP Security Scanner:
5. Реконфигурация плагина Intrusion Detection System:
Оригинальный текст advisory ищи по ссылке http://milw0rm.com/exploits/9110. TARGETS
SOLUTIONСамым лучшим решением для устранения уязвимости будет обновление своего блога до последней версии, представленной на Wordpress.com (на данный момент – 2.8.1). Загрузка произвольных файлов в FCKeditorBRIEFFCKeditor, наряду с TinyMCE, является одним из наиболее распространенных WYSIWYG-редакторов и используется в таких известных WEB-приложенияx, как Zope, PHPList, Falt4 CMS, RunCMS, Dokeos, Nuke ET. Для этой уязвимости в сети присутствуют очень скудные описания, из которых понятно только то, что уязвим параметр «CurrentFolder» (например, http://www.securitylab.ru/vulnerability/382191.php и http://www.securityfocus.com/bid/31812). Так как такое положение дел меня вовсе не устраивало, пришлось самому покопаться в исходниках описываемого HTML based редактора. Итак, качаем последний уязвимый релиз (http://dfn.dl.sourceforge.net/sourceforge/fckeditor/FCKeditor_2.6.4.zip) и открываем сценарий, ответственный за upload файлов во встроенном файлменеджере скрипта -
Здесь нас интересует функция определения текущей директории - GetCurrentFolder(), найти которую мы сможем в сценарии ./editor/filemanager/connectors/php/io.php:
А также функция, собственно, загрузки и сохранения файлов FileUpload() из
Функция ServerMapFolder() просто возвращает полный folder path на сервере, исходя из переданного параметра $currentFolder. Как видно из функции GetCurrentFolder(), имя указываемой пользователем папки проверяется только на наличие уязвимости directory traversal, но никак не на банальный null-byte. EXPLOITДля наглядного примера эксплуатации воспользуемся встроенным тестовым стендом FCKeditor для загрузки файлов - ./editor/filemanager/connectors/uploadtest.html. Итак, в списке «Select the File Uploader to use» выбираем PHP (ну, или любой другой понравившийся тебе коннектор), далее в форме «Upload a new file» выбирай свой шелл, сохраненный с расширением .txt и, наконец, в поле «Current Folder» вбивай что-то вроде «my-evil-shell.php%00». Как видно из примера, $sFilePath для move_uploaded_file() становится равным имени директории ($sServerDir), настоящее же имя файла ($sFileName) просто-напросто отбрасывается нулл-байтом. TARGETSFCKeditor <=2.6.4, а также все web cms, в которых используется этот WYSIWYG-редактор. SOLUTIONКак всегда, наилучшим решением для закрытия уязвимости будет установка последней версии скрипта с сайта производителя - http://www.fckeditor.net. Межсайтовый скриптинг в MediaWikiBRIEFДа-да! В движке MediaWiki, который используется Великой и Ужасной Википедией и множеством других вики-сайтов, некий Amalthea 13 июля сего года нашел замечательную XSS-уязвимость. Бага присутствует в файле ./includes/specials/SpecialBlockip.php и проявляется на странице site.com/index.php/Special:Block.
Переменная wpBlockAddress (а затем и $this->BlockAddress) нигде и никоим образом не фильтруется, так что нам остается лишь грамотно заюзать этот замечательный факт. EXPLOITИспользовать описанную уязвимость межсайтового скриптинга необычайно просто. Достаточно лишь скормить администратору или любому другому привилегированному участнику Вики-портала ссылку вида: Если это будет XSS со ссылкой на твой снифер, то авторизационные кукисы администратора благополучно окажутся у тебя. TARGETSУязвимы сразу две ветки MediaWiki:
SOLUTIONКак обычно, не забываем проверять наличие свежей версии движка на сайте производителя - mediawiki.org/wiki/Download. Повреждение памяти в Mozilla FirefoxBRIEFЧем популярней становится софт, тем большее количество энтузиастов находят в нем уязвимости. Печальным примером тому служит не так давно вышедший Firefox 3.5, где некий SBerry aka Simon Berry-Byrne нашел замечательную багу переполнения кучи, с помощью которой злоумышленник может выполнить произвольный код на целевой системе. Проблема заключается в ошибке в Just-in-Time (JIT, компиляторе нового движка JavaScript для Огнелиса): при обработке JavaScript'ом некоторых тегов HTML (например, font) компилятор некорректно возвращает данные из собственных функций, таких как escape(). Кстати, тем же автором, но в соавторстве с Andrew Haynes была найдена и еще одно переполнение (теперь уже вызывающее Denial of Service) в свежем файрфоксе - Mozilla Firefox 3.5 Unicode Data Remote Stack Buffer Overflow Vulnerability. На этот раз бага заключается в некорректной обработке длинных unicode-последовательностей в методе write вышеозначенного движка JS. EXPLOITДля первого переполнения автор предоставляет нам в пользование неплохой PoC (http://milw0rm.com/exploits/9137), запускающий на твоей машине приложение calc.exe, а для второго достаточно лишь накидать небольшой html-пример с использованием javascript:
Не вызывающая подозрений функция write() должна, по идее, вывести на экран очень длинные последовательности unicode-символов. Но вместо этого Firefox зависнет и станет кушать очень-очень много памяти (так что на своей машине тестить сплойт крайне не рекомендую). TARGETSFirefox 3.5 и, возможно, более ранние версии SOLUTIONЗа всеми security-апдейтами для Огнелиса обращайся по адресу mozilla.com/firefox. Выполнение произвольного кода в Microsoft Office Web Components Spreadsheet ActiveX компонентеBRIEFМелкомягкие с каждым днем все больше и больше нас радуют. На этот раз в поле зрения всей продвинутой IT-общественности попал сплойт под ослика IE, основанный на уязвимости в Microsoft Office Web Components Spreadsheet ActiveX. Сей славный ActiveX компонент используется браузером Internet Explorer для отображения электронных таблиц Excel. Сама бага, собственно, заключается в ошибке при проверке границ данных в методе msDataSourceObject() в этом компоненте (OWC 10 и OWC11). При эксплуатации уязвимости (например, с помощью всем известного метода с iframe) злоумышленник легко может вызвать переполнение стека и выполнить произвольный код на целевой системе. Иными словами, если ты используешь в качестве браузера IE, а также на твоем компьютере присутствует небезызвестный MS Office, то твоя система подвержена опасности. EXPLOIT Сразу три вариации эксплойта под описанную багу ты можешь найти по адресу http://www.securitylab.ru/vulnerability/382430.php. TARGETS
SOLUTIONКак всегда, Microsoft не торопится исправлять свои грабли. В качестве временной меры для исправления уязвимости рекомендуется деактивировать следующие CLSID:
Повышение привилегий в ядре LinuxBRIEF17 июля сего года известный эксперт по безопасности *Nix-систем, автор модуля grsecurity Brad Spengler опубликовал описание и PoC весьма необычного эксплойта под последние ядра Linux. Необычным является то, что при анализе исходного кода ядра Linux эту багу практически невозможно обнаружить невооруженным глазом.
Объясню, что здесь происходит: сначала инициализируется некая переменная sk и устанавливается в значение, которое может быть равно нулю. Затем значение переменной проверяется таким образом, что, если оно равно нулю, возвращается ошибка. Вся соль в том, что бага проявится только после компиляции исходника, так как в процессе оптимизации этого кода компилятор увидит, что значение означенной переменной уже давно присвоено и просто вырежет блок с if(!tun). Такое нехитрое злодеяние, проведенное компилятором, позволит нам прочитать и записать данные по адресу 0x00000000, который затем можно будет спокойно перенаправить в пространство пользователя. EXPLOITОпубликованный Брэдом Спенглером эксплойт, а также все его комментарии к этой знаменательной баге на английском языке ты можешь скачать по адресу http://milw0rm.com/exploits/9191. TARGETSLinux kernel <= 2.6.30 (ядро должно быть собрано с опцией GCC -fdelete-null-pointer-checks) SOLUTIONДля исправления этой и других уязвимостей ядра Линукса не забывай регулярно проверять GIT-репозиторий производителя: http://git.kernel.org. |