Страницы

Поиск по вопросам

воскресенье, 15 декабря 2019 г.

Как работает данная XXE атака?

#xml #безопасность #xxe


Здесь репорт, демонстрирующий атаку XXE.

Если вкратце, атакующий разместил у себя на сервере xml





        
        
]>
&localfile;&remotedoc;

  
    
      email
      settings
      
        SMTP
        52.34.103.214
        1191
        off
        account@obmhld.com
        yandex.ru
        off
        off
        off
      
    
  





в определённой директории, и после этого попытался авторизоваться на сайте mail.ru
со следующими данными: 

@

И после этого с мэйловского сервера прилетают запросы на сервер атакующего:

1:

5.61.237.44 - - [14/Feb/2018:01:05:14 +0000] "GET /autodiscover/autodiscover.xml
HTTP/1.0" 200 955 "http://obmhld.com/autodiscover/autodiscover.xml" "Mozilla/4.0 (compatible;
MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/6.0; .NET CLR 2.0.50727; SLCC2; .NET
CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3;
Tablet PC 2.0; Microsoft Outlook 15.0.4481; ms-office; MSOffice 15)"


2:

5.61.237.44 - - [14/Feb/2018:01:05:15 +0000] "GET /pocs/?token=xmlsdfgdg5454g54&doc1=2
HTTP/1.0" 200 10 "-" "-"


Хотелось бы понять механизм работы этой чудной атаки. Спасибо!
    


Ответы

Ответ 1



Атака состоит из двух частей. В первой части Mail.ru пытается узнать данные для получения почты с неизвестного домена, загружая autodiscover.xml. Понятно, зачем это им нужно: можно сразу дать человеку все данные для настройки сбора почты, останется только ввести пароль. Сам механизм известный, в нём самом каких-то проблем. Примерный вид файла. Не исключаю что они до сих пор запрашивают этот файл. Во второй части начинается интересное: парсер Mail.ru загружает внешние сущности (вида   или &custom;), которые объявляются в начале документа: В общем случае можно вставить сущность прямо в документ, получим содержимое файла, на которую она ссылается, прямо на экран. В данном случае это не работает, но всё равно можно увидеть получается распарсить файл или нет. Например, если первая сущность &localfile; ссылается на несуществующий файл, то вторая сущность &remotedoc; не приведет к HTTP запросу на сервер атакующего. Если же файл есть, то будет запрос к серверу атакующего. Если говорить об общем случае, то возьмём такой XML: ]> &hostname; Пропустим его через xmllint: xmllint --noent xxe.xml И увидим у себя на экране имя вашего компьютера: mysuperhostname Как защититься от этого? Отключить загрузку внешних сущностей. Например, в PHP для этого есть функция libxml_disable_entity_loader(). Документация.

Комментариев нет:

Отправить комментарий