17 Фев, 2023

Внедрение XML-кода

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

Внедрение XML-кода это тип уязвимости веб-приложения, возникающий, когда злоумышленник может внедрить вредоносный код в поле ввода или параметр XML. Злоумышленник может использовать эту уязвимость для манипулирования XML-данными, обрабатываемыми приложением, что потенциально может привести к выполнению непреднамеренных команд, раскрытию конфиденциальных данных или выполнению несанкционированных действий. Вектор атаки может быть направлен через специально созданный XML-ввод, содержащий вредоносные теги, сущности или комментарии, которые могут привести к выполнению кода или утечке данных. Разработчикам веб-приложений важно знать об этой уязвимости и предпринимать шаги по ее предотвращению, например, путем очистки пользовательского ввода, проверки входных данных и использования параметризованных запросов.

Пример уязвимого кода на разных языках программирования:


в PHP:

				
					$xml_data = $_POST['xml_data'];
$xml_parser = xml_parser_create();
xml_parse($xml_parser, $xml_data);

				
			


В этом коде $_POST['xml_data'] $_POST['xml_data'] переменная передается непосредственно в xml_parse() функционируйте без какой-либо проверки или дезинфекции. Это делает код уязвимым для атак с использованием XML-инъекций.

• в Java:

				
					String xmlData = request.getParameter("xml_data");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(new StringReader(xmlData)));

				
			


В этом коде request.getParameter("xml_data") метод используется для извлечения XML-данных из запроса, которыми может манипулировать злоумышленник. Это делает код уязвимым для атак с использованием XML-инъекций.

• в C#:

				
					XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(Request["xml_data"]);

				
			


В этом коде Запрос["xml_data"] метод используется для извлечения XML-данных из запроса, которыми может манипулировать злоумышленник. Это делает код уязвимым для атак с использованием XML-инъекций.

Примеры использования XML-инъекции

Считывание конфиденциальной информации:

Злоумышленник может внедрить вредоносную полезную нагрузку XML, которая использует уязвимость для считывания конфиденциальной информации из приложения или базы данных. Например, злоумышленник может ввести полезную нагрузку XML, которая извлекает все данные учетной записи пользователя, включая имена пользователей и пароли.

Изменение данных:

Злоумышленник может внедрить вредоносную полезную нагрузку XML, которая использует уязвимость для изменения данных в приложении или базе данных. Например, злоумышленник может ввести полезную нагрузку XML, которая изменяет цену продукта до очень низкого значения.

Отказ в обслуживании:

Злоумышленник может внедрить вредоносную полезную нагрузку XML, которая использует уязвимость для запуска атаки типа "отказ в обслуживании" (DoS). Например, злоумышленник может внедрить полезную нагрузку XML, которая создает бесконечный цикл, заставляя приложение потреблять чрезмерные ресурсы и в конечном итоге аварийно завершать работу.

Удаленное выполнение кода:

Злоумышленник может внедрить вредоносную полезную нагрузку XML, которая использует уязвимость для выполнения произвольного кода на сервере. Например, злоумышленник может ввести полезную нагрузку XML, которая выполняет команду на сервере, позволяя злоумышленнику получить контроль над сервером.

Методы повышения привилегий для внедрения XML

  • Внедрение полезной нагрузки XML, которая использует уязвимость в приложении или сервере, позволяя злоумышленнику получить доступ к операционной системе или другим конфиденциальным ресурсам.

  • Изменение XML-данных таким образом, чтобы злоумышленник мог обойти контроль доступа и получить доступ к конфиденциальной информации или выполнять действия, на выполнение которых он не уполномочен.

  • Внедрение полезной нагрузки XML, которая позволяет злоумышленнику выполнять произвольный код на сервере, который затем может быть использован для повышения привилегий или получения доступа к конфиденциальным ресурсам.

  • Использование внедрения XML для управления поведением приложения таким образом, чтобы злоумышленник мог получить контроль над системой или повысить привилегии. Например, злоумышленник может ввести полезную нагрузку XML, которая позволяет ему выполнять административные команды или обходить проверки подлинности.

  • Использование XML-инъекции для создания новой учетной записи пользователя с правами администратора, предоставляющей злоумышленнику полный контроль над системой.

Общая методология и контрольный список для внедрения XML

Методология:

  1. Понять применение: Получите глубокое представление о приложении и его функциональности. Это может включать в себя определение полей ввода, источников данных и форматов вывода данных.

  2. Определение полей ввода: Определите все поля ввода, которые принимают XML-данные или XML-подобные данные, включая поля поиска, поля загрузки файлов и другие формы, которые принимают пользовательский ввод.

  3. Создание плана тестирования: Создайте план тестирования, в котором описываются шаги, которые вы предпримете для проверки уязвимостей внедрения XML. Это может включать список тестовых примеров и полезных нагрузок, которые будут использоваться во время тестирования.

  4. Тестовые полезные нагрузки: Вводите тестовые полезные нагрузки в каждое поле ввода, чтобы определить, является ли приложение уязвимым для внедрения XML. Тестовые полезные нагрузки должны включать различные полезные нагрузки XML, в том числе с искаженными данными, вредоносными сценариями и тегами, которые могут использовать известные уязвимости в приложении.

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

  6. Проверка на загрязнение параметров HTTP: Проверьте загрязнение параметров HTTP, отправив несколько параметров с одинаковым именем, каждый из которых содержит разные XML-данные. Это может помочь выявить уязвимости, при которых приложение не может различать различные поля ввода XML, что приводит к неожиданному поведению или эксплуатации.

  7. Проверка на наличие уязвимостей при включении файлов: Проверьте наличие уязвимостей при включении файлов, введя полезные нагрузки XML, которые включают ссылки на внешние файлы, такие как файлы DTD или другие ресурсы. Это может помочь выявить уязвимости, которые позволяют злоумышленнику читать или записывать файлы на сервере.

  8. Тест на атаки XXE: Проверка на наличие атак XML External Entity (XXE), которые могут использоваться для чтения файлов на сервере, извлечения конфиденциальных данных или выполнения произвольного кода. Это можно сделать путем внедрения вредоносных полезных нагрузок, содержащих внешние объекты, а затем проверки результатов, чтобы определить, была ли атака успешной.

  9. Тест на уязвимости SOAP: Если приложение использует веб-службы на основе SOAP, проверьте их на наличие уязвимостей, которые позволяют злоумышленнику внедрить вредоносный код в сообщение SOAP или изменить его содержимое.

  10. Результаты документирования: Документируйте все уязвимости или потенциальные уязвимости, которые были обнаружены во время тестирования, включая описание уязвимости, ее серьезность и любые рекомендуемые шаги по исправлению.

Контрольный список:

  1. Определите все поля ввода, которые принимают XML-данные или XML-подобные данные.

  2. Проверьте проверку входных данных, вводя полезные данные с искаженным XML, недопустимыми символами или ошибками кодирования.

  3. Проверьте загрязнение параметров HTTP, введя несколько параметров с одинаковым именем, каждый из которых содержит разные XML-данные.

  4. Проверьте наличие уязвимостей при включении файлов, введя полезные нагрузки XML, которые включают ссылки на внешние файлы, такие как файлы DTD или другие ресурсы.

  5. Проверьте наличие атак XML External Entity (XXE) путем внедрения полезных нагрузок, содержащих внешние объекты, и проверки результатов, чтобы определить, была ли атака успешной.

  6. Проверьте уязвимости SOAP, введя полезные данные в сообщения SOAP и проверив результаты, чтобы определить, была ли атака успешной.

  7. Проверьте наличие уязвимостей путем внедрения полезных нагрузок, содержащих SQL, XPath или другие языки запросов, и проверки результатов, чтобы определить, была ли атака успешной.

  8. Проверка на наличие уязвимостей типа "отказ в обслуживании" путем внедрения полезных нагрузок, предназначенных для потребления больших объемов системных ресурсов, таких как рекурсивные или глубоко вложенные полезные нагрузки XML.

  9. Проверьте фильтрацию и очистку входных данных, внедрив полезные нагрузки, содержащие HTML-теги, код JavaScript или другой вредоносный код, и проверив результаты, чтобы определить, была ли атака успешной.

  10. Проверьте сообщения об ошибках и журналы приложений на предмет информации, которая может быть использована для создания атак с использованием XML-инъекций.

  11. Убедитесь, что приложение не включает конфиденциальную информацию в свои выходные данные XML, такие как имена пользователей, пароли или другие личные данные.

  12. Убедитесь, что приложение не позволяет пользователям загружать или скачивать XML-файлы без соответствующей фильтрации и проверки.

Набор инструментов для эксплуатации Внедрение XML-кода

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

  • Burp Suite – комплексный инструмент тестирования безопасности веб-приложений, который включает в себя функции для тестирования внедрения XML. Это позволяет перехватывать и изменять XML-запросы и ответы для поиска уязвимостей.

  • OWASP ZAP – инструмент тестирования безопасности веб-приложений с открытым исходным кодом, который включает в себя набор инструментов для поиска уязвимостей при внедрении XML. Он предоставляет прокси-сервер, сканер и другие функции для тестирования веб-приложений.

  • SOAPUI – инструмент тестирования, специально разработанный для тестирования веб-сервисов, в том числе тех, которые используют XML. Он позволяет отправлять и получать XML-запросы и ответы, а также манипулировать ими для проверки на наличие уязвимостей.

  • SoapSonar – инструмент тестирования, специально разработанный для тестирования веб-сервисов на основе SOAP. Он включает в себя функции для тестирования XML-сообщений и обнаружения уязвимостей.

  • W3af – инструмент тестирования безопасности веб-приложений с открытым исходным кодом, который включает функции для обнаружения уязвимостей при внедрении XML. Он может использоваться как для ручного, так и для автоматического тестирования.

  • SoapUI Pro – коммерческая версия SoapUI, которая включает дополнительные функции для тестирования веб-сервисов, в том числе тех, которые используют XML. Он обеспечивает интуитивно понятный пользовательский интерфейс и поддержку расширенных сценариев.

  • IBM AppScan – инструмент тестирования безопасности веб-приложений, который включает в себя функции для тестирования уязвимостей при внедрении XML. Он может использоваться как для ручного, так и для автоматического тестирования.

  • Netsparker – инструмент тестирования безопасности веб-приложений, который включает в себя функции для обнаружения уязвимостей при внедрении XML. Он может использоваться как для ручного, так и для автоматического тестирования.

  • Acunetix – инструмент тестирования безопасности веб-приложений, который включает в себя функции для обнаружения уязвимостей при внедрении XML. Он может использоваться как для ручного, так и для автоматического тестирования.

  • HP WebInspect – инструмент тестирования безопасности веб-приложений, который включает в себя функции для тестирования уязвимостей при внедрении XML. Он может использоваться как для ручного, так и для автоматического тестирования.

  • SQLMap – инструмент с открытым исходным кодом, специально разработанный для обнаружения уязвимостей SQL-инъекций. Он также включает в себя функции для обнаружения уязвимостей при внедрении XML.

  • XML External Entity (XXE) Injection Tool – бесплатный онлайн-инструмент для обнаружения и тестирования уязвимостей, связанных с внедрением внешних объектов XML.

  • BeEF – платформа для работы с браузером, которая может использоваться для тестирования на различные типы уязвимостей, включая внедрение XML.

Ручные Инструменты:

  • XMLSpy – редактор XML, который включает в себя множество функций для тестирования и отладки XML. Его можно использовать для ручной проверки на наличие уязвимостей при внедрении XML.

  • XML Hammer – инструмент с открытым исходным кодом для тестирования и проверки XML-документов. Он включает в себя функции для тестирования уязвимостей при внедрении XML.

  • XML Copy Editor – редактор XML с открытым исходным кодом, который включает в себя функции для тестирования и отладки XML. Его можно использовать для ручного тестирования на наличие уязвимостей при внедрении XML.

  • Fiddler – прокси-инструмент веб-отладки, который позволяет перехватывать и изменять веб-трафик. Он включает в себя функции для тестирования уязвимостей при внедрении XML.

  • XML Entity Expander – бесплатный онлайн-инструмент, который позволяет вам разворачивать и отображать объекты в XML-документе. Его можно использовать для ручного тестирования на наличие уязвимостей при внедрении XML.

  • Xmlio – инструмент с открытым исходным кодом для тестирования и проверки XML-документов. Он включает в себя функции для тестирования уязвимостей при внедрении XML.

  • Firefox add-ons – существуют различные дополнения Firefox, которые можно использовать для тестирования внедрения XML, такие как XML Developer Toolbar и XPath Checker.

Средний балл CVSS Внедрение стекового XML-кода

Общая система оценки уязвимостей (CVSS) - это стандартная система, используемая для присвоения числовой оценки серьезности уязвимостей системы безопасности. Оценка колеблется от 0 до 10, причем 10 баллов являются самыми серьезными.

Оценка CVSS для уязвимости при внедрении XML будет зависеть от различных факторов, таких как конкретная используемая уязвимость, вектор атаки и воздействие на систему или данные. Таким образом, трудно получить среднюю оценку CVSS для внедрения stack XML, не зная более конкретных деталей.

Однако в целом уязвимости, связанные с внедрением XML, могут привести к серьезным проблемам безопасности, включая кражу данных, повышение привилегий и атаки типа "отказ в обслуживании". Эти типы уязвимостей часто могут приводить к высокому баллу CVSS, обычно в диапазоне от 7 до 10, что указывает на серьезную уязвимость.

Общее перечисление слабых мест (CWE)

• CWE-91: внедрение XML – этот CWE возникает, когда ненадежный ввод обрабатывается как XML и ввод не очищается должным образом. Злоумышленники могут использовать эту уязвимость для внедрения вредоносного контента в XML-документ, что может привести к повреждению или раскрытию конфиденциальной информации.

• CWE-611: неправильное ограничение ссылки на внешние объекты XML (XXE) – это CWE возникает, когда приложение позволяет объектам XML ссылаться на внешние ресурсы, такие как файлы или веб-службы, без надлежащей проверки или ограничений. Злоумышленники могут использовать эту уязвимость для извлечения конфиденциальных данных или выполнения вредоносного кода.

• CWE-643: неправильная нейтрализация данных в выражениях XPath – этот CWE возникает, когда приложение использует выражения XPath для обработки XML-данных без надлежащей очистки входных данных. Злоумышленники могут использовать эту уязвимость для внедрения вредоносного контента в выражение, что может привести к повреждению или раскрытию конфиденциальной информации.

• CWE-667: неправильная блокировка – эта ошибка возникает, когда несколько потоков или процессов пытаются получить доступ к одному и тому же XML-ресурсу без надлежащей блокировки или синхронизации. Это может привести к условиям гонки, повреждению данных или другим проблемам.

• CWE-668: воздействие ресурса на неправильную сферу – этот CWE возникает, когда приложение разрешает доступ к XML-ресурсу из другого домена безопасности или уровня доверия, чем предполагалось. Злоумышленники могут использовать эту уязвимость для получения несанкционированного доступа к ресурсам или повышения привилегий.

• CWE-672: операция с ресурсом в неправильной фазе жизненного цикла – этот CWE возникает, когда приложение пытается получить доступ к XML-ресурсу в неподходящее время, например, после его освобождения или до его полной инициализации. Это может привести к повреждению памяти или другим проблемам.

• CWE-674: неконтролируемая рекурсия – этот CWE возникает, когда приложение обрабатывает рекурсивные XML-данные без надлежащих ограничений или проверки. Злоумышленники могут воспользоваться этой уязвимостью, чтобы вызвать отказ в обслуживании или другие проблемы.

• CWE-675: повторяющиеся операции с ресурсом – этот CWE возникает, когда приложение выполняет повторяющиеся или избыточные операции с одним и тем же XML-ресурсом. Это может привести к повреждению данных, проблемам с производительностью или другим проблемам.

• CWE-676: использование потенциально опасной функции – этот CWE возникает, когда приложение использует функцию, которая потенциально может привести к появлению уязвимостей в системе безопасности, таких как непроверенный ввод или переполнение буфера, при обработке XML-данных.

• CWE-677: использование нереентерабельной функции в параллельном контексте – этот CWE возникает, когда приложение использует нереентерабельную функцию, которая не предназначена для обработки нескольких одновременных обращений, в контексте, где возможен параллельный доступ. Это может привести к условиям гонки, повреждению данных или другим проблемам при обработке XML-данных.

Топ-10 CVE, связанных с внедрением XML

• CVE-2023-24323 – Было обнаружено, что Mojoportal версии v2.7 содержит уязвимость для внедрения аутентифицированного XML external entity (XXE).

• CVE-2022-47514 – Уязвимость при внедрении внешнего объекта XML (XXE) в XML-RPC.NET версия 2.5.0 позволяет удаленным пользователям, прошедшим проверку подлинности, проводить атаки на подделку запросов на стороне сервера (SSRF), о чем свидетельствует POST-запрос pingback.aspx.

• CVE-2022-46464 – Было обнаружено, что ConcreteCMS v9.1.3 уязвима для атак с использованием Xpath. Эта уязвимость позволяет злоумышленникам получить доступ к конфиденциальным XML-данным с помощью созданной полезной нагрузки, введенной в папку URL path “3”.

• CVE-2022-45326 – Уязвимость внедрения XML external entity (XXE) в Kwoksys Kwok Information Server до версии v2.9.5.SP31 позволяет удаленным пользователям, прошедшим проверку подлинности, проводить атаки на подделку запросов на стороне сервера (SSRF).

• CVE-2022-43570 – В версиях Splunk Enterprise ниже 8.1.12, 8.2.9 и 9.0.2 аутентифицированный пользователь может выполнить внедрение внешнего объекта (XXE) extensible markup language (XML) с помощью пользовательского представления. Внедрение XXE приводит к тому, что Splunk Web вставляет неправильные документы в ошибку.

• CVE-2022-42307 – Была обнаружена проблема в Veritas NetBackup до версии 10.0.0.1 и связанных продуктах Veritas. Основной сервер NetBackup уязвим для атаки с внедрением XML External Entity (XXE) через службу DiscoveryService.

• CVE-2022-42301 – Была обнаружена проблема в Veritas NetBackup до версии 10.0.0.1 и связанных продуктах Veritas. Основной сервер NetBackup уязвим для атаки с внедрением XML External Entity (XXE) через процесс nbars.

• CVE-2022-40747 – “IBM InfoSphere Information Server 11.7 уязвим для атаки с использованием XML External Entity Injection (XXE) при обработке XML-данных. Удаленный злоумышленник может воспользоваться этой уязвимостью для раскрытия конфиденциальной информации или использования ресурсов памяти. Идентификатор IBM X-Force: 236584”.

• CVE-2022-40705 – ** НЕ ПОДДЕРЖИВАЕТСЯ ПРИ НАЗНАЧЕНИИ ** Уязвимость неправильного ограничения ссылки на внешнюю сущность XML в RPCRouterServlet Apache SOAP позволяет злоумышленнику читать произвольные файлы по протоколу HTTP. Эта проблема затрагивает Apache SOAP версии 2.2 и более поздних версий. Неизвестно, будут ли затронуты и предыдущие версии. ПРИМЕЧАНИЕ: Эта уязвимость затрагивает только те продукты, которые больше не поддерживаются сопровождающим.

• CVE-2022-38389 – IBM Tivoli Workload Scheduler 9.4, 9.5 и 10.1 уязвим для атаки с использованием XML External Entity Injection (XXE) при обработке XML-данных. Удаленный злоумышленник может воспользоваться этой уязвимостью для раскрытия конфиденциальной информации или использования ресурсов памяти. Идентификатор IBM X-Force: 233975.

Внедрение XML-кода подвиги

XXE Инъекция: Этот эксплойт основан на CWE-611 и включает в себя внедрение вредоносных XML-объектов в XML-документ. Затем злоумышленник может использовать эти объекты для чтения файлов, доступа к сетевым ресурсам или выполнения удаленного кода.

Внедрение XPath: Этот эксплойт основан на CWE-643 и включает внедрение вредоносного кода в выражение XPath в XML-документе. Затем злоумышленник может использовать этот код для изменения или извлечения данных из документа, что может привести к повреждению или раскрытию конфиденциальной информации.

Инъекция МЫЛА: Этот эксплойт включает внедрение вредоносного кода в сообщения SOAP, которые представляют собой сообщения на основе XML, используемые в веб-службах. Затем злоумышленник может использовать этот код для изменения или извлечения данных из сообщения, что может привести к повреждению или раскрытию конфиденциальной информации.

Инъекция SAML: Этот эксплойт включает в себя внедрение вредоносного XML-кода в сообщения SAML, которые используются для аутентификации при едином входе. Затем злоумышленник может использовать этот XML-файл для обхода аутентификации, получения доступа к защищенным ресурсам или повышения привилегий.

SVG - инъекция: Этот эксплойт включает в себя внедрение вредоносного XML в документы SVG (Scalable Vector Graphics), которые используются для веб-графики. Затем злоумышленник может использовать этот XML-файл для выполнения удаленного кода или кражи данных из браузера пользователя.

Впрыск RSS: Этот эксплойт включает в себя внедрение вредоносного XML-кода в каналы RSS (Really Simple Syndication), которые используются для синдикации новостей и контента. Затем злоумышленник может использовать этот XML-файл для выполнения удаленного кода или кражи данных из браузера пользователя.

Внедрение HTML-кода: Этот эксплойт включает в себя внедрение вредоносного XML-кода в HTML-документы, которые используются для веб-контента. Затем злоумышленник может использовать этот XML-файл для изменения внешнего вида или поведения страницы, что может привести к повреждению или краже данных.

Практикуясь в тестировании на Внедрение XML-кода

Создайте свое собственное уязвимое приложение:
Вы можете создать простое веб-приложение, уязвимое для внедрения XML, и использовать его для практического тестирования на наличие этих уязвимостей. В Интернете доступно множество ресурсов, которые могут помочь вам научиться создавать веб-приложения с уязвимостями, например проект OWASP WebGoat.

Использование уязвимого приложения:
Существует множество уязвимых приложений, доступных для скачивания, которые вы можете использовать для практического тестирования уязвимостей при внедрении XML. Некоторые примеры включают чертовски уязвимое веб-приложение (DVWA), Mutillidae и Dojo веб-безопасности.

Используйте сканер веб-приложений:
Существует множество доступных сканеров веб-приложений, которые могут автоматически проверять уязвимости при внедрении XML, таких как Burp Suite, OWASP ZAP и Acunetix. Вы можете использовать эти инструменты для сканирования собственных веб-приложений или уязвимых приложений, чтобы попрактиковаться в выявлении и использовании уязвимостей, связанных с внедрением XML.

Участвуйте в онлайн-испытаниях:
Существует множество онлайн-заданий и CTF (соревнования по захвату флага), которые включают в себя задачи по внедрению XML. Эти проблемы могут стать интересным способом попрактиковаться в тестировании на наличие уязвимостей и посоревноваться с другими, чтобы узнать, кто сможет решить их быстрее всех.

Для изучения XML-инъекции

OWASP: Проект Open Web Application Security Project (OWASP) - это некоммерческая организация, которая предоставляет ресурсы и инструменты, помогающие повысить безопасность программного обеспечения. Их веб-сайт включает в себя ряд ресурсов, связанных с внедрением XML, включая страницу, посвященную этой теме. Страница содержит информацию о том, что такое внедрение XML, как оно работает и как его предотвратить.

Веб-козел: WebGoat - это заведомо небезопасное веб-приложение, которое можно использовать для изучения безопасности веб-приложений. Приложение включает в себя ряд уроков, связанных с внедрением XML, которые могут помочь вам узнать об этой уязвимости на практике.

Онлайн-курсы: Существует множество доступных онлайн-курсов, которые помогут вам узнать о безопасности веб-приложений и внедрении XML. Некоторые примеры включают курсы, предлагаемые Udemy, Coursera и Pluralsight.

Книги: Доступно много книг на тему безопасности веб-приложений и внедрения XML. Некоторые популярные книги включают “Безопасность веб-приложений, руководство для начинающих” Брайана Салливана и Винсента Лью, “Взлом открытых веб-приложений” Джоэла Скамбрея, Майка Шемы и Калеба Сима и “Руководство хакера веб-приложений” Дэффида Штуттарда и Маркуса Пинто.

Конференции и встречи: Посещение конференций по безопасности и местных собраний может стать отличным способом узнать об уязвимостях при внедрении XML и других темах безопасности. На этих мероприятиях часто проводятся беседы и семинары по конкретным темам безопасности, включая внедрение XML.

Книги с обзором внедрения XML

“Безопасность веб-приложений: руководство для начинающих” Брайан Салливан и Винсент Лью – Эта книга представляет собой введение в безопасность веб-приложений и включает раздел о внедрении XML. Это отличная отправная точка для тех, кто впервые знаком с безопасностью веб-приложений.

“Взлом открытых веб-приложений” автор: Джоэл Скамбрей, Майк Шема и Калеб Сима – В этой книге представлен подробный обзор безопасности веб-приложений, включая внедрение XML. Это всеобъемлющий ресурс для всех, кто заинтересован в изучении безопасности веб-приложений.

“Руководство хакера веб-приложений” автор: Дафидд Штуттард и Маркус Пинто – Эта книга представляет собой всеобъемлющее руководство по тестированию безопасности веб-приложений, включая описание внедрения XML. Это важный ресурс для всех, кто интересуется безопасностью веб-приложений.

“Межсайтовые скриптовые атаки: эксплойты XSS и защита” Сет Фоги, Иеремия Гроссман и Роберт Хансен – В этой книге рассматриваются атаки с использованием межсайтовых сценариев, которые могут использоваться для использования уязвимостей, связанных с внедрением XML. Это отличный ресурс для тех, кто хочет узнать о безопасности веб-приложений в целом.

“Поваренная книга XSLT” автор: Сэл Мангано – В этой книге рассказывается об использовании XSLT, который можно использовать для преобразования XML-документов. Это ценный ресурс для тех, кто хочет узнать больше о XML и связанных с ним технологиях.

“Веб-безопасность, конфиденциальность и коммерция” Симсон Гарфинкель и Джин Спаффорд – Эта книга охватывает широкий спектр тем веб-безопасности, включая внедрение XML. Это ценный ресурс для тех, кто интересуется безопасностью веб-приложений.

“Профессиональная разработка XML с помощью инструментов Apache: Xerces, Xalan, FOP, Cocoon, Axis, Xindice” автор: Теодор У. Леунг и Скотт Ганьо – В этой книге рассказывается об использовании инструментов Apache для разработки XML. Это ценный ресурс для разработчиков, работающих с XML.

“Обработка XML с помощью Python” автор: Шон МаКграт – В этой книге рассказывается об использовании Python для обработки XML, включая описание внедрения XML. Это отличный ресурс для тех, кто интересуется как Python, так и XML.

“Справочник по XML” Чарльз Ф. Голдфарб, Пол Прескод и Стив ДеРоуз – Эта книга представляет собой всеобъемлющее руководство по XML и связанным с ним технологиям. Это ценный ресурс для тех, кто хочет узнать о XML в целом.

“Карманный справочник XML” Саймон Сен–Лоран и Майкл Фицджеральд - Эта книга представляет собой краткое справочное руководство по XML и связанным с ним технологиям. Это отличный ресурс для тех, кто ищет краткое справочное руководство по XML.

Список полезных нагрузок XML Injection

  1. <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]><foo>&xxe;</foo> Эта полезная нагрузка включает в себя DTD (определение типа документа), которое определяет внешнюю сущность с именем “xxe”. Этот объект ссылается на файл “/etc/passwd”, который может быть использован для извлечения конфиденциальной информации.

  2. <?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo> Эта полезная нагрузка аналогична первой, но она также определяет элемент “foo” как имеющий ЛЮБОЕ содержимое. Это может позволить злоумышленнику ввести в документ произвольный XML-файл.

  3. <foo><bar><![CDATA[<]]>script<![CDATA[>]]>alert('XSS')<![CDATA[<]]>/script<![CDATA[>]]></bar></foo> Эта полезная нагрузка пытается ввести тег сценария в документ, используя разделы CDATA, чтобы обойти любую кодировку или фильтрацию, которые могут быть на месте.

  4. <foo><bar>&#x3c;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3e;alert('XSS')&#x3c;/&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3e;</bar></foo> This payload is similar to the previous one but uses Unicode encoding to represent the characters “<” and “>”. This can be used to bypass some types of input validation.

  5. <foo><bar><![CDATA[<!ENTITY xxe SYSTEM "file:///etc/passwd">]]>&xxe;</bar></foo> Эта полезная нагрузка пытается определить внешнюю сущность непосредственно в элементе XML-документа. Это можно использовать для обхода фильтров, которые ищут только объекты, определенные в DTD.

Как быть защищенным от внедрения XML

  1. Проверка входных данных: Проверьте все входные данные, которые передаются в анализатор XML. Это включает в себя проверку на соответствие XML-схеме или DTD, а также проверку правильности оформления.

  2. Избегайте встроенных DTD: Избегайте использования встроенных DTD, поскольку они могут быть использованы для определения объектов, которые могут позволить злоумышленнику получить доступ к конфиденциальным данным.

  3. Отключить внешние объекты: Отключите обработку внешних объектов в анализаторе XML. Это можно сделать, установив для функции “EXTERNAL_ENTITIES” значение false.

  4. Используйте белый список: Используйте белый список разрешенных символов или шаблонов для полей ввода, чтобы предотвратить инъекционные атаки.

  5. Фильтровать вводимые пользователем данные: Filter user input to remove potentially harmful characters, such as “<” and “>”. This can be done by encoding the input before it is passed to the XML parser.

  6. Используйте выделенную библиотеку XML: Используйте специальную библиотеку XML для анализа XML-документов вместо создания пользовательских анализаторов. Эти библиотеки часто имеют встроенную защиту от распространенных атак с использованием XML-инъекций.

  7. Ограничить доступ к конфиденциальным данным: Ограничьте доступ к конфиденциальным данным и файлам, настроив соответствующие разрешения на доступ к файлам и средства контроля доступа.

Меры по смягчению последствий для внедрения XML

  1. Избегайте использования DTD: DTD (Определения типов документов) могут использоваться для определения внешних объектов, которые могут быть использованы злоумышленниками. По возможности избегайте использования DTD.

  2. Используйте проверку XML-схемы: Используйте XML-схему для проверки входных данных и предотвращения обработки вредоносного содержимого. Проверка схемы XML более безопасна, чем проверка DTD, поскольку она не уязвима для атак XXE (XML External Entity).

  3. Используйте безопасный анализатор XML: Используйте безопасный анализатор XML, разработанный с учетом соображений безопасности. Некоторые популярные безопасные анализаторы включают Xerces, XMLSec и libxml2.

  4. Отключить обработку внешних объектов: Отключите обработку внешних объектов в анализаторе XML. Это можно сделать, установив для функции “EXTERNAL_ENTITIES” значение false.

  5. Фильтровать вводимые пользователем данные: Filter user input to remove potentially harmful characters, such as “<” and “>”. This can be done by encoding the input before it is passed to the XML parser.

  6. Используйте белый список: Используйте белый список разрешенных символов или шаблонов для полей ввода, чтобы предотвратить инъекционные атаки.

  7. Ограничить доступ к конфиденциальным данным: Ограничьте доступ к конфиденциальным данным и файлам, настроив соответствующие разрешения на доступ к файлам и средства контроля доступа.

  8. Используйте шифрование: Используйте шифрование для защиты конфиденциальных данных, которые хранятся или передаются в XML-документах.

Заключение

Внедрение XML-кода это тип инъекционной атаки, нацеленной на приложения на основе XML. Это происходит, когда злоумышленник вводит вредоносные XML-данные в XML-документ, что может привести к неожиданному поведению приложения. Атаки с использованием XML-инъекций могут использоваться для извлечения конфиденциальных данных, выполнения несанкционированного кода и захвата системы.

Чтобы предотвратить атаки с внедрением XML, важно проверять все вводимые данные, избегать использования DTD, использовать безопасный анализатор XML и фильтровать вводимые пользователем данные. Также важно ограничить доступ к конфиденциальным данным и использовать шифрование для защиты данных, которые хранятся или передаются в XML-документах.

Чтобы попрактиковаться и узнать больше о внедрении XML, рекомендуется использовать тестовые среды, читать книги и статьи по этому вопросу, а также посещать онлайн-курсы и тренинги. Следуя этим рекомендациям и оставаясь в курсе последних угроз безопасности, вы можете помочь защитить свои приложения и данные от атак с внедрением XML.

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

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

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