
Инструмент для одноразовой атаки на API — находит URL API по заданному корню и имитирует автоматизированные атаки
Полноценный сканер безопасности API методом чёрного ящика, написанный на Python. Он перечисляет эндпоинты, выявляет параметры, проверяет HTTP-методы, тестирует логику аутентификации/авторизации и запускает стандартные симуляции атак из OWASP API Top 10 (BOLA, Broken Auth, BFLA, Mass Assignment, Rate Limiting, SSRF, Security Misconfiguration и т. д.), а также фаззер надёжности в стиле RESTler, который ищет сбои/500-е ошибки независимо от какой-либо категории OWASP.
Все основные скрипты спроектированы так, чтобы быть stdlib-only (только стандартная библиотека). Если внешние инструменты или библиотеки отсутствуют в системе, apiharvester автоматически переключается на чистые реализации на Python, чтобы гарантировать работу «из коробки».
apiharvester/ — Основной каталог python-пакета. Запуск через python3 -m apiharvester.scripts/check_requirements.sh — Проверяет наличие бинарников и полезных нагрузок.scripts/install_requirements.sh — Загружает необходимые файлы полезных нагрузок SecLists и опционально устанавливает бинарники (через go install и pip).apiharvester.py — Автономная одностраничная (single-file) сборка сканера.api_deep_discovery.py — Динамический краулер, использующий код headless-браузера Katana для динамического обнаружения эндпоинтов SPA/XHR.api_intelligence_engine.py — Агрегатор пайплайна и пассивный классификатор уязвимостей.apisec.py — Альтернативная одностраничная версия сканера безопасности.requirements.txt — Список зависимостей Python (в первую очередь для опциональных ускорителей на Python).payloads/ — Файлы словарей и полезных нагрузок для разведки:
params.txt — 25 889 кандидатов в имена параметров для тестирования эндпоинтов APIdirectories.txt — 62 281 распространённых шаблонов путей API и имён каталоговsubdomains.txt — 5 000 вариантов поддоменов для обнаружения APIkiterunner/ — Файлы схем маршрутов Kiterunner для ускоренного перечисления эндпоинтовПроверка требований: Запустите скрипт только для чтения, чтобы проверить наличие основных инструментов/полезных нагрузок:
./scripts/check_requirements.sh
Установка опциональных инструментов и файлов полезных нагрузок: Запустите скрипт установки, чтобы автоматически загрузить топовые словари SecLists, схемы маршрутов Kiterunner и установить ускорители:
./scripts/install_requirements.sh
Установка пакетов Python:
pip3 install -r requirements.txt
Запустите сканер напрямую против целевого домена:
python3 -m apiharvester example.com \
--auth "Bearer eyJ..." \
--auth2 "Bearer eyJ_lowpriv..." \
--threads 20 \
--html report.html \
--json findings.jsonl
target (позиционный): FQDN-домен для сканирования.--auth: Токен доступа с высокими привилегиями для аутентифицированных проверок (например, действительная сессия пользователя).--auth2: Токен доступа с низкими привилегиями для тестирования BOLA / BFLA / повышения привилегий между аккаунтами.--threads: Размер пула потоков (по умолчанию: 20).--timeout: Таймаут HTTP-запроса в секундах (по умолчанию: 10).--burst: Количество быстрых запросов для проверки ограничения скорости (по умолчанию: 20).--json: Сохранить отчёт в формате JSONL (находки в виде построчного JSON).--html: Сохранить интерактивный HTML-отчёт-дашборд.--output-dir: Переопределить путь к каталогу вывода по умолчанию (например, ./scans/example.com).--skip-recon: Пропустить фазы разведки, использовать существующие файлы вывода из предыдущего запуска.--recon-dir: Загрузить существующий каталог вывода разведки и запустить только фазы атак.--attacks-only: Запустить только фазы атак (подразумевает --skip-recon).--attacks: Список атак через запятую для запуска. По умолчанию: все. Доступные:
bola,broken_auth,mass_assignment,rate_limit,bfla,business_logic,
ssrf,misconfiguration,inventory,sspp,injection,reliability,secrets
OWASP API Top 10 (API1–API10:2023):
bola) — Нарушение авторизации на уровне объектов. Тестирует эндпоинты с идентификаторами объектов путём фаззинга ID (0, 1, 2, 99, "admin", "test", варианты UUID и т. д.) и дифференциальными токенами аутентификации.broken_auth) — Обнаружение неаутентифицированных эндпоинтов, взлом слабых секретов JWT, обход alg=none, подмена утверждений (claims), инъекция kid, а также обходы через методы OPTIONS/HEAD.mass_assignment) — Инъекция полей повышения привилегий в тела PUT/PATCH (role, is_admin, verified, balance и т. д.).rate_limit) — Отправляет 20+ быстрых запросов; помечает эндпоинты, возвращающие 200 вместо 429 Retry-After.bfla) — Нарушение авторизации на уровне функций. Тестирует чувствительные пути (/admin, /roles, /impersonate и т. д.) с низкопривилегированным токеном и без него.business_logic) — Нарушения рабочих процессов/машины состояний (например, обновление заказа после оплаты).ssrf) — Тестирует на подделку серверных запросов через параметры URL и тела запросов.misconfiguration) — CORS (активно: отправляет недоверенный Origin), отсутствующие заголовки безопасности, подробные ошибки, утечки баннеров сервера.inventory) — Незадокументированные эндпоинты, заброшенные эндпоинты, открытые административные интерфейсы.sspp) — Небезопасная серверная постобработка (инъекция шаблонов, инъекция XPath и т. д.).Дополнительные атаки:
injection) — SQL-инъекции, XSS, инъекции команд (на основе ошибок + слепые по времени).reliability) — Фаззинг в стиле RESTler: тестирование граничных/некорректных входных данных для поиска сбоев 5xx и ошибок надёжности сервера (независимо от категорий OWASP).secrets) — Сопоставление по шаблонам для поиска утёкших учётных данных в телах ответов: AWS Access Keys, Google API Keys, Slack Tokens, Stripe Keys, GitHub Tokens, Private Key Blocks, JWTs и обобщённые присваивания секретов (api_key=..., password=... и т. д.).Полное сканирование с аутентифицированным + низкопривилегированным токеном (лучше всего для BOLA/BFLA):
python3 -m apiharvester api.example.com \
--auth "Bearer high_priv_token_here" \
--auth2 "Bearer low_priv_token_here" \
--html report.html \
--json findings.jsonl
Быстрая разведка без атак (обнаружение эндпоинтов, без атак):
python3 -m apiharvester example.com --skip-recon --attacks ""
(Или просто не указывайте --auth, чтобы пропустить некоторые фазы атак.)
Повторный запуск только атак против сохранённых данных разведки (быстрая итерация):
python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only
Запуск только определённых атак (например, BOLA + Secrets):
python3 -m apiharvester example.com --attacks bola,secrets
Обход ошибок TLS-сертификатов (корпоративный прокси, staging-окружение):
# apiharvester использует разрешающий TLS-контекст по умолчанию — дополнительные флаги не нужны
# Все HTTPS-эндпоинты работают даже с самоподписанными/перехваченными сертификатами
python3 -m apiharvester https://staging-api.example.com