XXE-ін’єкція

XXE-ін’єкція

Завантажений XML-файл, який читає власні файли сервера.

Що таке XXE-ін’єкція?

XXE перетворює синтаксичний аналізатор XML на примітив для читання файлів і підробки запитів. Зловмисник оголошує об’єкт SYSTEM у DOCTYPE, а синтаксичний аналізатор вставляє локальний файл або відповідь внутрішньої URL-адреси, перш ніж ваш код побачить документ. Це робить його помилкою конфігурації аналізатора, а не форми введення. Ви вказуєте завантаження замовлення на купівлю на file:///etc/passwd і читаєте його назад у полі відтвореного постачальника. Потім ви виправляєте libxmljs.parseXml(..., { noent: true }) : відхиляєте DOCTYPE і декларації сутностей і виконуєте синтаксичний аналіз із вимкненим розпізнаванням зовнішніх сутностей і DTD.

Що ви дізнаєтесь у XXE-ін’єкція

XXE-ін’єкція — Кроки навчання

  1. Знайдіть функцію всмоктування

    Brackwell Logistics дозволяє будь-якому зареєстрованому постачальнику надсилати замовлення на купівлю, завантажуючи його як XML-файл. Форма приймає документ, аналізує його на серверах Brackwell і зчитує постачальника та загальну суму. Боб відкриває функцію, щоб побачити, як вона поводиться, перш ніж торкнутися її.

  2. Де відбувається розбір

    Один рядок на цій сторінці — вся причина, чому Боб зацікавлений.

  3. Завантажте звичайне замовлення

    По-перше, спостерігайте за нормальною поведінкою функції. Боб додає звичайне замовлення на купівлю та надсилає його. Панель «Мережа» браузера записує запит і відповідь сервера, саме те, що розробник бачить у DevTools.

  4. Те, що аналізатор повторив

    Замовлення розібрано чисто. Одна деталь у відповіді говорить Бобу, як атакувати.

  5. Почати зі звичайного файлу

    Боб відкриває звичайне замовлення на покупку у своєму редакторі. Зараз це саме те, що виглядає: постачальник і загальні прості дані. XML дозволяє документу оголосити зовнішню сутність, іменований заповнювач, значення якого аналізатор отримує з іншого місця. Боб збирається додати один.

  6. Озброїти файл

    Боб додає DOCTYPE, який оголошує зовнішню сутність, що вказує на файл на диску, а потім вказує поле постачальника на цю сутність. Файл все ще аналізується як замовлення на купівлю. Він починає з файлу, який є в кожній системі Linux, щоб довести, що парсер узагалі дотримується посилання.

  7. Сутність

    Для цього знадобилося лише два рядки.

  8. Завантажте створений файл

    Боб надсилає свій створений файл через ту саму функцію прийому. Для браузера це просто ще одне завантаження замовлення на покупку.

  9. Файл повертається

    Відповідь не є назвою постачальника. Це файл паролів сервера, який зчитується з диска та передається назад через звичайний вихід завантаження.

  10. Перевірка знань

    Ви щойно спостерігали, як завантаження замовлення на купівлю читає файли сервера. Зафіксуйте чому.

Охоплення стандартів безпеки

OWASP Top 10

  • A02:2025 Security Misconfiguration
  • A05:2021 Security Misconfiguration

CWE

  • CWE-611 Improper Restriction of XML External Entity Reference
  • CWE-918 Server-Side Request Forgery (SSRF)

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security