APIDetector è uno strumento potente ed efficiente progettato per testare gli endpoint Swagger esposti in vari sottodomini, con capacità intelligenti uniche per rilevare falsi positivi. È particolarmente utile per i professionisti della sicurezza e gli sviluppatori impegnati nel test delle API e nella scansione delle vulnerabilità.
Presentato al BlackHat Arsenal 2024 (Link)
Cronologia delle Versioni
Novità della Versione 3 (Corrente)
- Interfaccia Web Moderna: Interfaccia utente facile da usare per la scansione degli endpoint API
- Risultati in Tempo Reale: Aggiornamenti live degli endpoint scoperti e delle vulnerabilità
- Dashboard Interattiva: Interfaccia pulita e reattiva con Tailwind CSS e Alpine.js
- Supporto al Caricamento di File: Scansiona più domini/sottodomini contemporaneamente caricando un file di testo
- Validazione dei Domini: Validazione dell'input con corrispondenza di pattern regex
- Configurazione Flessibile: Modulo facile da usare per le impostazioni di scansione con valori predefiniti migliorati
- Risultati Visivi: Presentazione migliorata dei risultati di scansione e delle PoC
- Gestione degli Screenshot: Cattura e visualizza automaticamente gli screenshot degli endpoint vulnerabili (uno per sottodominio)
- Generazione PoC Mirata: Genera una prova di concetto solo per gli endpoint
/swagger-ui/index.html
- Design Responsive: Ottimizzato per tutte le dimensioni dello schermo, dal mobile al desktop
- Gestione degli Errori: Feedback e logging degli errori migliorati
- Miglioramenti all'Accessibilità: Migliore navigazione da tastiera e supporto per screen reader
Funzionalità della Versione 2
- Rilevamento Automatico XSS: Identifica le versioni vulnerabili di Swagger
- Generazione Visiva di PoC: Crea prove di concetto per le vulnerabilità
- Gestione degli Errori Migliorata: Feedback e logging migliori
- Performance Ottimizzate: Algoritmi di scansione ottimizzati
Funzionalità Principali
- Input Flessibile: Accetta singoli domini o elenchi di sottodomini
- Protocolli Multipli: Testa gli endpoint sia su HTTP che su HTTPS
- Concorrenza: Scansione multi-thread per risultati più veloci
- Rilevamento Intelligente: Capacità avanzate di rilevamento dei falsi positivi
- Impostazioni Personalizzabili: Configura thread, user-agent e altro
Requisiti
APIDetector v3 richiede Python 3.x e i seguenti pacchetti:
flask # Web framework
requests # Client HTTP
playwright # Automazione browser per screenshot
nest_asyncio # Supporto IO asincrono
Tutte le dipendenze sono elencate in requirements.txt e possono essere installate automaticamente durante la configurazione.
Configurazione Iniziale
Dopo aver installato i pacchetti richiesti, è necessario installare i browser di Playwright:
python -m playwright install
Questo è necessario affinché la funzionalità di screenshot funzioni correttamente.
Per Iniziare
Prerequisiti
- Python 3.x (Download)
- pip (Python package installer)
- Git (per clonare il repository)
Installazione
- Clona il repository:
git clone https://github.com/brinhosa/apidetector.git
cd apidetector
- Crea e attiva un ambiente virtuale:
# Su macOS/Linux:
python3 -m venv venv
source venv/bin/activate
# Su Windows:
python -m venv venv
venv\Scripts\activate
- Installa le dipendenze:
pip install -r requirements.txt
- Installa l'automazione del browser:
playwright install
Interfaccia Web (Versione 3)
- Avvia il server web:
python app.py
- Di default, il server gira su http://127.0.0.1:5000. Puoi specificare una porta o un host diverso:
python app.py --port 8080 --host 0.0.0.0
-
Apri il browser e naviga all'URL mostrato nel terminale.
-
Utilizzo dell'interfaccia web:
- Inserisci un singolo dominio o carica un file con più domini (uno per riga)
- Configura le opzioni di scansione (numero di thread, modalità mista, user agent)
- Clicca 'Avvia Scansione' per iniziare
- Visualizza i risultati in tempo reale man mano che appaiono
- Gli screenshot degli endpoint vulnerabili vengono visualizzati automaticamente
-
Gli screenshot vengono salvati nella directory screenshots per riferimento futuro.
Utilizzo
APIDetector v3 offre due modalità di interazione: una moderna interfaccia web (nuova nella v3) e una tradizionale interfaccia a riga di comando (originale).
Interfaccia Web
- Avvia il server web:
python app.py [opzioni]
Opzioni disponibili:
| Opzione | Descrizione | Predefinito |
|---|
-p, --port | Numero della porta | 5000 |
--host | Indirizzo host | 127.0.0.1 |
-d, --debug | Abilita modalità debug | False |
Esempi:
# Esecuzione con impostazioni predefinite (localhost:5000)
python app.py
# Esecuzione su porta personalizzata
python app.py -p 8080
# Consenti accesso esterno
python app.py --host 0.0.0.0
# Esecuzione in modalità debug
python app.py -d
-
Accedi all'interfaccia web:
- Apri il browser e naviga all'URL visualizzato
- Inserisci il dominio di destinazione OPPURE carica un file con più domini (uno per riga)
- Configura le opzioni di scansione:
- Modalità HTTP/HTTPS
- Numero di thread (predefinito: 10)
- User-Agent personalizzato
- Clicca "Avvia Scansione"
-
Visualizza i Risultati:
- Gli endpoint API scoperti vengono visualizzati in tempo reale con monitoraggio del progresso
- Gli endpoint vulnerabili vengono testati automaticamente
- Gli screenshot PoC vengono generati per le vulnerabilità confermate
- I risultati possono essere visualizzati mentre la scansione è ancora in corso
Interfaccia a Riga di Comando
Esegui APIDetector tramite la riga di comando. Ecco alcuni esempi di utilizzo:
-
Utilizzo comune: scansione con 30 thread di un elenco di sottodomini utilizzando un user-agent Chrome e salva i risultati in un file:
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"
-
Per scansionare un singolo dominio:
python apidetector.py -d example.com
-
Per scansionare più domini da un file:
python apidetector.py -i input_file.txt
-
Per specificare un file di output:
python apidetector.py -i input_file.txt -o output_file.txt
-
Per utilizzare un numero specifico di thread:
python apidetector.py -i input_file.txt -t 20
-
Per scansionare con entrambi i protocolli HTTP e HTTPS:
python apidetector.py -m -d example.com
-
Per eseguire lo script in modalità silenziosa (sopprime l'output verbose):
python apidetector.py -q -d example.com
-
Per eseguire lo script con un user-agent personalizzato:
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"
Se stai usando APIDetector v2, sostituisci i comandi con apidetectorv2.py.
Opzioni