Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
writehat — Ein Pentest-Berichtstool, geschrieben in Python. Befreien Sie sich von Microsoft Word. | Kitploit
Tools/GitHubGitHub/blacklanternsecurity/writehat
PenetrationstestsDienstprogramme & FrameworksLernen & Bildung
GitHubblacklanternsecurity/writehat

writehat

Ein Pentest-Berichtstool, geschrieben in Python. Befreien Sie sich von Microsoft Word.

Repository anzeigen
1.5k2533vor 5 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

WriteHat WriteHat ist ein Berichtswerkzeug, das Microsoft Word (und viele Stunden Leid) aus dem Berichterstellungsprozess entfernt. Markdown --> HTML --> PDF. Entwickelt von Penetrationstestern, für Penetrationstester – kann aber zur Erstellung jeder Art von Bericht verwendet werden. Geschrieben in Django (Python 3).

Funktionen:

  • Mühelos schöne Pentest-Berichte erstellen
  • Drag-and-Drop-Berichtsersteller in Echtzeit
  • Markdown-Unterstützung – inklusive Codeblöcke, Tabellen, etc.
  • Bilder zuschneiden, annotieren, beschriften und hochladen
  • Anpassbarer Berichtshintergrund / Fußzeile
  • Bearbeiter zuweisen und Status für einzelne Berichtsabschnitte verfolgen
  • Möglichkeit, Berichte zu klonen und als Vorlagen zu verwenden
  • Ergebnisdatenbank
  • Unterstützt mehrere Bewertungstypen (CVSS 3.1, DREAD)
  • Kann einfach mehrere Berichte aus demselben Satz von Ergebnissen erstellen
  • Erweiterbares Design ermöglicht Power-Usern die Erstellung hochgradig angepasster Berichtsabschnitte
  • LDAP-Integration

writehat_report

Installationsvoraussetzungen:

  • Installieren Sie docker und
docker-compose
  • Diese können in der Regel mit apt, pacman, dnf, usw. installiert werden.
root@kitploit:~
$ sudo apt install docker.io docker-compose

WriteHat bereitstellen (Der schnelle und einfache Weg, zum Testen):

WriteHat kann mit einem einzigen Befehl bereitgestellt werden:

root@kitploit:~
$ git clone https://github.com/blacklanternsecurity/writehat && cd writehat && docker-compose up

Melden Sie sich unter https://127.0.0.1 an (Standard: admin / PLEASECHANGETHISFORHEAVENSSAKE)

WriteHat bereitstellen (Der richtige Weg):

  1. Installieren Sie Docker und Docker Compose

  2. Klonen Sie das WriteHat-Repository nach /opt

    root@kitploit:~
    $ cd /opt
    $ git clone https://github.com/blacklanternsecurity/writehat
    $ cd writehat
    
  3. Erstellen Sie sichere Passwörter in writehat/config/writehat.conf für:

    • MongoDB (auch in docker-compose.yml eintragen)
    • MySQL (auch in docker-compose.yml eintragen)
    • Django (wird zum Verschlüsseln von Cookies usw. verwendet)
    • Admin-Benutzer Hinweis: Außer den Passwörtern muss bei Verwendung der Standardkonfiguration nichts weiter geändert werden. Hinweis: Vergessen Sie nicht, die Berechtigungen für writehat/config/writehat.conf und docker-compose.yml einzuschränken: (chown root:root; chmod 600)
  4. Fügen Sie Ihren gewünschten Hostnamen zu allowed_hosts in writehat/config/writehat.conf hinzu

  5. (Optional) Ersetzen Sie die selbstsignierten SSL-Zertifikate in nginx/:

    • writehat.crt
    • writehat.key
  6. Testen Sie, ob alles funktioniert:

    root@kitploit:~
    $ docker-compose up --build
    

    Hinweis: Wenn Sie ein VPN verwenden, müssen Sie beim ersten Start der Dienste mit docker-compose vom VPN getrennt sein. Dies ist notwendig, damit Docker das virtuelle Netzwerk erfolgreich erstellen kann.

  7. Installieren und aktivieren Sie den Systemd-Dienst:

    Dadurch wird WriteHat automatisch beim Booten gestartet.

    root@kitploit:~
    $ sudo cp writehat/config/writehat.service /etc/systemd/system/
    $ sudo systemctl enable writehat --now
    
  8. Verfolgen Sie die Dienstprotokolle:

    root@kitploit:~
    $ sudo journalctl -xefu writehat.service
    
  9. Benutzer erstellen

    Navigieren Sie nach dem Einloggen mit dem in writehat/config/writehat.conf angegebenen Admin-Benutzer zu https://127.0.0.1/admin. Hinweis: Es gibt einige Aktionen, die nur ein Administrator ausführen kann (z. B. Datenbanksicherungen). Ein Admin-Benutzer wird automatisch aus dem Benutzernamen und Passwort in writehat/config/writehat.conf erstellt, aber Sie können auch einen LDAP-Benutzer zum Admin befördern:

    root@kitploit:~
    # In den App-Container einsteigen
    $ docker-compose exec writehat bash
    
    # Benutzer befördern und beenden
    $ ./manage.py ldap_promote <ldap_username>
    $ exit
    

Terminologie

Hier sind grundlegende Erklärungen für einige WriteHat-Begriffe, die möglicherweise nicht offensichtlich sind.

root@kitploit:~
Engagement
 ├─ Kunde
 ├─ Ergebnisgruppe 1
 │   ├─ Ergebnis
 │   └─ Ergebnis
 ├─ Ergebnisgruppe 2
 │   ├─ Ergebnis
 │   └─ Ergebnis
 ├─ Bericht 1
 └─ Bericht 2
     └─ Seitenvorlage

Engagement

Ein Engagement ist der Ort, an dem Inhalte für den Kunden erstellt werden. Hier findet die Arbeit statt – Berichte erstellen und Ergebnisse erfassen.

Bericht

Ein Bericht ist eine modulare, hierarchische Anordnung von Komponenten, die über eine Drag-and-Drop-Oberfläche einfach aktualisiert und dann in HTML oder PDF gerendert werden kann. Ein Engagement kann mehrere Berichte haben. Eine Seitenvorlage kann verwendet werden, um Hintergrund und Fußzeile anzupassen. Ein Bericht kann auch in eine Berichtsvorlage umgewandelt werden.

Berichtskomponente

Eine Berichts-Komponente ist ein Abschnitt oder Modul des Berichts, der im Berichtsersteller per Drag & Drop an die gewünschte Stelle verschoben werden kann. Beispiele sind „Titelseite“, „Markdown“, „Ergebnisse“ usw. Es gibt viele integrierte Komponenten, aber Sie können auch eigene erstellen. (Es sind nur HTML/CSS + Python, also recht einfach. Siehe die Anleitung unten)

Berichtsvorlage

Eine Berichtsvorlage kann als Ausgangspunkt für einen Bericht (in einem Engagement) verwendet werden. Berichte können auch in Berichtsvorlagen umgewandelt werden.

Ergebnisgruppe

Eine Ergebnisgruppe ist eine Sammlung von Ergebnissen, die auf die gleiche Weise bewertet werden (z. B. CVSS oder DREAD). Sie können mehrere Ergebnisgruppen pro Engagement erstellen (z. B. „Technische Ergebnisse“ und „Finanzergebnisse“). Beim Einfügen der Ergebnisse in den Bericht (z. B. über die Komponente „Ergebnisse“) müssen Sie auswählen, welche Ergebnisgruppe diese Komponente füllen soll.

Seitenvorlage

Eine Seitenvorlage ermöglicht es Ihnen, Berichtshintergrundbilder und Fußzeilen anzupassen. Sie können eine Seitenvorlage als Standard festlegen, die dann global angewendet wird, es sei denn, sie wird auf Engagement- oder Berichtsebene überschrieben.

Eigene Berichtskomponenten schreiben

report_creation Jede Berichtskomponente besteht aus folgenden Teilen:

  1. Eine Python-Datei in writehat/components/
  2. Eine HTML-Vorlage in writehat/templates/componentTemplates/
  3. Eine CSS-Datei in writehat/static/css/component/ (optional)

Wir empfehlen, die vorhandenen Dateien in diesen Verzeichnissen als Referenz zu verwenden; sie eignen sich gut als Ausgangspunkte/Beispiele.

Eine einfache benutzerdefinierte Komponente würde so aussehen:

components/CustomComponent.py:

root@kitploit:~
from .base import *

class CustomComponentForm(ComponentForm):

    summary = forms.CharField(label='Komponententext', widget=forms.Textarea, max_length=50000, required=False)
    field_order = ['name', 'summary', 'pageBreakBefore', 'showTitle']


class Component(BaseComponent):

    default_name = 'Benutzerdefinierte Berichtskomponente'
    formClass = CustomComponentForm

    # Das Attribut "templatable" entscheidet, ob dieses Feld
    # gespeichert wird, wenn der Bericht jemals in eine Vorlage umgewandelt wird.
    fieldList = {
        'summary': StringField(markdown=True, templatable=True),
    }

    # Stellen Sie sicher, dass die HTML-Vorlage angegeben wird.
    htmlTemplate = 'componentTemplates/CustomComponent.html'

    # Font Awesome-Symboltyp + Farbe (HTML/CSS)
    # Dies dient nur der Optik in der Web-App.
    iconType = 'fas fa-stream'
    iconColor = 'var(--blue)'

    # Die Funktion "preprocess" wird beim Rendern des Berichts ausgeführt.
    # Verwenden Sie diese, um letzte Operationen an den Daten durchzuführen.
    def preprocess(self, context):

        # Beispiel: Das gesamte "summary"-Feld in Großbuchstaben umwandeln:
        #   context['summary'] = context['summary'].upper()
        return context

Beachten Sie, dass Felder denselben Namen in der Komponentenklasse und im zugehörigen Formular haben müssen. Alle Komponenten müssen entweder von BaseComponent oder einer anderen Komponente erben. Zusätzlich verfügt jede Komponente über integrierte Felder für name, pageBreakBefore (ob auf einer neuen Seite begonnen werden soll) und showTitle (ob das name-Feld als Überschrift angezeigt werden soll). Daher ist es nicht notwendig, diese hinzuzufügen.

componentTemplates/CustomComponent.html:

Felder aus dem Python-Modul werden automatisch zum Vorlagenkontext hinzugefügt. In diesem Beispiel möchten wir das summary-Feld als Markdown rendern, daher fügen wir das markdown-Tag davor ein. Beachten Sie, dass Sie auch auf Variablen auf Engagement- und Berichtsebene zugreifen können, wie z.B. report.name, report.findings, engagement.customer.name usw.

root@kitploit:~
{% load custom_tags %}
<section class="l{{ level }} component{% if pageBreakBefore %} page-break{% endif %}" id="container_{{ id }}">
  {% include 'componentTemplates/Heading.html' %}
  <div class='markdown-align-justify custom-component-summary'>
    <p>
      {% markdown summary %}
    </p>
  </div>
</section>

componentTemplates/CustomComponent.css (optional):

Der Dateiname muss mit dem der Python-Datei übereinstimmen (jedoch mit der Erweiterung .css statt .py). Sie wird automatisch geladen, wenn der Bericht gerendert wird.

root@kitploit:~
div.custom-component-summary {
    font-weight: bold;
}

Sobald die obigen Dateien erstellt sind, starten Sie einfach die Web-App neu und die neue Komponente wird automatisch angezeigt.

root@kitploit:~
$ docker-compose restart writehat

Manuelles DB-Update/Migration

Wenn ein Update veröffentlicht wird, das das DB-Schema ändert, werden Django-Datenbankmigrationen automatisch beim Neustart des Containers ausgeführt. Manchmal kann jedoch eine Benutzerinteraktion erforderlich sein. So wenden Sie Django-Migrationen manuell an:

  1. Stoppen Sie WriteHat (systemctl stop writehat)
  2. Wechseln Sie in das WriteHat-Verzeichnis (/opt/writehat)
  3. Starten Sie den Docker-Container
root@kitploit:~
$ docker-compose run writehat bash
  1. Führen Sie die Migrationen wie gewohnt im Container aus:
root@kitploit:~
$ ./manage.py makemigrations
$ ./manage.py migrate
$ exit
  1. Fahren Sie die Docker-Container herunter und starten Sie den Dienst neu
root@kitploit:~
$ docker-compose down
$ systemctl start writehat

Manuelles DB-Backup/Restore

Beachten Sie, dass es dafür bereits eine App-interne Funktion auf der /admin-Seite der Web-App gibt. Sie können diese Methode verwenden, wenn Sie ein Datei-Backup-Job mittels cron usw. erstellen möchten.

  1. Auf dem Zielsystem:
    • Befolgen Sie die normalen Installationsschritte
    • Stoppen Sie WriteHat (systemctl stop writehat)
  2. Auf dem Quellsystem:
    • Stoppen Sie WriteHat (systemctl stop writehat)
  3. Packen Sie die Verzeichnisse mysql, mongo und writehat/migrations in ein TAR-Archiv und kopieren Sie das Archiv auf das Zielsystem (gleicher Speicherort):
root@kitploit:~
# MUSS ALS ROOT AUSGEFÜHRT WERDEN
$ sudo tar --same-owner -cvzpf db_backup.tar.gz mongo mysql writehat/migrations
  1. Erstellen Sie auf dem Zielsystem ein Backup des migrations-Verzeichnisses
root@kitploit:~
$ mv writehat/migrations writehat/migrations.bak
  1. Entpacken Sie das TAR-Archiv auf dem Ziel
root@kitploit:~
$ sudo tar --same-owner -xvpzf db_backup.tar.gz
  1. Starten Sie WriteHat auf dem neuen System
root@kitploit:~
$ systemctl start writehat

Fahrplan / Mögliche zukünftige Entwicklungen:

  • Änderungsverfolgung und Revisionen
  • Detailliertere Review-/Feedback-Funktionalität
  • Kollaboratives Mehrbenutzer-Bearbeiten ähnlich wie Google Docs
  • JSON-Export-Funktion
  • Erstellung von Präsentationsfolien
  • Erweiterter Tabellenersteller mit CSV-Upload-Funktion
  • Detailliertere Berechtigungen / ACLs (über die Benutzer- und Admin-Rollen hinaus)

Bekannte Fehler / Einschränkungen:

  • Chrome oder Chromium ist der empfohlene Browser. Andere sind nicht getestet und können Fehler aufweisen.
  • Das Feld „Assignee“ bei Berichtskomponenten funktioniert nur mit LDAP-Benutzern, nicht mit lokalen.
  • Annotationen auf Bildern springen manchmal beim Anwenden leicht. Es ist ein bekannter Fehler, den wir mit der JS-Bibliothek verfolgen: https://github.com/ailon/markerjs/issues/40
  • Gelegentlich treten visuelle Fehler bei Seitenumbrüchen auf. Diese können behoben werden, indem manuell ein Seitenumbruch in das betroffene Markdown eingefügt wird (dafür gibt es einen Button im Editor).
Tool herunterladen