
Uno strumento di reporting per pentest scritto in Python. Liberati da Microsoft Word.
WriteHat è uno strumento di reporting che elimina Microsoft Word (e molte ore di sofferenza) dal processo di redazione dei report. Markdown --> HTML --> PDF. Creato da penetration tester, per penetration tester - ma può essere utilizzato per generare qualsiasi tipo di report. Scritto in Django (Python 3).

docker e docker-compose
apt, pacman, dnf, ecc.$ sudo apt install docker.io docker-compose
WriteHat può essere distribuito con un singolo comando:
$ git clone https://github.com/blacklanternsecurity/writehat && cd writehat && docker-compose up
Accedi su https://127.0.0.1 (predefinito: admin / PLEASECHANGETHISFORHEAVENSSAKE)
Installa Docker e Docker Compose
Clona il repository WriteHat in /opt
$ cd /opt
$ git clone https://github.com/blacklanternsecurity/writehat
$ cd writehat
Crea password sicure in writehat/config/writehat.conf per:
docker-compose.yml)docker-compose.yml)writehat/config/writehat.conf e docker-compose.yml: (chown root:root; chmod 600)Aggiungi il nome host desiderato a allowed_hosts in writehat/config/writehat.conf
(Opzionale) Sostituisci i certificati SSL autofirmati in nginx/:
writehat.crtwritehat.keyVerifica che tutto funzioni:
$ docker-compose up --build
Nota: Se si utilizza una VPN, è necessario disconnettersi dalla VPN la prima volta che si avviano i servizi con docker-compose. Questo per consentire a docker di creare correttamente la rete virtuale.
Installa e attiva il servizio Systemd:
Questo avvierà WriteHat automaticamente all'avvio
$ sudo cp writehat/config/writehat.service /etc/systemd/system/
$ sudo systemctl enable writehat --now
Monitora i log del servizio:
$ sudo journalctl -xefu writehat.service
Crea utenti
Vai su https://127.0.0.1/admin dopo aver effettuato l'accesso con l'utente amministratore specificato in writehat/config/writehat.conf
Nota: Ci sono alcune azioni che solo un amministratore può eseguire (ad esempio i backup del database). Un utente amministratore viene creato automaticamente dal nome utente e dalla password in writehat/config/writehat.conf, ma puoi anche promuovere un utente LDAP ad amministratore:
# Entra nel container dell'app
$ docker-compose exec writehat bash
# Promuovi l'utente ed esci
$ ./manage.py ldap_promote <ldap_username>
$ exit
Ecco le spiegazioni di base per alcuni termini di WriteHat che potrebbero non essere ovvi.
Engagement
├─ Customer
├─ Finding Group 1
│ ├─ Finding
│ └─ Finding
├─ Finding Group 2
│ ├─ Finding
│ └─ Finding
├─ Report 1
└─ Report 2
└─ Page Template
Un Engagement è il luogo in cui viene creato il contenuto per il cliente. Qui avviene il lavoro: creazione di report e inserimento dei risultati.
Un Report è una disposizione modulare e gerarchica di Componenti che può essere facilmente aggiornata tramite un'interfaccia drag-and-drop, per poi essere renderizzata in HTML o PDF. Un engagement può avere più Report. Un Page Template può essere utilizzato per personalizzare lo sfondo e il piè di pagina. Un Report può anche essere convertito in un Report Template.
Un Componente del report è una sezione o un modulo del report che può essere trascinato/rilasciato all'interno del creatore di report. Esempi includono "Pagina del titolo", "Markdown", "Risultati", ecc. Ci sono molti componenti predefiniti, ma puoi crearne di tuoi. (Sono solo HTML/CSS + Python, quindi è abbastanza facile. Vedi la guida qui sotto)
Un Report Template può essere utilizzato come punto di partenza per un Report (in un Engagement). I Report possono anche essere convertiti in Report Template.
Un Finding Group è una raccolta di risultati che vengono valutati allo stesso modo (ad esempio CVSS o DREAD). Puoi creare più gruppi di risultati per engagement (ad esempio "Risultati tecnici" e "Risultati finanziari"). Quando inserisci i risultati nel Report (tramite il Componente "Risultati", ad esempio), devi selezionare quale Finding Group vuoi popolare in quel Componente.
Un Page Template ti permette di personalizzare le immagini di sfondo e i piè di pagina del report. Puoi impostare un Page Template come predefinito e verrà applicato globalmente a meno che non venga sovrascritto a livello di Engagement o Report.
Ogni componente del report è composto da:
writehat/components/writehat/templates/componentTemplates/writehat/static/css/component/ (opzionale)Consigliamo di fare riferimento ai file esistenti in queste directory; funzionano bene come punti di partenza / esempi.
Un semplice componente personalizzato sarebbe simile a questo:
components/CustomComponent.py:from .base import *
class CustomComponentForm(ComponentForm):
summary = forms.CharField(label='Component Text', widget=forms.Textarea, max_length=50000, required=False)
field_order = ['name', 'summary', 'pageBreakBefore', 'showTitle']
class Component(BaseComponent):
default_name = 'Custom Report Component'
formClass = CustomComponentForm
# the "templatable" attribute decides whether or not that field
# gets saved if the report is ever converted into a template
fieldList = {
'summary': StringField(markdown=True, templatable=True),
}
# make sure to specify the HTML template
htmlTemplate = 'componentTemplates/CustomComponent.html'
# Font Awesome icon type + color (HTML/CSS)
# This is just eye candy in the web app
iconType = 'fas fa-stream'
iconColor = 'var(--blue)'
# the "preprocess" function is executed when the report is rendered
# use this to perform any last-minute operations on its data
def preprocess(self, context):