Логотип
Главная | Статьи |  XXE 2025: Атаки через SVG/PDF и война с WAF
 XXE 2025: Атаки через SVG/PDF и война с WAF

 XXE 2025: Атаки через SVG/PDF и война с WAF

21 мая, 2025

31

🔥 XXE Evolution: Почему SVG и PDF?

Современные WAF научились детектить классические XML-инъекции. Новые векторы:

  • SVG: Все считают картинки безопасными, но парсеры librsvg до сих пор обрабатывают ENTITY
  • PDF/XMP: Метаданные в PDF (XMP стандарт) парсятся как XML, даже если основной контент бинарный

🖼️ Эксплойт #1: SVG с вкусной начинкой

Создаем зловредный SVG:

evil.dtd на нашем сервере:

Фишка: Используем протокол php://filter для чтения бинарных файлов через base64

📄 Эксплойт #2: PDF с XMP-ловушкой

Генерируем PDF с внедренным XMP через Python и библиотеку PyPDF2:

🛡️ Обход WAF: 3 приема 2025 года

  1. Динамические неймспейсы

WAF не сматчит сигнатуру из-за рандомного субдомена

2. Кодированная загрузка DTD
Разбиваем payload на части через JavaScript:

3. SVG-обфускация через CSS
Прячем XML в CSS-поле:

⚡ Автоматизация атаки: Python + nuclei

Шаг 1: Генератор SVG-пейлоадов:

Шаг 2: Массовое сканирование через nuclei:

🧠 Как защититься?

  1. Для SVG:
  1. Для PDF:
    Конвертировать через Ghostscript с опцией -dSAFER
  2. В Nginx:

🔥 Live Demo: Крадем AWS-ключи через PDF

  1. Жертва загружает PDF на уязвимый сайт
  2. Сервер парсит XMP метаданные
  3. XXE делает запрос к http://169.254.169.254/latest/meta-data/iam/security-credentials/
  4. Данные улетают на наш Webhook

Скрипт для эксфильтрации:

📌 Итоговый чеклист пентестера

  •  Проверить все загрузчики файлов SVG/PDF/XML
  •  Тестировать разные Content-Type: image/svg+xmlapplication/octet-stream
  •  Использовать кастомные неймспейсы и CDATA-обфускацию
  •  Мониторить исходящий трафик на странные DNS-запросы

Запомни: Современный XXE — это искусство мимикрии под легитимный контент. WAF не ищет зло в «картинках», а зря.