🛠 Autoswagger: легкая проверка на доступность без авторизации
Салют,
Сталкивался пару раз с общим описанием Autoswagger by intruder.io. Решил посмотреть быстрый и легковесный инструмент.
Инструмент позволяет пробежаться по торчащим ручкам API наружу у продукта. Поэтому мне захотелось поделиться с тобой его особенностями. Тип лицензии: BSD 3-Clause License. Установка как python библиотекf, для использования в CLI.
Какой функционал может:
- Сканирует домены для обнаружения открытой документации API, где есть возможность указания отдельно OpenAPI спецификации
- Анализ спецификации и формирование списка конечных точек для тестирования. Отправляет запросы с допустимыми параметрами из документации и помечает любые конечные точки, возвращающие данные без надлежащего контроля доступа, т.е. без ошибок 401 или 403
Пример: сработал явно на вектор по 429 - Too Many Requests и позволил понять, что надо смотреть в сторону тестирования лимитов запросов (простое)
- Определяет конфиденциальные данные в ответе, как учетные данные, персональную информацию PII
- Использование флага --brute, чтобы попытаться обойти проверки, что помогает выявить уязвимости в конечных точках, которые отклоняют стандартные входные данные, но принимают определённые форматы данных, значений
Применение:
git clone git@github.com:intruder-io/autoswagger.git
pip install -r requirements.txt
python3 autoswagger.py -h
autoswagger--help
python3 autoswagger.py https://example.ru/api/users/swagger/v1/swagger.json -v -risk -all
Флаги:
autoswagger.py [-h] [-v] [-risk] [-all] [-product] [-stats] [-rate RATE] [-b] [-json] [urls ...]
-h, --help # Показать это справочное сообщение и выйти
-v, --verbose # Включить подробный вывод
-risk # Включить в тестирование запросы, отличные от GET
-all # Включить все коды состояния HTTP в результаты, исключая 401 и 403
-product # Вывести все эндпоинты в формате JSON, пометив те, что содержат PII или имеют большие ответы
-stats # Показать статистику сканирования. Включается в JSON при использовании -product или -json
-rate RATE # Установить лимит скорости в запросах в секунду
-b, --brute # Включить исчерпывающее тестирование значений параметров
-json # Вывести результаты в формате JSON в режиме по умолчанию
Сценарии:
1. Режим автообнаружения OpenAPI-спецификации
- принимает доменное имя - example.com
- выполняет сканирование целевого домена, проверяя стандартные пути к OpenAPI/ Swagger-документации типа /openapi.json, /swagger.json, /api-docs, /v3/api-docs
- если спецификация обнаружена, инструмент парсит её и извлекает все доступные эндпоинты
- для каждого эндпоинта выполняет автоматизированные запросы GET, POST, PUT, DELETE и др., если они указаны, без авторизации, анализируя ответы: статус-коды, тело ответа, headers
2. Режим работы с предоставленной спецификацией
- инструмент принимает на вход одну или несколько OpenAPI-спецификаций в формате JSON/YAML, локальные файлы или URL
- парсит каждую спецификацию, извлекая все эндпоинты и поддерживаемые HTTP-методы
- для каждого эндпоинта выполняет автоматизированные запросы без авторизации, фиксируя отклонения - ошибки 5xx, неожиданные 200/403, утечки данных и т. д.
Итого: инструмент имеет быстрый запуск и минимальные зависимости, легковесный, не требует сборки проекта, работает по исходникам, а также поверхностный как легкий старт и ты можешь с ним работать без проблем, просто прочекав начальный вектор.
#toolchain #reserch #dast
