XML External Entity (Security misconfiguration)
Также известная как XEE - группа уязвимостей позволяющая эксплуатировать в негативном ключе возможности обработчика XML. Это может привести к получению доступа к конфиденциальным файлам, DDOS атакам, в некоторых случаях к удаленному выполнения кода. Кроме того, XEE атака способна привести к SSRF (Server site Request forgery).
Разделяют два типа XEE атак:
- In-band XEE - при которой атакующий сразу видит плоды своего труда - получает немедленный ответ на свой XEE Payload
- 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>
root
элемент как сущность read
которая в свою очередь ссылается на /etc/passwd.
Это позволит получить данные из /etc/passwd
Больше примеров - https://github.com/payloadbox/xxe-injection-payload-list
Способы противодействия
Главное: отключать DTD!
Для каждого языка на котором написан обработчик XML есть свои методы.
Подробнее - owasp.org