
Многопоточный сканер для обнаружения открытых конечных точек Swagger/OpenAPI на веб-доменах и поддоменах с автоматическим обнаружением XSS, генерацией PoC и фильтрацией ложных срабатываний для оценки безопасности API.
Представлено на BlackHat Arsenal 2024 (Ссылка)
/swagger-ui/index.htmlAPIDetector v3 требует Python 3.x и следующие пакеты:
flask # Веб-фреймворк
requests # HTTP-клиент
playwright # Автоматизация браузера для скриншотов
nest_asyncio # Поддержка асинхронного ввода-вывода
Все зависимости перечислены в requirements.txt и могут быть установлены автоматически во время настройки.
После установки необходимых пакетов необходимо установить браузеры Playwright:
python -m playwright install
Это требуется для корректной работы функции создания скриншотов.
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
python app.py
python app.py --port 8080 --host 0.0.0.0
Откройте браузер и перейдите по URL, отображаемому в терминале.
Использование веб-интерфейса:
Скриншоты сохраняются в каталоге screenshots для дальнейшего использования.
APIDetector v3 предлагает два способа взаимодействия с инструментом: современный веб-интерфейс (новинка v3) и традиционный интерфейс командной строки (оригинальный).
python app.py [options]
Доступные опции:
Примеры:
# Запуск с настройками по умолчанию (localhost:5000)
python app.py
# Запуск на пользовательском порту
python app.py -p 8080
# Разрешить внешний доступ
python app.py --host 0.0.0.0
# Запуск в режиме отладки
python app.py -d
Доступ к веб-интерфейсу:
Просмотр результатов:
Запустите 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
Если вы используете APIDetector v2, замените команды на apidetectorv2.py.
-d, --domain: Одиночный домен для тестирования.-i, --input: Входной файл, содержащий поддомены для тестирования.-o, --output: Выходной файл для записи валидных URL.-t, --threads: Количество потоков для сканирования (по умолчанию 10).-m, --mixed-mode: Тестирование протоколов HTTP и HTTPS.-q, --quiet: Отключить подробный вывод (по умолчанию режим подробный).-ua, --user-agent: Пользовательская строка User-Agent для запросов.Раскрытие конечных точек документации Swagger или OpenAPI может представлять различные риски, в основном связанные с раскрытием информации. Ниже приведен упорядоченный список на основе уровней потенциального риска, сгруппированных по схожим конечным точкам, которые сканирует APIDetector:
'/swagger-ui.html', '/swagger-ui/', '/swagger-ui/index.html', '/api/swagger-ui.html', '/documentation/swagger-ui.html', '/swagger/index.html', '/api/docs', '/docs', '/api/swagger-ui', '/documentation/swagger-ui''/openapi.json', '/swagger.json', '/api/swagger.json', '/swagger.yaml', '/swagger.yml', '/api/swagger.yaml', '/api/swagger.yml', '/api.json', '/api.yaml', '/api.yml', '/documentation/swagger.json', '/documentation/swagger.yaml', '/documentation/swagger.yml''/v2/api-docs', '/v3/api-docs', '/api/v2/swagger.json', '/api/v3/swagger.json', '/api/v1/documentation', '/api/v2/documentation', '/api/v3/documentation', '/api/v1/api-docs', '/api/v2/api-docs', '/api/v3/api-docs', '/swagger/v2/api-docs', '/swagger/v3/api-docs', '/swagger-ui.html/v2/api-docs', '/swagger-ui.html/v3/api-docs', , '/swagger-resources', '/swagger-resources/configuration/ui', '/swagger-resources/configuration/security', '/api/swagger-resources', '/api.html'Вклады в APIDetector приветствуются! Смело форкайте репозиторий, вносите изменения и отправляйте pull-запросы. Особая благодарность участникам, которые помогли с тестированием и предложениями функций:
Инструмент APIDetector предназначен строго для тестирования и образовательных целей. Разработчики APIDetector не несут ответственности и отказываются от любой ответственности за любое неправильное использование, непредвиденные последствия или ущерб, причиненный использованием этого инструмента. Любое несанкционированное, незаконное или иное вредоносное использование APIDetector строго запрещено. Конечный пользователь несет полную ответственность за соблюдение всех соответствующих местных, государственных, федеральных и международных законов. Используя этот инструмент, пользователь подтверждает, что у него есть необходимые разрешения для тестирования сетей или систем, которые он намеревается сканировать, и соглашается возместить ущерб разработчикам от любых и всех претензий, возникающих в результате его использования. Конечный пользователь несет единоличную ответственность за обеспечение того, чтобы его использование этого инструмента не нарушало никакие правовые ограничения или условия обслуживания, регулирующие сети или системы, проходящие тестирование.
Отказ от ответственности: Использование инструмента APIDetector Инструмент APIDetector разработан исключительно для законного тестирования и образовательных целей. Он предоставляется на условиях «как есть» без каких-либо гарантий, явных или подразумеваемых. Разработчики и дистрибьюторы APIDetector явно отказываются от любой ответственности за неправильное использование, непредвиденные последствия или ущерб, возникшие в результате использования этого инструмента. Важное юридическое уведомление: Несанкционированное, незаконное или неэтичное использование APIDetector строго запрещено. Пользователи несут единоличную ответственность за соблюдение всех применимых местных, государственных, федеральных и международных законов, а также любых условий обслуживания, регулирующих сети или системы, с которыми они взаимодействуют. Используя APIDetector, пользователи подтверждают, что у них есть необходимые полномочия для тестирования целевых сетей или систем. Принятие риска и возмещение убытков: Загружая, устанавливая или используя APIDetector, пользователь принимает на себя полную ответственность за любые юридические последствия, связанные с его использованием. Разработчики и дистрибьюторы APIDetector не несут ответственности за любые юридические последствия, ущерб или претензии третьих лиц, возникающие в результате его использования. Пользователи соглашаются возмещать убытки и защищать разработчиков и дистрибьюторов от любых претензий, судебных издержек или обязательств, связанных с их действиями.
Этот проект лицензирован в соответствии с лицензией MIT.
| Опция | Описание | По умолчанию |
|---|
-p, --port | Номер порта | 5000 |
--host | Адрес хоста | 127.0.0.1 |
-d, --debug | Включить режим отладки | False |
Для запуска скрипта с пользовательским 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"
'/api/swagger/v2/api-docs''/api/swagger/v3/api-docs'