Прокачиваем Burp Suite

Burp Suite является если не основным то, пожалуй, одним из главных инструментов пентестера. С момента выхода первого релиза Burp приобрел множество новых функций, появилась платная и бесплатная версии. Однако зачастую при проведении пентеста встроенного функционала не хватает, и в этом случае на помощь приходит Burp Extender – набор интерфейсов для расширения возможностей Burp. Сама программа написана на Java, и писать расширения предлагается также на этом языке. Тем не менее усилиями сторонних разработчиков в настоящее время появилось несколько проектов, цель которых – дать возможность создавать расширения и на других языках. Среди них:

  • Buby – позволяет писать расширения на Ruby с использованием jRuby;
  • Resty Burp – предоставляет REST/JSON-интерфейс для функционала Burp, что позволяет писать расширения на любом языке (к сожалению, работает только с платной версией Burp).
  • Jython Burp API – открывает доступ к интерфейсам Burp Extender на Jython (реализация Python на Java);

Continue reading “Прокачиваем Burp Suite”

Конкурс “Большой ку$h” на PHDays — райтап

Буквально пару дней назад завершился PHDays, познакомился со многими интересными людьми, в целом форум оставил самые позитивные впечатления, за что огромный респект организаторам, компании Positive Technologies. Уже появилось довольно много отчетов (shr, d0znpp, toxa, asintsov), напишу лишь о том, что больше всего запомнилось лично для меня – о конкурсе Snatch, он же “Большой ку$h”.

Continue reading “Конкурс “Большой ку$h” на PHDays — райтап”

Выполнение произвольного кода на серверах с PHP CGI

Накануне был обнаружен, пожалуй, самый эпичный баг в истории PHP. Уязвимость позволяет атакующему выполнить произвольный код, используя лишь адресную строку браузера, на любом сервере, где PHP работает как CGI. Нашла уязвимость голландская команда Eindbazen, известная по своим выступлениям на различных CTF. Хронология событий:

Continue reading “Выполнение произвольного кода на серверах с PHP CGI”

Расшифровка и деобфускация PHP-скриптов

Тема декодирования зашифрованных PHP-скриптов уже однажды мной затрагивалась в посте PHP и зашифрованный код. В нем я описал способ получения значений всех инициализированных переменных и списка объявленных функций в скрипте, зашифрованным протектором ionCube. Тогда, в 2009 году, расшифровать скрипт под ionCube было проблематично – на тот момент существовали лишь платные сервисы. Однако с ростом популярности ionCube стало ясно, что рано или поздно его постигнет участь Zend Encoder (сейчас Zend Guard), павшего в 2008 году перед ставшими повсеместно доступными “дезендерами”. Действительно, за последнее время появилось множество декодеров ionCube, можно даже найти бесплатные онлайн-сервисы. Один из них позволяет расшифровать практически любые скрипты. О нем, а также о других способах расшифровки расскажу в данной статье.

Continue reading “Расшифровка и деобфускация PHP-скриптов”

5 бесплатных онлайн сервисов для предотвращения заражения и борьбы с malware

В этом посте хочу представить 5 онлайн сервисов, которые могут быть полезны для профилактики заражения различной малварью, а также для изучения и анализа вредоносного ПО – зашифрованных javascript-сценариев, подозрительных исполняемых файлов и т.д.

  1. SurfPatrol

    Бесплатный онлайн сервис от отечественной компании Positive Technologies, специализирующейся в области информационной безопасности. SurfPatrol предназначен для проверки безопасности браузера и его плагинов. Работает очень быстро, позволяет получить общее представление об устаревших компонентах почти мгновенно. Continue reading “5 бесплатных онлайн сервисов для предотвращения заражения и борьбы с malware”

Expression Language Injection

В списке уязвимостей, связанных с различного рода инъекциями (SQL, LDAP, XPath, etc) появилось новое наименование – Expression Language Injection. Новая разновидность инъекций описана в свежем исследовании Стефано ди Паолы (Stefano Di Paola) и Аршана Дабирсиаги (Arshan Dabirsiaghi). Уязвимость затрагивает JSP-приложения, написанные с использованием популярного в этой среде фреймворка Spring MVC. В результате успешной атаки EL Injection может привести к утечке данных как со стороны сервера (пути, значения глобальных переменных, etc), так и пользователя (обход httpOnly, получение идентификаторов сессий). Уязвимость возможна в том случае, когда внутри JSP-тэгов фреймворка Spring используется Expression Language – скриптовый язык, позволяющий получить доступ к Java-компонентам из JSP:

[html]<spring:message scope=”${param.foo}”/>[/html]

В чем заключается уязвимость?
Дело в том, что в Spring MVC выражения Expression Language внутри определенных атрибутов выполняются дважды, поэтому, приложение, получающее входящие данные посредством Expression Language как в примере выше, уязвимо к внедрению произвольных EL-выражений. Continue reading “Expression Language Injection”

FuzzDB – умный фаззинг

Прежде чем начать рассмотрение проекта FuzzDB, нужно сказать пару слов о самом фаззинге. Итак, фаззинг (англ. fuzzing) – это способ тестирования приложений, в основе которого лежит передача некорректных, случайных или непредвиденных логикой программы данных. Чаще всего фаззинг применяется при blackbox-тестировании, т.е. в условиях отсутствия исходных кодов приложения. У фаззинга имеются как отрицательные, так и положительные стороны. К числу первых можно отнести низкую скрытность процесса тестирования, так как после проверки всех возможных параметров остаются следы, которые невозможно не заметить, если, конечно, проводится мониторинг журналов и нагрузки на систему. Среди положительных моментов выделяется полная автоматизация процесса, позволяющая значительно сэкономить время. Эффективность фаззинга в значительной степени зависит от программы-фаззера и базы, с которой она работает. Говорить, что фаззинг лучше метода ручного точечного тестирования или наоборот, некорректно, так как оба метода должны дополнять друг друга при blackbox-пентесте.

Continue reading “FuzzDB – умный фаззинг”

Универсальный XSS-вектор

Поиск XSS довольно трудоемкое занятие, так как необходимо учитывать множество контекстов, в которых может выполниться js-код, например внутри одинарных или двойных кавычек, внутри различных атрибутов и т.д. Для тех, кому надоело перебирать возможные варианты, пригодится следующий универсальный xss-вектор, который выполнится в любом контексте, т.е. его можно поместить в любой параметр и не беспокоится о том, в какой участок кода он в конечном счете попадет:

javascript:/*--></marquee></script></title></textarea></noscript></style></xmp>">[img=1]<img -/style=-=expression&#40&#47;&#42;’/-/*&#39;,/**/eval(name)//&#41;;width:100%;height:100%;position:absolute;behavior:url(#default#VML);-o-link:javascript:eval(title);-o-link-source:current name=alert(1) onerror=eval(name) src=1 autofocus onfocus=eval(name) onclick=eval(name) onmouseover=eval(name) background=javascript:eval(name)//>"

Размер немного великоват (428 байт), но это в любом случае более продуктивный вариант, чем "><script>alert()</script>.
Для удобного использования в Opera можно добавить данный вектор как заполнитель формы (Меню – Настройки – Общие настройки – Формы), для Firefox с плагином TamperData можно создать новый элемент контекстного меню для перехватываемых пакетов.

Credits: Gareth Heyes @ thespanner.co.uk

CMS Explorer

При проведении пентестов очень часто приходится иметь дело с такими известными CMS как Joomla, WordPress и Drupal. Эта тройка составляет значительную часть от общего количества используемых в сети систем управления контентом с открытым исходным кодом. Серьезные уязвимости, как правило, присутствуют только в древних версиях, поэтому на первый план выходят самостоятельно установленные плагины, безопасность которых может быть намного более далекой от идеала, чем в ядре системы.
Инструмент CMS Explorer служит для определения плагинов в перечисленных выше CMS. Он представляет собой небольшой perl-скрипт с набором списков плагинов для каждой из CMS. Наборы легко обновляются, указав ключ -update. Утилита также сканирует используемые темы оформления, но обычно это не несет никакой пользы. Чтобы отключить сканирование тем, в исходном коде нужно вручную указать значение соответствующего элемента массива ($OPTIONS{‘checkthemes’} = 0;), так как автор не предусмотрел такой опции при запуске.
Отличительной особенностью скрипта является автоматический поиск на предмет уязвимостей по базе данных OSVDB для найденных плагинов. Однако для использования поиска необходимо иметь ключ к API сервиса. Впрочем, получить его может любой желающий, пройдя регистрацию. К сожалению, присутствует одно ограничение – сервис позволяет сделать только 100 запросов в день. Получив ключ, нужно создать в папке с CMS Explorer файл osvdb.key и внести значение. Continue reading “CMS Explorer”

Новые способы обхода WAF и PHP эксплоиты

Стефан Эссер снова порадовал очередной порцией свежей информации о новых уязвимостях в своих выступлениях сразу на двух мероприятиях (RSS09 и Powerofcommunity). В частности, он поделился интересными способами обхода таких WAF как mod_security и F5 BIGIP ASM, информацией о возможных уязвимостях в продуктах, работающих на Zend Framework, а также о том, как можно использовать уязвимость, связанной с прерываниями внутренних функций в PHP, несмотря на выпущенные фиксы. Итак, обо всем по порядку.

Continue reading “Новые способы обхода WAF и PHP эксплоиты”