**XML external entity (XXE)** - уязвимость, открывающая атакующему возможность вмешиваться в обработку приложением данных XML. Обычно это открывает возможность атакующему просматривать файлы на сервере приложения и взаимодействовать с любым back-end или дополнительной системой, к которой имеет доступ само приложение. ## Что такое XML? **XML - extensible markup language** - расширяемый язык разметки, предназначенный для хранения и транспортировки данных. Как и HTML, использует древоподобную структуру тегов и данных. Ранее был в моде как формат данных для транспортировки, но сейчас в основном используют **json**. **XML сущьность** - способ представления элемента данных в ввиде XML документа, вместо использования оригинальных данных. Это значит, что < И > будут представленны как **<** и **>** **DTD (Document type definition)** - содержит объявления, которые могут определить структуру XML документа, типы данных и другие элементы. Объявляется в отдельном DOCTYPE в начале документа. ```XML ]> ``` В качестве примера. ## Использование XML для получения файлов Что бы провести XXE иньекцию, которая возвращает файлы из файловой системы, необходимо модифицировать XML. Есть два пути: 1. Объявление или редактирование DOCTYPE элемента, который объявляет внешнюю сущность, имеющую доступ к файловой системе. 2. Изменение данных в XML, который возвращаяется в ответе приложения, чтобы использовать определенную внешнюю сущность. ## Эксплуатация XXE для совершения SSRF атаки Для совершения такой гибридной атаки необходимо объявить внешнюю XML сущность используя необходимую нам ссылку, и использовать объявленную переменную как данные.