Fuzzer, Gray Hat C#, Фаззинг

#17 Gray Hat C#. Руководство для хакера по созданию и автоматизации инструментов безопасности. Фаззинг SOAP Endpoints. Парсинг WSDL.

Здравствуйте, дорогие друзья.

В качестве тестера на проникновение Вы можете столкнуться с приложениями или серверами, предлагающими программный доступ к API через конечные точки SOAP. SOAP, или простой протокол доступа к объектам, является распространенной корпоративной технологией, которая обеспечивает независимость от языка, и доступ к программным API. Вообще говоря, SOAP используется поверх протокола HTTP и использует XML для организации данных, отправляемых на сервер SOAP и обратно. Язык описания веб-служб (WSDL) описывает методы и функциональные возможности, предоставляемые через конечные точки SOAP. По умолчанию, конечные точки SOAP предоставляют XML-документы WSDL, которые клиенты могут легко анализировать, чтобы они могли взаимодействовать с конечными точками SOAP, а в C# есть несколько классов, которые делают это возможным.
Этот раздел основан на Ваших знаниях о том, как программно создавать HTTP-запросы для обнаружения уязвимостей внедрения XSS и SQL, за исключением того, что вместо этого, основное внимание уделяется SOAP XML. В этом разделе также показано, как написать небольшой фаззер для загрузки и анализа файла WSDL, предоставляемого конечной точкой SOAP, а затем использовать информацию из файла WSDL для генерации HTTP-запросов, для службы SOAP. В конечном итоге Вы сможете систематически и автоматически искать возможные уязвимости внедрения SQL в методах SOAP.


Настройка уязвимой конечной точки

В этом разделе Вы будете использовать уязвимую конечную точку, в предварительно сконфигурированном виртуальном устройстве, под названием CsharpVulnSoap (которое должно иметь расширение файла .ova), доступным на веб-сайте VulnHub (http://www.vulnhub.com/). После загрузки устройства Вы можете импортировать его в VirtualBox или Vmware, в большинстве операционных систем, дважды щелкнув файл. После установки устройства войдите в систему с помощью пароля или используйте гостевой сеанс, чтобы открыть терминал. Оттуда введите ifconfig, чтобы найти IP-адрес виртуального устройства. По умолчанию это устройство будет прослушивать интерфейс только для хоста, в отличие от предыдущих глав, где мы соединяли сетевые интерфейсы мостом. После запуска конечной точки в веб-браузере, как показано на рисунке ниже, Вы можете использовать пункты меню в левой части экрана (AddUser, ListUsers, GetUser и DeleteUser), чтобы увидеть, какие функции предоставляет SOAP. возврат конечной точки при использовании. При переходе по адресу http:///Vulnerable.asmx?WSDL Вы увидите документ WSDL, описывающий доступные функции в анализируемом XML-файле. Давайте углубимся в структуру этого документа.

The vulnerable endpoint as seen from Firefox

Парсинг WSDL

XML-документы WSDL немного сложны. Даже простой WSDL-документ, подобный тому, который мы будем анализировать, не является тривиальным. Однако, поскольку в C# имеются отличные классы для анализа и использования XML-файлов, корректный анализ WSDL и перевод его в состояние, позволяющее нам взаимодействовать с SOAP-сервисами объектно-ориентированным способом, вполне терпимы. Документ WSDL по существу — это группа XML-элементов, которые логически связаны друг с другом, снизу вверх. В нижней части документа Вы взаимодействуете с сервисом, чтобы сделать запрос к конечной точке. Из сервиса у Вас есть понятие портов. Эти порты указывают на привязку, которая, в свою очередь, указывает на тип порта. Тип порта содержит операции (или методы), доступные в этой конечной точке. Операции содержат входные и выходные данные, которые указывают на сообщение. Сообщение указывает на тип, а тип содержит параметры, необходимые для вызова метода. Рисунок ниже визуально объясняет эту концепцию.
Наш конструктор класса WSDL будет работать в обратном порядке. Сначала мы создадим конструктор, а затем создадим класс для обработки каждой части документа WSDL, от типов до сервисов.

The basic logical layout of a WSDL document

На этом все. Всем хорошего дня!

Цикл статей по Gray Hat C#. Руководство для хакера по созданию и автоматизации инструментов безопасности.