Сергей Щербель - Атаки XML eXternal Entity

Preview:

DESCRIPTION

 

Citation preview

PHD2011АТАКА XML eXternal Entity

Сергей Щербель

Positive Technologies

Задание

SVN + XXE = profit

SVN

SVN – система управления версиями, позволяющая хранить несколько версий одного и того же документа.

В основном используется для хранения исходных кодов приложений.

Более чем частый случай, когда доступ к каталогу .svn, содержащему исходные коды веб-приложения, не ограничен для пользователей веб-ресурса.

В результате чего, злоумышленнику становятся доступны структура и исходные коды приложения.

Атака XML eXternal Entity

XML – язык разметки, широко применяемый в распределенных приложениях, в том числе и веб-приложениях.

Для записи спецсимволов в XML документах используются так называемые сущности (Entity). Сущностью называются именованные данные, как правило, текстовые (в частности спецсимволы).

Сущности можно разделить на следующие категории:

Предопределенные

Внутренние

Внешние

Атака XML eXternal Entity

Пример предопределенной сущности: " (символ двойной кавычки).

Пример внутренней сущности:

<!ENTITY positive  "hek">

<phd>&positive;</phd>

Внешние сущности ссылаются на сторонние файлы.

Атака XML eXternal Entity заключается в использовании внешних сущностей.

<!ENTITY epicwin  SYSTEM "file:///etc/passwd">

Фикс – запретить использование внешних сущностей:

DOMDocument::loadXML($xml, LIBXML_NOENT);

Через XXE был взломан Яндекс

В рамках конкурса «месяц поиска уязвимостей Яндекса» Владимиром Воронцовым (D0znpp) была найдена уязвимость XXE.

Следует отметить, что Владимир не ограничился чтением локальных файлов, но и смог обращаться ко внутренним ресурсам, используя врапперы.

Прохождение

Шаг 1: найти в каталоге .svn исходный код сценария config.php:

Прохождение

Шаг 2: реализовать атаку XXE, отправив специально сформированный POST-запрос:

Спасибо за внимание!

Recommended