Введение
XXE инъекции ли внешние уязвимости XML – это особый тип атаки на стороне сервера или SSRF-атаки, связанный с злоупотреблением функциями в XML-синтаксических парсерах.
Функции через которые эти атаки идут, широко доступны, но редко используются, и когда они запускаются, могут вызывать атаку DoS (отказ в обслуживании), а в некоторых случаях гораздо более серьезную эскалацию, например, извлечение конфиденциальных данных или в худшем случае RCE или удаленное выполнение кода.
Что такое XML?
Согласно википедии: расширяемый язык разметки. Рекомендован Консорциумом мира паутины (W3C). Спецификация XML-описания XML-документы и отделение поведения XML-процессоров (программ, читающих XML-документы и обеспечивающих доступ к их содержимому).
Что такое атака XXE
Дело в том, что сущности XML могут быть определены где угодно, в том числе и извне,если находится приложение XXE, и злоумышленник может злоупотреблять полномочиями с помощью объектов XML, чтобы запросить выполнение определенных файлов или даже вернуть содержимое файлов, если они знают структуру вашего веб-приложения, например.
Также стоит упомянуть, что с некоторыми синтаксическими анализаторами XML даже можно получить списки каталогов в дополнение к содержимому файла.
Пример атаки XXE
Пример будет выглядеть так:
Запрос
POST http://example.com/xml HTTP/1.1 <!DOCTYPE foo [ <!ELEMENT foo ANY> <!ENTITY bar SYSTEM "file:///etc/lsb-release"> ]> <foo> &bar; </foo>
HTTP/1.0 200 OK DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"
Часть 2 – XML External Entity (XXE) limitations
Часть 3 – Out-of-band XML External Entity (OOB-XXE)