
Piattaforma open-source di gestione e automazione del pentesting di Salesforce Product Security
Vulnreport è una piattaforma per la gestione dei penetration test e la generazione di report di findings ben formattati e utilizzabili, senza il normale overhead che occupa il tempo degli ingegneri della sicurezza. La piattaforma è costruita per supportare l'automazione in ogni fase del processo e permettere la personalizzazione per qualsiasi altro sistema tu utilizzi come parte del tuo processo di penetration testing.
Vulnreport è stato creato dal team di Product Security di Salesforce come un modo per eliminare il tempo speso a scrivere, formattare e revisionare i report per i penetration test. Il nostro obiettivo è e continua ad essere quello di costruire grandi strumenti di sicurezza che permettano ai penetration tester e agli ingegneri della sicurezza di concentrarsi sulla ricerca e la correzione delle vulnerabilità.
Vulnreport è un'applicazione web Ruby (stack Sinatra/Rack) supportata da un database PostgreSQL con un layer di cache Redis.
Vulnreport può essere installato su una VM locale o un server dietro qualcosa come nginx, oppure può essere distribuito su .
Per effettuare il deploy localmente, devi assicurarti di aver installato le dipendenze:
Clona il repo e apri il file .env, aggiornandolo secondo necessità. Esegui poi bundle install. Probabilmente vorrai modificare start.sh per farlo funzionare nel tuo ambiente – quello incluso nel repo è pensato per l'uso locale durante il debug/sviluppo.
Dovresti anche creare un file .env basato su .env.example, o impostare le stesse variabili ENV definite in .env nel tuo ambiente.
Puoi effettuare il deploy automatico su Heroku. Dopo averlo fatto, segui le istruzioni qui sotto per accedere a Vulnreport e completare la configurazione.
Per effettuare il deploy su Heroku (supponendo che tu abbia creato un'app Heroku e abbia installato il toolbelt)
git clone [URL del repo Vulnreport]
heroku git:remote -a [Nome app Heroku]
heroku addons:create heroku-postgresql:hobby-dev
heroku addons:create heroku-redis:hobby-dev
heroku addons:create rollbar:free
heroku addons:create sendgrid:starter
Dovrai quindi aprire il file .env e copiare le chiavi/valori (aggiornando i valori dove necessario) nelle impostazioni di Heroku per la tua app. Questo può essere fatto anche tramite i comandi CLI del toolbelt. Nota che le variabili ENV predefinite dopo l'esecuzione degli addon dovrebbero andare bene, ma puoi ricontrollare. Dovrai sicuramente aggiornare VR_SESSION_SECRET. Se non si tratta di un'installazione di produzione, dovresti cambiare RACK_ENV in development.
heroku config:set VR_SESSION_SECRET=abc123456
heroku config:set RACK_ENV=production
git push heroku master
Ora puoi seguire le istruzioni per l'installazione come se stessi eseguendo Vulnreport localmente.
Per gestire la configurazione iniziale di Vulnreport, esegui lo script SEED.rb. Se stai effettuando il deploy su Heroku, eseguilo tramite heroku run ./SEED.rb.
Se hai utilizzato la funzionalità automatica 'Deploy to Heroku', questo passaggio dovrebbe essere stato gestito automaticamente.
Running ./SEED.rb on ⬢ vulnreport-test... up, run.8035
Vulnreport 3.0.0.alpha seed script
WARNING: This script should be run ONCE immediately after deploying and then DELETED
Setting up Vulnreport now...
Setting up the PostgreSQL database...
Done
Seeding the database...
Done
User ID 1 created for you
ALL DONE! :)
Login to Vulnreport now and go through the rest of the settings!
Ora, elimina il file SEED.rb.
L'utente amministratore predefinito è stato creato per te con nome utente admin e password admin. Questa dovrebbe essere immediatamente ruotata e/o dovrebbe essere configurato SSO.
A questo punto dovresti andare all'URL del tuo Vulnreport (es. https://my-vr-test.herokuapp.com sopra) e accedere con l'utente creato. Esamina le impostazioni di Vulnreport e dell'utente per configurare la tua istanza di Vulnreport.
Sei pronto – per la documentazione su come utilizzare la tua nuova istanza di Vulnreport, consulta la documentazione completa su http://vulnreport.io/documentation
Vulnreport è progettato e inteso per essere utilizzato con sistemi esterni. Per maggiori informazioni su come implementare le interfacce che permettono l'integrazione/sincronizzazione con sistemi esterni, consulta la documentazione delle interfacce personalizzate su http://vulnreport.io/documentation#interfaces.
Per generare la documentazione del codice, esegui semplicemente Yard:
yard doc
yard server
Attualmente, Vulnreport supporta un formato XML per importare vulnerabilità in un Test specifico. Questo è utile se vuoi che Vulnreport sia su una rete diversa da quella in cui esegui i penetration test e quindi utilizzi un client diverso per registrare i findings mentre esegui attivamente un pentest, ma dipende dalla configurazione della tua specifica istanza di Vulnreport e della configurazione dei Vulntype.
Stiamo lavorando per supportare alcuni altri tipi di import XML (ad esempio ZAP e Burp) e per permettere l'esportazione/import XML arbitraria tra istanze di Vulnreport. Resta sintonizzato, speriamo di pubblicare presto queste funzionalità.
Il formato XML attualmente supportato da Vulnreport è:
<?xml version="1.0" encoding="UTF-8"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Vuln>
<Type>[ID Vulntype]</Type>
<File>[Dati Vulnerabilità File]</File>
<Code>
[Dati Vulnerabilità Codice]
</Code>
<File>clsSyncLog.cls</File>
<Code>
hello world
</Code>
...ecc...
</Vuln>
<Vuln>
<Type>6</Type>
<File>clsSyncLog.cls</File>
<File>CommonFunction.cls</File>
<Code>
12 Public Class CommonFunction{
</Code>
</Vuln>
</Test>
<?xml version="1.0" encoding="UTF-8"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"">
<Vuln>
<Type>OBBLIGATORIO - ESATTAMENTE 1 - INTERO - ID del VulnType. 0 = Personalizzato</Type>
<CustomTypeName>OPZIONALE - ESATTAMENTE 1 - STRINGA se TYPE == 0</CustomTypeName>
<BurpData>OPZIONALE - ILLIMITATO - STRINGA - Dati req/resp di Burp codificati nel nostro protocollo</BurpData>
<URL>OPZIONALE - ILLIMITATO - STRINGA - URL per il finding</URL>
<FileName>OPZIONALE - ILLIMITATO - STRINGA - Nome/percorso del file per il finding</FileName>
<Output>OPZIONALE - ILLIMITATO - STRINGA - Dettagli dell'output</Output>
<Code>OPZIONALE - ILLIMITATO - STRINGA - Dettagli del codice</Code>
<Notes>OPZIONALE - ILLIMITATO - STRINGA - Note per la vulnerabilità</Notes>
<Screenshot>
OPZIONALE - ILLIMITATO - Screenshot della vulnerabilità
<Filename>OBBLIGATORIO - ESATTAMENTE 1 - STRINGA - Nome file con estensione</Filename>
<ImageData>
OBBLIGATORIO - ESATTAMENTE 1 - BASE64 - Dati dello screenshot
</ImageData>
</Screenshot>
</Vuln>
....vulnerabilità illimitate....
<Vuln>
</Vuln>
</Test>