Сергей Щербель - Атаки XML eXternal Entity
-
Upload
positive-hack-days -
Category
Documents
-
view
3.624 -
download
2
description
Transcript of Сергей Щербель - Атаки XML eXternal Entity
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-запрос:
Спасибо за внимание!