
La herramienta de ataque a API de un solo disparo: encuentra la URL de la API a partir de la raíz dada y simula los ataques automatizados
Un escáner de seguridad de API de caja negra de pipeline completo escrito en Python. Enumera endpoints, identifica parámetros, sondea métodos HTTP, prueba la lógica de autenticación/autorización y ejecuta simulaciones de ataque estándar del OWASP API Top 10 (BOLA, Broken Auth, BFLA, Mass Assignment, Rate Limiting, SSRF, Security Misconfiguration, etc.), además de un fuzzer de fiabilidad estilo RESTler que caza crashes/500s independientemente de cualquier categoría OWASP.
Todos los scripts principales están diseñados para ser stdlib-only (solo biblioteca estándar). Si las herramientas o bibliotecas externas no están presentes en el sistema, apiharvester recurre automáticamente a implementaciones en Python puro para garantizar la ejecución inmediata.
apiharvester/ — El directorio principal del paquete de Python. Se ejecuta como python3 -m apiharvester.scripts/check_requirements.sh — Verifica los requisitos previos de binarios + payloads.scripts/install_requirements.sh — Descarga los archivos de payload de SecLists requeridos e instala opcionalmente binarios (mediante go install y pip).apiharvester.py — Una distribución independiente del escáner en un solo archivo.api_deep_discovery.py — Crawler dinámico que utiliza código del navegador headless Katana para el descubrimiento dinámico de endpoints SPA/XHR.api_intelligence_engine.py — Agregador de pipeline y clasificador pasivo de vulnerabilidades.apisec.py — Versión alternativa del escáner de seguridad en un solo archivo.requirements.txt — Lista de dependencias de Python (principalmente para aceleradores opcionales basados en Python).payloads/ — Archivos de wordlist y payload para reconocimiento:
params.txt — 25,889 candidatos de nombres de parámetros para pruebas de endpoints de APIdirectories.txt — 62,281 patrones comunes de rutas de API y nombres de directoriossubdomains.txt — 5,000 variantes de subdominios para descubrimiento de APIkiterunner/ — Archivos de esquema de rutas de Kiterunner para enumeración acelerada de endpointsVerificar Requisitos: Ejecute el script de solo lectura para comprobar si las herramientas/payloads principales están disponibles:
./scripts/check_requirements.sh
Instalar Herramientas Opcionales y Archivos de Payload: Ejecute el script de instalación para obtener automáticamente las wordlists principales de SecLists, los esquemas de rutas de Kiterunner e instalar aceleradores de herramientas:
./scripts/install_requirements.sh
Instalar Paquetes de Python:
pip3 install -r requirements.txt
Ejecute el escáner directamente contra un dominio objetivo:
python3 -m apiharvester example.com \
--auth "Bearer eyJ..." \
--auth2 "Bearer eyJ_lowpriv..." \
--threads 20 \
--html report.html \
--json findings.jsonl
target (posicional): Dominio FQDN a escanear.--auth: Token de acceso con privilegios elevados para comprobaciones autenticadas (p. ej., sesión de usuario válida).--auth2: Token de acceso con privilegios bajos para pruebas de BOLA / BFLA / escalada de privilegios entre cuentas.--threads: Tamaño del pool de hilos (predeterminado: 20).--timeout: Tiempo de espera de la solicitud HTTP en segundos (predeterminado: 10).--burst: Número de solicitudes rápidas para la verificación de rate-limiting (predeterminado: 20).--json: Guardar informe en formato JSONL (hallazgos JSON delimitados por líneas).--html: Guardar informe de panel HTML interactivo.--output-dir: Anular la ruta del directorio de salida predeterminado (p. ej., ./scans/example.com).--skip-recon: Omitir las fases de reconocimiento, usar los archivos de salida existentes de una ejecución anterior.--recon-dir: Cargar el directorio de salida de reconocimiento preexistente y ejecutar solo las fases de ataque.--attacks-only: Ejecutar solo las fases de ataque (implica --skip-recon).--attacks: Lista de ataques separados por comas a ejecutar. Predeterminado: todos. Disponibles:
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) — Broken Object-Level Authorization. Prueba endpoints de ID de objeto con fuzzing de ID (0, 1, 2, 99, "admin", "test", variantes de UUID, etc.) y tokens de autenticación diferenciales.broken_auth) — Descubrimiento de endpoints no autenticados, cracking de secreto débil de JWT, bypass alg=none, manipulación de claims, inyección de kid, además de bypasses de métodos OPTIONS/HEAD.mass_assignment) — Inyección de campos de escalada de privilegios en cuerpos PUT/PATCH (role, is_admin, verified, balance, etc.).rate_limit) — Envía 20+ solicitudes rápidas; marca endpoints que devuelven 200 en lugar de 429 Retry-After.bfla) — Broken Function-Level Authorization. Prueba rutas sensibles (/admin, /roles, /impersonate, etc.) con y sin token de privilegios bajos.business_logic) — Violaciones de flujo de trabajo/máquina de estados (p. ej., actualizar un pedido después del pago).ssrf) — Prueba la falsificación de solicitudes del lado del servidor a través de parámetros de URL y cuerpos de solicitud.misconfiguration) — CORS (activo: envía Origin no confiable), encabezados de seguridad faltantes, errores detallados, fugas de banner del servidor.inventory) — Endpoints no documentados, endpoints abandonados, interfaces de administración expuestas.sspp) — Unsafe Server-Side Post Processing (inyección de plantillas, inyección de XPath, etc.).Ataques Adicionales:
injection) — Inyección SQL, XSS, inyección de comandos (basada en errores + ciega basada en tiempo).reliability) — Fuzzing estilo RESTler: pruebas de límites/entradas malformadas para encontrar crashes 5xx y errores de fiabilidad del servidor (independiente de las categorías OWASP).secrets) — Coincidencia de patrones para credenciales filtradas en cuerpos de respuesta: AWS Access Keys, Google API Keys, Slack Tokens, Stripe Keys, GitHub Tokens, Private Key Blocks, JWTs y asignaciones de secretos genéricas (api_key=..., password=..., etc.).Escaneo completo con token autenticado + de privilegios bajos (mejor para 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
Reconocimiento rápido únicamente (descubrir endpoints, sin ataques):
python3 -m apiharvester example.com --skip-recon --attacks ""
(O simplemente no proporcione --auth para omitir algunas fases de ataque.)
Re-ejecutar solo los ataques contra datos de reconocimiento guardados (iteración rápida):
python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only
Ejecutar solo ataques específicos (p. ej., BOLA + Secrets):
python3 -m apiharvester example.com --attacks bola,secrets