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-запрос:
Спасибо за внимание!

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

  • 1.
    PHD2011 АТАКА XML eXternalEntity Сергей Щербель Positive Technologies
  • 2.
  • 3.
    SVN SVN –система управления версиями, позволяющая хранить несколько версий одного и того же документа. В основном используется для хранения исходных кодов приложений. Более чем частый случай, когда доступ к каталогу .svn, содержащему исходные коды веб-приложения, не ограничен для пользователей веб-ресурса. В результате чего, злоумышленнику становятся доступны структура и исходные коды приложения.
  • 4.
    Атака XML eXternalEntity XML – язык разметки, широко применяемый в распределенных приложениях, в том числе и веб- приложениях. Для записи спецсимволов в XML документах используются так называемые сущности (Entity). Сущностью называются именованные данные, как правило, текстовые (в частности спецсимволы). Сущности можно разделить на следующие категории: Предопределенные Внутренние Внешние
  • 5.
    Атака XML eXternalEntity Пример предопределенной сущности: &quot; (символ двойной кавычки). Пример внутренней сущности: <!ENTITY positive "hek"> … <phd>&positive;</phd> Внешние сущности ссылаются на сторонние файлы. Атака XML eXternal Entity заключается в использовании внешних сущностей. <!ENTITY epicwin SYSTEM "file:///etc/passwd"> Фикс – запретить использование внешних сущностей: DOMDocument::loadXML($xml, LIBXML_NOENT);
  • 6.
    Через XXE былвзломан Яндекс  В рамках конкурса «месяц поиска уязвимостей Яндекса» Владимиром Воронцовым (D0znpp) была найдена уязвимость XXE. Следует отметить, что Владимир не ограничился чтением локальных файлов, но и смог обращаться ко внутренним ресурсам, используя врапперы.
  • 7.
    Прохождение Шаг 1:найти в каталоге .svn исходный код сценария config.php:
  • 8.
    Прохождение Шаг 2:реализовать атаку XXE, отправив специально сформированный POST-запрос:
  • 9.