➡️XML External Entity (XXE) injection - это веб-уязвимость, которая позволяет злоумышленнику вмешиваться в процесс обработки XML-данных приложением, заставляя приложение делать действия, указанные атакующим.
🔵Тип:
Web, Server-Side.
Есть следующие разновидности:
- ⏩Видимые - результат эксплуатации приходит в виде ответов приложения или иным способом отображается в приложении.
- ⏩Слепые - результат эксплуатации не виден нарямую. Для тестирования эксплуатабельности используются внешние коммуникации либо ошибки приложения.
- ⏩Экзотические - Эксплуатация происходит путем внедрения вредоносной нагрузки в нестандартное окружение, например, svg-изображение или XInclude.
🔵Пример полезной нагрузки:
<?xml version="1.0"?><!DOCTYPE root [<!ENTITY test SYSTEM 'file:///etc/passwd'>]><root>&test;</root>А ещё есть хороший репо с кучей нагрузок.
🔵Влияние:
Наиболее часто встречаемое - SSRF или LFI (Local File Inclusion). В очень редких случаях с ходу может быть RCE (например, если у вас приложение на php и включена обертка expect). Чаще всего используется в цепочке уязвимостей.
🔵Как защититься?
Практически все XXE-уязвимости возникают из-за того, что библиотека обработки XML приложения поддерживает потенциально опасные функции, в которых приложение не нуждается или не собирается их использовать. Самый простой и эффективный способ предотвратить XXE-атаки - отключить эти функции.
Как правило, достаточно отключить разрешение внешних сущностей и отключить поддержку XInclude.
Данного зверя можно часто встретить в CTF, однако в реальных приложениях это происходит реже (тем не менее, происходит). Защититься, в целом, несложно, но придумывать цепочки с ее эксплуатацией намного интереснее (как-то я внутрь картинки запихивал сериализованную полезную нагрузку, а потом дергал ее при помощи svg-xxe).
#edu #vuln #web #xxe


