Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
writehat — Un outil de rapport de test d'intrusion écrit en Python. Libérez-vous de Microsoft Word. | Kitploit
Outils/GitHubGitHub/blacklanternsecurity/writehat
Tests d'IntrusionUtilitaires et FrameworksApprentissage et Éducation
GitHubblacklanternsecurity/writehat

writehat

Un outil de rapport de test d'intrusion écrit en Python. Libérez-vous de Microsoft Word.

Voir le dépôt
1.5k2531il y a 4 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

WriteHat WriteHat est un outil de génération de rapports qui élimine Microsoft Word (et de nombreuses heures de souffrance) du processus de création de rapports. Markdown --> HTML --> PDF. Créé par des testeurs d'intrusion, pour les testeurs d'intrusion - mais peut être utilisé pour générer tout type de rapport. Écrit en Django (Python 3).

Fonctionnalités :

  • Générez facilement de magnifiques rapports de test d'intrusion
  • Constructeur de rapports par glisser-déposer à la volée
  • Prise en charge du Markdown - incluant les blocs de code, les tableaux, etc.
  • Recadrer, annoter, légender et télécharger des images
  • Arrière-plan / pied de page de rapport personnalisable
  • Attribuer des opérateurs et suivre l'état des sections individuelles du rapport
  • Possibilité de cloner et de modéliser des rapports
  • Base de données des constatations
  • Prend en charge plusieurs types de notation (CVSS 3.1, DREAD)
  • Peut facilement générer plusieurs rapports à partir du même ensemble de constatations
  • Conception extensible permettant aux utilisateurs avancés de créer des sections de rapport hautement personnalisées
  • Intégration LDAP

writehat_report

Prérequis d'installation :

  • Installez docker et docker-compose
    • Ceux-ci peuvent généralement être installés avec apt, pacman, dnf, etc.
    root@kitploit:~
    $ sudo apt install docker.io docker-compose
    

Déployer WriteHat (La manière rapide et facile, pour les tests) :

WriteHat peut être déployé en une seule commande :

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

Connectez-vous à https://127.0.0.1 (par défaut : admin / PLEASECHANGETHISFORHEAVENSSAKE)

Déployer WriteHat (La bonne manière) :

  1. Installez Docker et Docker Compose

  2. Clonez le dépôt WriteHat dans /opt

    root@kitploit:~
    $ cd /opt
    $ git clone https://github.com/blacklanternsecurity/writehat
    $ cd writehat
    
  3. Créez des mots de passe sécurisés dans writehat/config/writehat.conf pour :

    • MongoDB (également renseigné dans docker-compose.yml)
    • MySQL (également renseigné dans docker-compose.yml)
    • Django (utilisé pour chiffrer les cookies, etc.)
    • Utilisateur admin Remarque : Rien d'autre que les mots de passe ne doit être modifié si vous utilisez la configuration par défaut Remarque : N'oubliez pas de verrouiller les permissions sur writehat/config/writehat.conf et docker-compose.yml : (chown root:root; chmod 600)
  4. Ajoutez votre nom d'hôte souhaité à allowed_hosts dans writehat/config/writehat.conf

Terminologie

Voici des explications de base pour certains termes WriteHat qui peuvent ne pas être évidents.

root@kitploit:~
Engagement
 ├─ Customer
 ├─ Finding Group 1
 │   ├─ Finding
 │   └─ Finding
 ├─ Finding Group 2
 │   ├─ Finding
 │   └─ Finding
 ├─ Report 1
 └─ Report 2
     └─ Page Template

Engagement

Un Engagement est l'endroit où le contenu est créé pour le client. C'est là que le travail se fait - créer des rapports et saisir des constatations.

Rapport

Un Rapport est un agencement modulaire et hiérarchique de Composants qui peut être facilement mis à jour via une interface glisser-déposer, puis rendu en HTML ou PDF. Un engagement peut avoir plusieurs Rapports. Un Modèle de Page peut être utilisé pour personnaliser l'arrière-plan et le pied de page. Un Rapport peut également être converti en Modèle de Rapport.

Composant de rapport

Un Composant de rapport est une section ou un module du rapport qui peut être glissé/déposé à sa place dans le créateur de rapport. Les exemples incluent "Page de titre", "Markdown", "Constatations", etc. Il existe de nombreux composants intégrés, mais vous pouvez aussi créer les vôtres. (Ce ne sont que du HTML/CSS + Python, c'est donc assez simple. Voir le guide ci-dessous).

Modèle de Rapport

Un Modèle de Rapport peut être utilisé comme point de départ pour un Rapport (dans un Engagement). Les Rapports peuvent également être convertis en Modèles de Rapport.

Groupe de Constatations

Un Groupe de Constatations est une collection de constatations qui sont notées de la même manière (par exemple CVSS ou DREAD). Vous pouvez créer plusieurs groupes de constatations par engagement (par exemple "Constatations Techniques" et "Constatations du Trésor"). Lors de l'insertion des constatations dans le Rapport (via le Composant "Constatations", par exemple), vous devez sélectionner quel Groupe de Constatations vous souhaitez remplir ce Composant.

Modèle de Page

Un Modèle de Page vous permet de personnaliser les images d'arrière-plan et les pieds de page du rapport. Vous pouvez définir un Modèle de Page par défaut, et il sera appliqué globalement sauf s'il est remplacé au niveau de l'Engagement ou du Rapport.

Rédaction de composants de rapport personnalisés

report_creation Chaque composant de rapport est constitué des éléments suivants :

  1. Un fichier Python dans writehat/components/
  2. Un modèle HTML dans writehat/templates/componentTemplates/
  3. Un fichier CSS dans writehat/static/css/component/ (optionnel)

Nous recommandons de consulter les fichiers existants dans ces répertoires ; ils constituent de bons points de départ / exemples.

Un composant personnalisé simple ressemblerait à ceci :

components/CustomComponent.py :

root@kitploit:~
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):

        # for example, to uppercase the entire "summary" field:
        #   context['summary'] = context['summary'].upper()
        return context

Note that fields must share the same name in both the component class and its form. All components must either inherit from BaseComponent or another component. Additionally, each component has built-in fields for name, pageBreakBefore (whether to start on a new page), and showTitle (whether or not to display the name field as a header). So it's not necessary to add those.

componentTemplates/CustomComponent.html :

Fields from the Python module are automatically added to the template context. In this example, we want to render the summary field as markdown, so we add the markdown tag in front of it. Note that you can also access engagement and report-level variables, such as report.name, report.findings, engagement.customer.name, etc.

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 (optionnel) :

The filename must match that of the Python file (but with a .css extension instead of .py). It is loaded automatically when the report is rendered.

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

Once the above files are created, simply restart the web app and it the new component will populate automatically.

root@kitploit:~
$ docker-compose restart writehat

Mise à jour/migration manuelle de la base de données

Si une mise à jour est publiée et modifie le schéma de la base de données, les migrations de base de données Django sont exécutées automatiquement lors du redémarrage du conteneur. Cependant, une interaction de l'utilisateur peut parfois être nécessaire. Pour appliquer les migrations Django manuellement :

  1. Arrêtez WriteHat (systemctl stop writehat)
  2. Placez-vous dans le répertoire WriteHat (/opt/writehat)
  3. Démarrez le conteneur docker
root@kitploit:~
$ docker-compose run writehat bash
  1. Une fois dans le conteneur, appliquez les migrations comme d'habitude :
root@kitploit:~
$ ./manage.py makemigrations
$ ./manage.py migrate
$ exit
  1. Arrêtez les conteneurs docker et redémarrez le service
root@kitploit:~
$ docker-compose down
$ systemctl start writehat

Sauvegarde/restauration manuelle de la base de données

Notez qu'il existe déjà une fonctionnalité intégrée pour cela dans la page /admin de l'application web. Vous pouvez utiliser cette méthode si vous souhaitez effectuer une sauvegarde au niveau des fichiers via cron, etc.

  1. Sur le système de destination :
    • Suivez les étapes d'installation normales
    • Arrêtez WriteHat (systemctl stop writehat)
  2. Sur le système source :
    • Arrêtez WriteHat (systemctl stop writehat)
  3. Créez une archive TAR des répertoires mysql, mongo et writehat/migrations et copiez l'archive sur le système de destination (même emplacement) :
root@kitploit:~
# MUST RUN AS ROOT
$ sudo tar --same-owner -cvzpf db_backup.tar.gz mongo mysql writehat/migrations
  1. Sur le système de destination, faites une sauvegarde du répertoire migrations
root@kitploit:~
$ mv writehat/migrations writehat/migrations.bak
  1. Extrayez l'archive TAR sur la destination
root@kitploit:~
$ sudo tar --same-owner -xvpzf db_backup.tar.gz
  1. Démarrez WriteHat sur le nouveau système
root@kitploit:~
$ systemctl start writehat

Feuille de route / Développements futurs potentiels :

  • Suivi des modifications et révisions
  • Fonctionnalité de révision/feedback plus approfondie
  • Édition collaborative multi-utilisateur similaire à Google Docs
  • Fonction d'exportation JSON
  • Génération de diapositives de présentation
  • Créateur de tableaux plus avancé avec fonction d'importation CSV
  • Permissions/ACL plus granulaires (au-delà des simples rôles utilisateur et administrateur)

Bogues connus / Limitations :

  • Chrome ou Chromium est le navigateur recommandé. Les autres ne sont pas testés et peuvent présenter des bogues.
  • Le champ "Assignee" sur les composants de rapport ne fonctionne qu'avec les utilisateurs LDAP, pas avec les utilisateurs locaux.
  • Les annotations sur les images sautent parfois légèrement lorsqu'elles sont appliquées. C'est un bogue connu que nous suivons avec la bibliothèque JS : https://github.com/ailon/markerjs/issues/40
  • Des bogues visuels apparaissent occasionnellement sur les sauts de page. Ceux-ci peuvent être corrigés en insérant manuellement un saut de page dans le markdown concerné (il y a un bouton pour cela dans l'éditeur).
Télécharger l’outil
  • (Optionnel) Remplacez les certificats SSL auto-signés dans nginx/ :

    • writehat.crt
    • writehat.key
  • Testez que tout fonctionne :

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

    Remarque : Si vous utilisez un VPN, vous devez vous déconnecter du VPN la première fois que vous démarrez les services avec docker-compose. Ceci permet à Docker de créer avec succès le réseau virtuel.

  • Installez et activez le service Systemd :

    Cela démarrera WriteHat automatiquement au démarrage

    root@kitploit:~
    $ sudo cp writehat/config/writehat.service /etc/systemd/system/
    $ sudo systemctl enable writehat --now
    
  • Suivez les logs du service :

    root@kitploit:~
    $ sudo journalctl -xefu writehat.service
    
  • Créez des utilisateurs

    Accédez à https://127.0.0.1/admin après vous être connecté avec l'utilisateur admin spécifié dans writehat/config/writehat.conf Remarque : Certaines actions ne peuvent être effectuées que par un administrateur (par exemple, les sauvegardes de base de données). Un utilisateur admin est automatiquement créé à partir du nom d'utilisateur et du mot de passe dans writehat/config/writehat.conf, mais vous pouvez également promouvoir un utilisateur LDAP en administrateur :

    root@kitploit:~
    # Enter the app container
    $ docker-compose exec writehat bash
    
    # Promote the user and exit
    $ ./manage.py ldap_promote <ldap_username>
    $ exit