Перейти к содержанию

XML External Entity (Security misconfiguration)


Также известная как XEE - группа уязвимостей позволяющая эксплуатировать в негативном ключе возможности обработчика XML. Это может привести к получению доступа к конфиденциальным файлам, DDOS атакам, в некоторых случаях к удаленному выполнения кода. Кроме того, XEE атака способна привести к SSRF (Server site Request forgery).

Разделяют два типа XEE атак:

  1. In-band XEE - при которой атакующий сразу видит плоды своего труда - получает немедленный ответ на свой XEE Payload
  2. Out-band XEE (OOB-XEE) - также называют Blind XEE, при которой атакающий не может напрямую взаимодействовать с атакуемым приложением и должен перенаправлять ответы от XEE Payload на сторонний, контролируемый им сервер.

Стандарт XML описывает возможность валидации XML файла с некоторой предопределенной формой - DTD. Подробнее тут. Именно этот факт позволяет создавать XEE payload.

Примеры:

<?xml version="1.0"?>
<!DOCTYPE root [<!ENTITY read SYSTEM 'file:///etc/passwd'>]>
<root>&read;</root>
DTD определяющий root элемент как сущность read которая в свою очередь ссылается на /etc/passwd. Это позволит получить данные из /etc/passwd

Больше примеров - https://github.com/payloadbox/xxe-injection-payload-list


Способы противодействия

Главное: отключать DTD!
Для каждого языка на котором написан обработчик XML есть свои методы.

Подробнее - owasp.org