Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
writehat — Pythonで書かれたペンテスト報告ツール。 Microsoft Wordから自由になろう。 | Kitploit
ツール/GitHubGitHub/blacklanternsecurity/writehat
ペネトレーションテストユーティリティとフレームワーク学習と教育
GitHubblacklanternsecurity/writehat

writehat

Pythonで書かれたペンテスト報告ツール。 Microsoft Wordから自由になろう。

リポジトリを見る
1.5k25314ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

WriteHat WriteHat は、レポート作成プロセスから Microsoft Word(そして多くの苦痛)を取り除くレポートツールです。Markdown --> HTML --> PDF。ペネトレーションテスターによってペネトレーションテスターのために作られましたが、あらゆる種類のレポートの生成に使用できます。Django (Python 3) で書かれています。

特徴:

  • 美しいペンテストレポートを簡単に生成
  • その場でドラッグ&ドロップできるレポートビルダー
  • Markdown対応 – コードブロック、テーブルなど
  • 画像の切り抜き、注釈、キャプション、アップロード
  • カスタマイズ可能なレポートの背景/フッター
  • オペレーターの割り当てと個別レポートセクションのステータス追跡
  • レポートのクローン作成とテンプレート化機能
  • 所見データベース
  • 複数のスコアリングタイプに対応 (CVSS 3.1、DREAD)
  • 同じ所見セットから複数のレポートを簡単に生成可能
  • 拡張可能な設計により、パワーユーザーが高度にカスタマイズされたレポートセクションを作成可能
  • LDAP統合

writehat_report

インストール前提条件:

  • docker と docker-compose をインストール
    • 通常は apt、pacman、dnf などでインストール可能
    root@kitploit:~
    $ sudo apt install docker.io docker-compose
    

WriteHat のデプロイ (テスト用の簡単な方法):

WriteHat は以下の1コマンドでデプロイできます:

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

https://127.0.0.1 にログイン (デフォルト: admin / PLEASECHANGETHISFORHEAVENSSAKE)

WriteHat のデプロイ (正しい方法):

  1. Docker と Docker Compose をインストール

  2. WriteHat リポジトリをクローンして /opt に配置

    root@kitploit:~
    $ cd /opt
    $ git clone https://github.com/blacklanternsecurity/writehat
    $ cd writehat
    
  3. 安全なパスワードを作成し、writehat/config/writehat.conf に設定:

    • MongoDB(docker-compose.yml にも入力)
    • MySQL(docker-compose.yml にも入力)
    • Django(Cookie の暗号化などに使用)
    • 管理者ユーザー 注意: デフォルト設定を使用する場合、パスワード以外は変更する必要はありません 注意: writehat/config/writehat.conf と docker-compose.yml のパーミッションを忘れずにロックダウンしてください (chown root:root; chmod 600)
  4. 希望するホスト名を writehat/config/writehat.conf の allowed_hosts に追加

  5. (任意) 自己署名SSL証明書を nginx/ 内の以下のファイルで置き換え:

用語

以下は、WriteHat の用語のうち、わかりにくいかもしれない基本的な説明です。

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

Engagement

Engagement は、顧客向けのコンテンツを作成する場所です。ここで実際の作業(レポートの作成や所見の入力)を行います。

Report

Report は、ドラッグ&ドロップインターフェースで簡単に更新し、HTML または PDF にレンダリングできる、モジュール化された階層的なComponentの集まりです。1つの Engagement に複数のReportを作成できます。Page Templateを使用して背景やフッターをカスタマイズできます。ReportはReport Templateに変換することもできます。

Report Component

レポートComponentは、レポート作成ツール内でドラッグ&ドロップで配置できるレポートのセクションまたはモジュールです。例: 「タイトルページ」「Markdown」「所見」など。多くの組み込みコンポーネントがありますが、自分で作成することもできます。(HTML/CSS + Python で構成されているため、簡単です。以下のガイドを参照してください。)

Report Template

Report Template は、Engagement内のReportの開始点として使用できます。ReportをReport Templateに変換することもできます。

Finding Group

Finding Group は、同じ方法(例: CVSS または DREAD)でスコアリングされる所見のコレクションです。Engagement ごとに複数の Finding Group を作成できます(例: 「技術的所見」と「財務的所見」)。所見をReportに挿入するとき(たとえば「所見」Componentを使用)、そのComponentにどのFinding Groupを入力するかを選択する必要があります。

Page Template

Page Template を使用すると、レポートの背景画像とフッターをカスタマイズできます。デフォルトのPage Templateを1つ設定すると、EngagementまたはReportレベルで上書きされない限り、グローバルに適用されます。

カスタムレポートコンポーネントの作成

report_creation 各レポートコンポーネントは、以下の要素で構成されています:

  1. writehat/components/ にある Python ファイル
  2. writehat/templates/componentTemplates/ にある HTML テンプレート
  3. writehat/static/css/component/ にある CSS ファイル(オプション)

これらのディレクトリ内の既存ファイルを参考にすることをお勧めします。出発点や例として適しています。

簡単なカスタムコンポーネントは次のようになります:

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

    # "templatable" 属性は、レポートがテンプレートに変換されたときにそのフィールドを保存するかどうかを決定します
    fieldList = {
        'summary': StringField(markdown=True, templatable=True),
    }

    # HTML テンプレートを必ず指定してください
    htmlTemplate = 'componentTemplates/CustomComponent.html'

    # Font Awesome アイコンの種類と色 (HTML/CSS)
    # これは Web アプリ内で視覚的な飾りとして使用されます
    iconType = 'fas fa-stream'
    iconColor = 'var(--blue)'

    # "preprocess" 関数はレポートがレンダリングされるときに実行されます
    # これを使用して、データに対して最後の操作を実行します
    def preprocess(self, context):

        # 例: "summary" フィールド全体を大文字にする:
        #   context['summary'] = context['summary'].upper()
        return context

フィールドは、コンポーネントクラスとそのフォームの両方で同じ名前を持つ必要があります。すべてのコンポーネントは BaseComponent または別のコンポーネントを継承する必要があります。また、各コンポーネントには name、pageBreakBefore(新しいページで開始するかどうか)、showTitle(name フィールドを見出しとして表示するかどうか)の組み込みフィールドがあります。そのため、これらを追加する必要はありません。

componentTemplates/CustomComponent.html:

Python モジュールのフィールドは、自動的にテンプレートコンテキストに追加されます。この例では、summary フィールドを Markdown としてレンダリングしたいので、その前に markdown タグを追加します。また、report.name、report.findings、engagement.customer.name などの Engagement および Report レベルの変数にもアクセスできます。

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(オプション):

ファイル名は Python ファイルと同じでなければなりません(拡張子は .py ではなく .css)。レポートがレンダリングされるときに自動的に読み込まれます。

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

上記のファイルを作成したら、Web アプリを再起動するだけで、新しいコンポーネントが自動的に反映されます。

root@kitploit:~
$ docker-compose restart writehat

手動 DB 更新/マイグレーション

データベーススキーマを変更するアップデートがプッシュされた場合、Django のデータベースマイグレーションはコンテナの再起動時に自動的に実行されます。ただし、ユーザーの操作が必要になる場合があります。 Django マイグレーションを手動で適用するには:

  1. WriteHat を停止 (systemctl stop writehat)
  2. WriteHat ディレクトリに移動 (/opt/writehat)
  3. Docker コンテナを起動
root@kitploit:~
$ docker-compose run writehat bash
  1. コンテナ内で、通常通りマイグレーションを適用:
root@kitploit:~
$ ./manage.py makemigrations
$ ./manage.py migrate
$ exit
  1. Docker コンテナを停止し、サービスを再起動
root@kitploit:~
$ docker-compose down
$ systemctl start writehat

手動 DB バックアップ/リストア

注意: Web アプリの /admin ページにはすでにアプリ内機能があります。cron などを使用してファイルレベルのバックアップジョブを作成したい場合にこの方法を使用できます。

  1. 移行先システムで:
    • 通常のインストール手順に従う
    • WriteHat を停止 (systemctl stop writehat)
  2. 移行元システムで:
    • WriteHat を停止 (systemctl stop writehat)
  3. mysql、mongo、writehat/migrations ディレクトリを TAR でアーカイブし、移行先システムの同じ場所にコピー:
root@kitploit:~
# 必ず root で実行
$ sudo tar --same-owner -cvzpf db_backup.tar.gz mongo mysql writehat/migrations
  1. 移行先システムで、migrations ディレクトリのバックアップを作成
root@kitploit:~
$ mv writehat/migrations writehat/migrations.bak
  1. 移行先システムで TAR アーカイブを展開
root@kitploit:~
$ sudo tar --same-owner -xvpzf db_backup.tar.gz
  1. 新しいシステムで WriteHat を起動
root@kitploit:~
$ systemctl start writehat

ロードマップ / 可能性のある 将来の開発:

  • 変更追跡とリビジョン
  • より詳細なレビュー/フィードバック機能
  • Google Docs のような共同編集機能
  • JSON エクスポート機能
  • プレゼンテーションスライドの生成
  • CSV アップロード機能を備えたより高度なテーブル作成ツール
  • より細かい権限 / ACL(ユーザーと管理者以外のロールを超えて)

既知のバグ / 制限:

  • Chrome または Chromium が推奨ブラウザです。その他は未テストで、バグが発生する可能性があります。
  • レポートコンポーネントの「担当者」フィールドは、ローカルユーザーではなく LDAP ユーザーでのみ動作します。
  • 画像への注釈は適用時にわずかに位置がずれることがあります。これは JS ライブラリで追跡中の既知のバグです: https://github.com/ailon/markerjs/issues/40
  • 改ページ時に視覚的なバグが発生することがあります。影響を受ける Markdown に手動で改ページを挿入することで修正できます(エディターにボタンがあります)。
ツールをダウンロード
  • writehat.crt
  • writehat.key
  • すべてが正常に動作することをテスト:

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

    注意: VPN を使用している場合、docker-compose でサービスを初めて起動するときは VPN から切断しておく必要があります。これは Docker が仮想ネットワークを正常に作成できるようにするためです。

  • Systemd サービスをインストールして有効化:

    これにより、起動時に WriteHat が自動的に開始されます

    root@kitploit:~
    $ sudo cp writehat/config/writehat.service /etc/systemd/system/
    $ sudo systemctl enable writehat --now
    
  • サービスのログを確認:

    root@kitploit:~
    $ sudo journalctl -xefu writehat.service
    
  • ユーザーを作成

    writehat/config/writehat.conf で指定した管理者ユーザーでログイン後、https://127.0.0.1/admin にアクセス 注意: 管理者のみ実行可能な操作もあります(例: データベースのバックアップ)。writehat/config/writehat.conf のユーザー名とパスワードから管理者ユーザーが自動的に作成されますが、LDAP ユーザーを管理者に昇格させることもできます:

    root@kitploit:~
    # アプリコンテナに入る
    $ docker-compose exec writehat bash
    
    # ユーザーを昇格して終了
    $ ./manage.py ldap_promote <ldap_username>
    $ exit