XML External Entity (XXE) injection

Я исследую веб‑безопасность и делюсь практическими разбориками уязвимостей: от CSRF и XXE до Server‑Side XSS, race conditions и обходов CSP. Пишу чек‑листы атак и защиты, редкие кейсы из практики и мысли о мышлении пентестера. Только прикладной AppSec, понятные примеры и то, что реально встречается в проде. Учимся охотиться, пока на нас не охотятся.

xxexmlssrf

➡️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

Логотип: на белом фоне схематичная геометрическая фигура, крупная красная надпись «XXE» и подпись «XML eXternal Entity» под ней
Иллюстрация к теме XXE (XML eXternal Entity).

Читайте так же