手動セキュリティテスターのためのテスト環境

Sh00t
- セキュリティテストの実施に集中できるタスクマネージャーです
- テストケースの To Do チェックリストを提供します
- カスタマイズ可能なバグテンプレートを使ってバグレポートを作成するのに役立ちます
特長:
- 動的タスクマネージャー – セキュリティ向けではない単純なエディターやタスク管理ツールを置き換えます
- 自動化・カスタマイズ可能なセキュリティテストケースチェックリスト – セキュリティ向けではないEvernoteやOneNoteなどのツールを置き換えます
- 目的別にカスタムバグテンプレートを管理し、ワンクリックでバグレポートを自動生成
- 複数のアセスメントとプロジェクトをサポートし、さまざまなニーズを論理的に分離
- 紙のように使える – すべて自動保存
- 自動生成したバグレポートをMarkdownにエクスポート、HackerOneにそのまま提出可能(WIP)
- JIRA、ServiceNowとの統合 – 近日公開
- バグレポートのMarkdownエクスポート – 近日公開
- 内部のすべてをカスタマイズ可能
インストール:
- Dockerをインストール していない場合はインストールしてください。Windows 10 Homeユーザーまたは旧リリースのユーザーは、以下の代替インストール手順を参照してください。
- Sh00tのDockerイメージをプル:
docker pull pavanw3b/sh00t:latest
- Dockerコンテナ間でデータを永続化するためのボリュームを作成:
docker volume create --name sh00t
- コンテナを実行:
docker run -d -p 8000:8000 --name sh00t -v sh00t:/root/sh00t/db pavanw3b/sh00t:latest
- お好みのブラウザで http://127.0.0.1:8000/ にアクセス
- 認証情報
sh00t / sh00t でログイン
- 停止:
docker stop sht00t
代替インストール:
- Dockerにまだ慣れていませんか? 大丈夫です。Dockerを使わないインストール
- Djangoプロで、すべてを自分でセットアップしたいですか? それも対応しています: 手動セットアップ
- Windows HomeのようにHyper-Vがないマシンを使用していますか? Docker ToolboxとDocker Quickstart Terminal を使用できます。Sh00tはDockerのデフォルトIP
http://YOUR_DOCKER_IP:8000/ で動作します。IPアドレスはQuickstart Terminalの起動時に表示されます。docker-machine ls と docker-machine ip MACHINE_NAME でも確認できます。
- 既存のデータを失わずに以前のセットアップからDocker版のSh00tに移行したい場合は、Dockerコンテナ上の
/root/sh00/db/db.sqlite3 ファイルを古いSh00tのセットアップのものと手動で置き換える必要があります。
後でSh00tを使用する場合:
- コンテナを起動:
docker start sh00t
- お好みのブラウザで
http://YOUR_IP:8000/ にアクセス
- 変更していなければ
sh00t / sh00t でログイン
- 気になる場合はコンテナを停止:
docker stop sh00t
これを繰り返してください!
注: 常に docker start と docker stop を使用してください。コンテナまたはボリュームを削除するとデータが失われる可能性があります。
アップグレード
Sh00tを最新に保ち、新機能とバグ修正を利用することが重要です。
- 既存のコンテナを削除:
docker container rm -f sh00t
心配しないでください。Dockerボリュームを削除しない限りデータは安全です。
- 最新のDockerイメージをプル:
docker pull pavanw3b/sh00t:latest
- 最新のコードで新しいコンテナを起動(ただし古いデータはそのまま):
docker run -d -p 8000:8000 --name sh00t -v sh00t:/root/sh00t/db pavanw3b/sh00t:latest
アンインストール
すべてのSh00tイメージ、コンテナ、ボリュームを削除したい場合は、以下のコマンドを実行してください。注意: これは破壊的な操作であり、元に戻せません。
- イメージを削除:
docker rmi pavanw3b/sh00t:latest
- コンテナを削除:
docker rm sh00t
- ボリュームを削除:
docker volume rm sh00t:/root/sh00t/db
トラブルシューティング:
Sh00tはPythonで書かれ、Django Webフレームワークを利用しています。エラーに遭遇した場合は、エラーメッセージをGoogleで検索すればたいてい解決します。不明な場合は、GitHubで新しいIssueを報告してください。
用語集:
- Flag: Flagはsh00tで撃つ対象です。テストする必要があるテストケースです。選択されたテスト方法論に基づいて自動生成されます。バグが見つかるかもしれないし、見つからないかもしれません。目標は狙いを定めて撃つことです。Flagにはテストのための詳細な手順が含まれます。バグが確認された場合、それはSh0tと呼ばれます。
- Sh0t: Sh0tはバグです。通常、Sh0tにはバグの技術的説明、影響を受けるファイル/URL、再現手順、修正推奨事項が含まれます。Sh0tの内容のほとんどはワンクリックで生成され、影響を受けるパラメータや手順などの動的コンテンツのみ変更する必要があります。Sh0tはAssessmentに所属することができます。
- Assessment: Assessmentはテストの評価です。アプリケーションやプログラムの評価であり、ユーザーが管理したい方法に応じて決まります。プロジェクトの一部です。
- Project: ProjectはAssessmentを含みます。Projectは作業の論理的な分離です。異なる仕事、バグバウンティなど、ユーザーが決めることができます。
- Template: Templateはバグテンプレートです。
Sh0tと一緒に使用します。新しいバグを報告する際のコピー&ペースト作業を置き換えるためのものです。すべてのバグに対してTemplateを作成し、実際のバグ報告書で変わる部分(URL、影響領域など)を変数として残しておくと、Sh0tにTemplateが読み込まれたときに置き換えられます。
- Case Master: Case Masterはテストケースのセットです。これらはターゲットに対して実行する個別のテストです。テストケースを設定することでテスト管理を支援し、Assessmentで必要なすべての項目をカバーできます。すべてのハッカーは独自のテストケースを持つでしょう。短くてわかりやすいものにしてください。Sh00tを使う上で最も重要な部分は、テストケースの完全なリストをSh00tに保持することです。テストケースは新しいAssessmentを開始するときにテストされるFlagになります。
- Module Master: Moduleはテストの論理的な部分です。例えば、ユーザーとセッション管理はModuleの例です。Moduleはテストのカテゴリに似ています。
- Methodology Master: Methodologyはテストに対するアプローチです。OWASP Testing Guide V4やWeb Application Hacker Handbook (WAHH) はMethodologyの例で、Sh00tにデフォルトで同梱されています。独自のMethodology、Module、テストケースを作成できます。公式の仕事と個人のバグバウンティで異なるMethodologyを持つことができます。Methodologyはそれらを分離するのに役立ちます。
しくみ:
新しいAssessmentを作成することから始めます。テストに使用するMethodologyを選択します。現在、「Web Application Hacker's Handbook」テスト方法論を参考に作成された、13個のModuleに属する86個のFlagにグループ化された330のテストケースがあります。ModuleとFlagは選択・カスタマイズ可能です。Flagを使ってAssessmentが作成されたら、テスターはそれらを手動で、またはスキャナ、ツールなどを使用して半自動でテストし、完了したら「Done」とマークします。評価を実施中に、アプリケーションの特定のシナリオに固有のカスタムテストケースがしばしば発生します。新しいFlagはいつでも簡単に作成できます。
Flagが有効なバグとして確認されたら、Sh0tを作成できます。最も適したバグテンプレートを選択すると、sh00tが選択したテンプレートに基づいてバグ報告書を自動入力します。
Sh00tを使える人:
- アプリケーションセキュリティエンジニア: ペネトレーションテストと脆弱性評価
- バグバウンティハンター
- 独立したセキュリティ研究者
- ブルーチーム、修正を行う開発者
- ハッキングしたいすべての人
スクリーンショット:
ダッシュボード:

Flagの作業:

フルスクリーンでの編集:

新しいAssessment作成時のMethodologyとテストケースの選択:

テンプレートで事前入力されたバグの報告:

設定:

実装詳細:
- 言語: Python 3
- フレームワーク: Django Web Framework
- 依存関係: Django REST Framework, django-tables2: /requirements.txt で管理
- UI: Bootstrap - レスポンシブ
コントリビューター:
謝辞:
- Hari Valugonda
- Mohd Aqeel Ahmed
- Ajeeth Rakkappan