Files
obsidian/cybersec/WEB/XXE.md
T
2026-07-30 11:35:10 +05:00

2.8 KiB

XML external entity (XXE) - уязвимость, открывающая атакующему возможность вмешиваться в обработку приложением данных XML. Обычно это открывает возможность атакующему просматривать файлы на сервере приложения и взаимодействовать с любым back-end или дополнительной системой, к которой имеет доступ само приложение.

Что такое XML?

XML - extensible markup language - расширяемый язык разметки, предназначенный для хранения и транспортировки данных. Как и HTML, использует древоподобную структуру тегов и данных. Ранее был в моде как формат данных для транспортировки, но сейчас в основном используют json.

XML сущьность - способ представления элемента данных в ввиде XML документа, вместо использования оригинальных данных. Это значит, что < И > будут представленны как < и >

DTD (Document type definition) - содержит объявления, которые могут определить структуру XML документа, типы данных и другие элементы. Объявляется в отдельном DOCTYPE в начале документа.

<!DOCTYPE foo [ <!ENTITY myentity "my entity value" > ]>

В качестве примера.

Использование XML для получения файлов

Что бы провести XXE иньекцию, которая возвращает файлы из файловой системы, необходимо модифицировать XML. Есть два пути:

  1. Объявление или редактирование DOCTYPE элемента, который объявляет внешнюю сущность, имеющую доступ к файловой системе.
  2. Изменение данных в XML, который возвращаяется в ответе приложения, чтобы использовать определенную внешнюю сущность.

Эксплуатация XXE для совершения SSRF атаки

Для совершения такой гибридной атаки необходимо объявить внешнюю XML сущность используя необходимую нам ссылку, и использовать объявленную переменную как данные.