
Lo strumento one shot per attaccare le API - trova l'URL dell'API dalla root fornita e simula gli attacchi automatizzati
Un scanner di sicurezza API black-box a pipeline completa scritto in Python. Enumera gli endpoint, identifica i parametri, sonda i metodi HTTP, testa la logica di autenticazione/autorizzazione ed esegue simulazioni di attacco standard OWASP API Top 10 (BOLA, Broken Auth, BFLA, Mass Assignment, Rate Limiting, SSRF, Security Misconfiguration, ecc.), oltre a un fuzzer di affidabilità in stile RESTler che caccia crash/500 indipendentemente da qualsiasi categoria OWASP.
Tutti gli script principali sono progettati per essere stdlib-only (solo libreria standard). Se strumenti o librerie esterni non sono presenti sul sistema, apiharvester ripiega automaticamente su implementazioni in puro Python per garantire l'esecuzione out-of-the-box.
apiharvester/ — La directory principale del pacchetto python. Esegui come python3 -m apiharvester.scripts/check_requirements.sh — Verifica i prerequisiti di binari + payload.scripts/install_requirements.sh — Scarica i file payload SecLists richiesti e installa opzionalmente i binari (tramite go install e pip).apiharvester.py — Una distribuzione standalone, in singolo file, dello scanner.api_deep_discovery.py — Crawler dinamico che utilizza il codice del browser headless Katana per la scoperta dinamica di endpoint SPA/XHR.api_intelligence_engine.py — Aggregatore di pipeline e classificatore passivo di vulnerabilità.apisec.py — Versione alternativa dello scanner di sicurezza in singolo file.requirements.txt — Elenco delle dipendenze Python (principalmente per acceleratori opzionali basati su Python).payloads/ — File di wordlist e payload per la ricognizione:
params.txt — 25.889 candidati nomi di parametri per il test degli endpoint APIdirectories.txt — 62.281 pattern comuni di percorsi API e nomi di directorysubdomains.txt — 5.000 varianti di sottodominio per la scoperta di APIkiterunner/ — File di schema di route Kiterunner per l'enumerazione accelerata degli endpointVerifica i Requisiti: Esegui lo script di sola lettura per verificare se gli strumenti/payload principali sono disponibili:
./scripts/check_requirements.sh
Installa Strumenti Opzionali e File Payload: Esegui lo script di installazione per recuperare automaticamente le wordlist principali di SecLists, gli schemi di route Kiterunner e installare gli acceleratori di strumenti:
./scripts/install_requirements.sh
Installa i Pacchetti Python:
pip3 install -r requirements.txt
Esegui lo scanner direttamente contro un dominio target:
python3 -m apiharvester example.com \
--auth "Bearer eyJ..." \
--auth2 "Bearer eyJ_lowpriv..." \
--threads 20 \
--html report.html \
--json findings.jsonl
target (posizionale): Dominio FQDN da scansionare.--auth: Token di accesso ad alto privilegio per i controlli autenticati (es. sessione utente valida).--auth2: Token di accesso a basso privilegio per test BOLA / BFLA / privilege-escalation cross-account.--threads: Dimensione del threadpool (predefinito: 20).--timeout: Timeout della richiesta HTTP in secondi (predefinito: 10).--burst: Numero di richieste rapide per la verifica del rate-limiting (predefinito: 20).--json: Salva il report in formato JSONL (findings JSON delimitati da riga).--html: Salva il report della dashboard HTML interattiva.--output-dir: Sovrascrive il percorso predefinito della directory di output (es. ./scans/example.com).--skip-recon: Salta le fasi di ricognizione, usa i file di output esistenti da un'esecuzione precedente.--recon-dir: Carica la directory di output di ricognizione preesistente ed esegue solo le fasi di attacco.--attacks-only: Esegue solo le fasi di attacco (implica --skip-recon).--attacks: Elenco di attacchi separati da virgola da eseguire. Predefinito: tutti. Disponibili:
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. Testa gli endpoint con ID di oggetto tramite fuzzing degli ID (0, 1, 2, 99, "admin", "test", varianti UUID, ecc.) e token di autenticazione differenziali.broken_auth) — Scoperta di endpoint non autenticati, cracking di segreti JWT deboli, bypass alg=none, manomissione dei claim, iniezione kid, oltre a bypass dei metodi OPTIONS/HEAD.mass_assignment) — Iniezione di campi di privilege-escalation nei body PUT/PATCH (role, is_admin, verified, balance, ecc.).rate_limit) — Invia 20+ richieste rapide; segnala gli endpoint che restituiscono 200 invece di 429 Retry-After.bfla) — Broken Function-Level Authorization. Testa percorsi sensibili (/admin, /roles, /impersonate, ecc.) con e senza token a basso privilegio.business_logic) — Violazioni di workflow/state-machine (es. aggiornare un ordine dopo il pagamento).ssrf) — Testa la server-side request forgery tramite parametri URL e body delle richieste.misconfiguration) — CORS (attivo: invia Origin non attendibile), header di sicurezza mancanti, errori verbosi, leak del banner del server.inventory) — Endpoint non documentati, endpoint abbandonati, interfacce admin esposte.sspp) — Unsafe Server-Side Post Processing (template injection, XPath injection, ecc.).Attacchi Bonus:
injection) — SQL injection, XSS, command injection (error-based + time-based blind).reliability) — Fuzzing in stile RESTler: test di input al limite/malformati per trovare crash 5xx e bug di affidabilità del server (indipendente dalle categorie OWASP).secrets) — Pattern matching per credenziali leaked nei body delle risposte: AWS Access Keys, Google API Keys, Slack Tokens, Stripe Keys, GitHub Tokens, Private Key Blocks, JWT e assegnazioni generiche di segreti (api_key=..., password=..., ecc.).Scansione completa con token autenticato + a basso privilegio (ideale per 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
Ricognizione rapida (scopri endpoint, nessun attacco):
python3 -m apiharvester example.com --skip-recon --attacks ""
(O semplicemente non fornire --auth per saltare alcune fasi di attacco.)
Riesegui solo gli attacchi contro i dati di ricognizione salvati (iterazione rapida):
python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only
Esegui solo attacchi specifici (es. BOLA + Secrets):
python3 -m apiharvester example.com --attacks bola,secrets
Bypassa gli errori di certificato TLS (proxy aziendale, ambiente di staging):
# apiharvester usa un contesto TLS permissivo per impostazione predefinita — nessun flag extra necessario
# Tutti gli endpoint HTTPS funzionano anche con certificati self-signed/intercettati
python3 -m apiharvester https://staging-api.example.com