Introduzione e Caratteristiche Principali
PentesterFlow è un assistente terminale open-source per penetration testing autorizzato e bug hunting. Combina LLM locali o remoti con strumenti di sicurezza reali, mantenendo il controllo all'analista umano. L'agente pianifica, esegue, verifica, riporta e apprende, chiedendo sempre approvazione prima di azioni sensibili.
Risolve problemi concreti: flussi di lavoro specifici per dominio per ricognizione, vulnerabilità web, SSRF, SSTI, JWT, GraphQL e altro ancora; previene falsi positivi richiedendo evidenze di richiesta/risposta; supporta impegni prolungati con salvataggio della sessione, compattazione del contesto e snapshot; si integra con shell, HTTP, Burp, cattura browser e strumenti MCP; e impone la supervisione umana con richieste di permesso e una modalità YOLO esplicita per i laboratori.
Ogni comando è copiabile e incollabile, i ritrovamenti sono scritti in Markdown con prove curl e i log sono file locali deterministici, garantendo riproducibilità e verificabilità .
Installazione e Configurazione
L'installazione avviene con un singolo comando.
L'installer verifica il checksum SHA-256 pubblicato.
È necessario un backend LLM supportato; il modo più rapido per iniziare è con un modello locale tramite Ollama.
Scarica un modello capace come qwen2.5-coder:32b, quindi avvia pentesterflow.
All'interno della CLI, usa /provider per configurare il backend e /target https://app.example.com per impostare l'URL dell'engagement.
Da lì, assegna compiti di alto livello.
Per riprendere una sessione precedente, esegui pentesterflow --resume <session-id>; lo strumento mostra un riepilogo della memoria persistente in modo da poter continuare senza ricostruire il contesto.
# macOS / Linux curl -fsSL https://raw.githubusercontent.com/PentesterFlow/agent/main/install.sh | sh # Windows PowerShell irm https://raw.githubusercontent.com/PentesterFlow/agent/main/install.ps1 | iex # Pin a specific version and install directory PENTESTERFLOW_VERSION=v0.1.6 PENTESTERFLOW_INSTALL_DIR="$HOME/.local/bin" \ sh -c "$(curl -fsSL https://raw.githubusercontent.com/PentesterFlow/agent/main/install.sh)"
Utilizzo Pratico
Un engagement tipico inizia impostando un target e assegnando un compito.
Ad esempio, testando un'API orders per broken access control: l'agente carica la skill webvuln, invia una richiesta HTTP GET all'endpoint, verifica l'accesso cross-account con un comando BashTool e salva un ritrovamento confermato con le evidenze.
Il file del ritrovamento include un comando curl copiabile e il materiale grezzo della richiesta.
Puoi scegliere il backend LLM e il modello in modo interattivo con /provider e /model list, oppure tramite opzioni da riga di comando.
I backend supportati includono Ollama, LM Studio, endpoint compatibili con OpenAI, Kimi, Groq e Gemini.
Le chiavi API sono impostate tramite variabili d'ambiente come MOONSHOT_API_KEY, GROQ_API_KEY, o GEMINI_API_KEY.
# Ollama pentesterflow --backend ollama --model qwen2.5-coder:32b # LM Studio pentesterflow --backend lmstudio --model zai-org/glm-4.7-flash # OpenAI-compatible endpoint pentesterflow --backend openai-compat \ --base-url https://api.example.com/v1 \ --api-key sk-... # Kimi (requires API key) MOONSHOT_API_KEY=sk-... pentesterflow --backend kimi --model kimi-k2.6 # Groq GROQ_API_KEY=gsk_... pentesterflow --backend groq --model openai/gpt-oss-20b # Gemini GEMINI_API_KEY=AIza... pentesterflow --backend gemini --model models/gemini-3.5-flash
Comandi Slash e Integrazione con Burp
I comandi slash principali controllano la sessione: /provider e /model gestiscono il LLM; /target imposta l'URL dell'engagement; /plan esegue un turno di sola pianificazione; /next suggerisce aree non testate; /compact riassume il contesto nella memoria persistente; /snapshot scrive uno snapshot del contesto oscurato; /skills gestisce i playbook delle skill; /yolo attiva/disattiva l'auto-approvazione per i laboratori; /update recupera l'ultima release; /reset cancella la sessione; /<skill-name> carica una skill.
Per la collaborazione con Burp Suite, avvia il bridge con pentesterflow --burp [porta].
Puoi inviare richieste Burp selezionate a PentesterFlow per l'analisi, accodare richieste come attività di scansione e importare ritrovamenti confermati direttamente tra gli issue di Burp.
Il bridge preserva le richieste grezze per evidenza e riesecuzione.
Configurazione e Archiviazione dei Dati
La configurazione principale risiede in ~/.pentesterflow/config.json e memorizza impostazioni di backend, modello, endpoint e skill disabilitate.
Le variabili d'ambiente impostano le chiavi API per Kimi (MOONSHOT_API_KEY), Groq (GROQ_API_KEY) e Gemini (GEMINI_API_KEY).
Il logging di debug si attiva con PENTESTERFLOW_DEBUG_SESSION=1.
Opzioni da riga di comando importanti: --backend, --model, --base-url, --api-key, --resume <id>, --burp [porta], --debug-session, --list-tools, --list-skills, --no-stream, --dangerously-skip-permissions.
I dati sono archiviati in diverse posizioni:
~/.pentesterflow/sessions/*.json– sessioni salvate~/.pentesterflow/context/*.md– snapshot oscurati./.pentesterflow/intelligence/scenarios.jsonl– intelligence di progetto~/.pentesterflow/builtin-skills/– skill integrate./findings/<slug>.md– ritrovamenti confermati~/.pentesterflow/logs/pentesterflow.log– log strutturati~/.pentesterflow/debug/session-*.jsonl– log di debug completi (sensibili)
Constraints, Best Practices, and Procedures
Vincoli: PentesterFlow deve essere utilizzato solo su sistemi con autorizzazione esplicita.
Per impostazione predefinita, le azioni sensibili richiedono approvazione; la modalità YOLO (/yolo on) approva automaticamente tutto ed è destinata esclusivamente ai laboratori.
Esiste una sintonizzazione specifica per il provider: Groq utilizza un prompt compatto, LM Studio taglia gli indicatori del template.
I comandi shell catastrofici sono bloccati.
Non è presente un'interfaccia grafica.
I log di debug contengono dati grezzi del target e devono essere gestiti come confidenziali.
Best practices: Confermare sempre l'autorizzazione.
Utilizzare confirm_finding solo dopo aver riprodotto il problema con una richiesta deterministica e la risposta osservata.
Sfruttare il tracciamento della copertura e chiedere /next per identificare le aree non testate.
Inserire le competenze specifiche del progetto in ./.pentesterflow/skills/ e quelle personali riutilizzabili in ~/.pentesterflow/skills/.
Compattare le sessioni lunghe con /compact.
Abilitare il logging di debug per la risoluzione dei problemi, ma trattare l'output come sensibile.
Aggiornare dall'interno dello strumento con /update.
Procedure degne di nota: Per installare una versione specifica, impostare le variabili d'ambiente PENTESTERFLOW_VERSION e PENTESTERFLOW_INSTALL_DIR prima di eseguire il programma di installazione.
Per aggiornare dalla CLI, eseguire /update o /update v0.1.6.
Per la collaborazione con Burp, avviare PentesterFlow con --burp 9999 e inviare le richieste da Burp.





