APIDetector — это мощный и эффективный инструмент, предназначенный для проверки открытых конечных точек Swagger в различных поддоменах с уникальными интеллектуальными возможностями для обнаружения ложных срабатываний. Он особенно полезен для специалистов по безопасности и разработчиков, занимающихся тестированием API и сканированием уязвимостей.
Представлено на BlackHat Arsenal 2024 (Ссылка)
История версий
Новое в версии 3 (текущая)
- Современный веб-интерфейс: Удобный интерфейс для простого сканирования конечных точек API
- Результаты в реальном времени: Живые обновления обнаруженных конечных точек и уязвимостей
- Интерактивная панель управления: Чистый и адаптивный интерфейс с использованием Tailwind CSS и Alpine.js
- Поддержка загрузки файлов: Сканирование нескольких доменов/поддоменов одновременно путем загрузки текстового файла
- Проверка доменов: Валидация ввода с помощью сопоставления регулярных выражений
- Гибкая конфигурация: Простая в использовании форма для настроек сканирования с улучшенными значениями по умолчанию
- Визуальные результаты: Улучшенное представление результатов сканирования и PoC
- Управление скриншотами: Автоматический захват и отображение скриншотов уязвимых конечных точек (по одному на поддомен)
- Целевая генерация PoC: Генерация доказательства уязвимости только для конечных точек
/swagger-ui/index.html
- Адаптивный дизайн: Оптимизирован для всех размеров экрана от мобильных устройств до настольных компьютеров
- Обработка ошибок: Улучшенная обратная связь и логирование ошибок
- Улучшения доступности: Улучшенная навигация с клавиатуры и поддержка программ чтения с экрана
Функции версии 2
- Автоматическое обнаружение XSS: Выявляет уязвимые версии Swagger
- Визуальная генерация PoC: Создает доказательства концепции для уязвимостей
- Улучшенная обработка ошибок: Лучшая обратная связь и логирование
- Улучшенная производительность: Оптимизированные алгоритмы сканирования
Основные функции
- Гибкий ввод: Принимает одиночные домены или списки поддоменов
- Несколько протоколов: Тестирование конечных точек через HTTP и HTTPS
- Параллельность: Многопоточное сканирование для более быстрых результатов
- Умное обнаружение: Расширенные возможности обнаружения ложных срабатываний
- Настраиваемые параметры: Конфигурация потоков, user-agent и многое другое
Требования
APIDetector v3 требует Python 3.x и следующие пакеты:
flask # Веб-фреймворк
requests # HTTP-клиент
playwright # Автоматизация браузера для скриншотов
nest_asyncio # Поддержка асинхронного ввода-вывода
Все зависимости перечислены в requirements.txt и могут быть установлены автоматически во время настройки.
Первоначальная настройка
После установки необходимых пакетов необходимо установить браузеры Playwright:
python -m playwright install
Это требуется для корректной работы функции создания скриншотов.
Начало работы
Предварительные требования
- Python 3.x (Скачать)
- pip (установщик пакетов Python)
- Git (для клонирования репозитория)
Установка
- Клонируйте репозиторий:
git clone https://github.com/brinhosa/apidetector.git
cd apidetector
- Создайте и активируйте виртуальное окружение:
# На macOS/Linux:
python3 -m venv venv
source venv/bin/activate
# На Windows:
python -m venv venv
venv\Scripts\activate
- Установите зависимости:
pip install -r requirements.txt
- Установите автоматизацию браузера:
playwright install
Веб-интерфейс (версия 3)
- Запустите веб-сервер:
python app.py
- По умолчанию сервер запускается на http://127.0.0.1:5000. Вы можете указать другой порт или хост:
python app.py --port 8080 --host 0.0.0.0
-
Откройте браузер и перейдите по URL, отображаемому в терминале.
-
Использование веб-интерфейса:
- Введите один домен или загрузите файл с несколькими доменами (по одному на строку)
- Настройте параметры сканирования (количество потоков, смешанный режим, user-agent)
- Нажмите «Start Scan», чтобы начать
- Просматривайте результаты в реальном времени по мере их появления
- Скриншоты уязвимых конечных точек будут отображаться автоматически
-
Скриншоты сохраняются в каталоге screenshots для дальнейшего использования.
Использование
APIDetector v3 предлагает два способа взаимодействия с инструментом: современный веб-интерфейс (новинка v3) и традиционный интерфейс командной строки (оригинальный).
Веб-интерфейс
- Запустите веб-сервер:
python app.py [options]
Доступные опции:
| Опция | Описание | По умолчанию |
|---|
-p, --port | Номер порта | 5000 |
--host | Адрес хоста | 127.0.0.1 |
-d, --debug | Включить режим отладки | False |
Примеры:
# Запуск с настройками по умолчанию (localhost:5000)
python app.py
# Запуск на пользовательском порту
python app.py -p 8080
# Разрешить внешний доступ
python app.py --host 0.0.0.0
# Запуск в режиме отладки
python app.py -d
-
Доступ к веб-интерфейсу:
- Откройте браузер и перейдите по отображаемому URL
- Введите целевой домен ИЛИ загрузите файл с несколькими доменами (по одному на строку)
- Настройте параметры сканирования:
- Режим HTTP/HTTPS
- Количество потоков (по умолчанию: 10)
- Пользовательский User-Agent
- Нажмите «Start Scan»
-
Просмотр результатов:
- Обнаруженные конечные точки API отображаются в реальном времени с отслеживанием прогресса
- Уязвимые конечные точки автоматически тестируются
- Скриншоты PoC генерируются для подтвержденных уязвимостей
- Результаты можно просматривать, пока сканирование еще выполняется
Интерфейс командной строки
Запустите APIDetector через командную строку. Вот несколько примеров использования:
-
Обычное использование, сканирование списка поддоменов с 30 потоками, используя user-agent Chrome, и сохранение результатов в файл:
python apidetector.py -i list_of_company_subdomains.txt -o results_file.txt -t 30 -ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
-
Для сканирования одного домена:
python apidetector.py -d example.com
-
Для сканирования нескольких доменов из файла:
python apidetector.py -i input_file.txt
-
Для указания выходного файла:
python apidetector.py -i input_file.txt -o output_file.txt
-
Для использования определенного количества потоков:
python apidetector.py -i input_file.txt -t 20
-
Для сканирования с использованием протоколов HTTP и HTTPS:
python apidetector.py -m -d example.com
-
Для запуска скрипта в тихом режиме (подавление подробного вывода):
python apidetector.py -q -d example.com
-
Для запуска скрипта с пользовательским user-agent:
python apidetector.py -d example.com -ua "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
Если вы используете APIDetector v2, замените команды на apidetectorv2.py.
Опции