Средства защиты от XXE сильно различаются по уровню сложности, и многие из них можно обойти.
1️⃣ Байпас фильтров валидации входных данных
⚫️ UTF-16 вместо ASCII
Во многих приложениях используются простые блэклисты ключевых слов, которые можно забайпасить с помощью кодировки и обфускации.
$ cat payload.xml | iconv-f UTF-8 -t UTF-16BE > utf16_payload.xml
Парсер XML по-прежнему будет корректно обрабатывать данные, но фильтры на основе ASCII не обнаружат вредоносный контент.
💡 Больше примеров кодировок XML и пограничных случаев — в райтапе "Evil XML with Two Encodings" Арсения Шароглазова
⚫️ HTML-entity кодирование
2️⃣ Параметрические сущности
Если приложение блокирует прямое объявление
ENTITY, попробуй ввести её косвенно: подключить внешний DTD, а уже внутри него разместить пэйлоад.3️⃣ XXE в нестандартных типах контента
⚫️ Изображения в формате SVG
⚫️ SOAP-эндпоинты
4️⃣ XInclude-атаки при ограничении использования DOCTYPE
Частая защита — просто вырезать
DOCTYPE. Но если парсер поддерживает XInclude, это не спасает. XInclude позволяет подключать внешние ресурсы без DOCTYPE.



