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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/fastly/ftw
脆弱性スキャナーWAFバイパスウェブセキュリティペネトレーションテストDevSecOpsArchived
GitHubfastly/ftw

ftw

WAFテスト用フレームワーク (FTW!)

リポジトリを見る
263583年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

WAFテストフレームワーク (FTW)

Build Status

目的

このプロジェクトは、ModSecurityとFastlyの研究者によって作成され、WAFルールの厳格なテストを提供することを目的としています。OWASP Core Ruleset V3をベースラインとして使用し、WAF上のルールをテストします。ルールセットの各ルールはYAMLファイルに読み込まれ、これらのルールをトリガーするHTTPリクエストを発行します。

目標/ユースケースは次のとおりです。

  • 継続的インテグレーションを使用して、WAFデプロイメントのリグレッションを発見し、WAFに対して繰り返し可能な攻撃を発行する
  • ModSecurityへの新しいルールのテストフレームワークを提供する。ルールが提出された場合、対応するポジティブテストとネガティブテストが必要です。
  • 共通の合意されたベースラインルールセット(OWASP)に対してWAFを評価する
  • コアルールセットに含まれないWAFのカスタムルールをテストおよび検証する

インストール

  • git clone [email protected]:fastly/ftw.git
  • cd ftw
  • pipがインストールされていることを確認してください apt-get install python-pip
  • pip install -r requirements.txt

HTML contains とステータスコードチェックのみを使用したテストの実行

  • あなたのWebサーバー(前面にWAFがある)を指すYAMLファイルを作成します
  • py.test test/test_default.py --ruledir test/yaml

Apache+Modsecurity+OWASP CRSのプロビジョニング

WAFルールをテストするための環境が必要な場合は、Apache、Modsecurity、およびOWASPコアルールセットのバージョン3.0.0を使用した環境が作成されています。これは次のようにしてデプロイできます。

  • リポジトリをチェックアウトする: git clone https://github.com/fastly/waf_testbed.git
  • vagrant up と入力する

YAMLファイル内の宛先アドレスをカスタムドメインに上書きしてテストを実行する

  • テスト用Webサーバーを起動します
  • py.test test/test_default.py --ruledir=test/yaml --destaddr=domain.com --port 443 --protocol https

統合テストの実行、ローカルWebサーバー、sudoが必要な場合があります

  • py.test test/integration/test_logcontains.py -s --ruledir=test/integration/

ログの統合方法

  1. 必要なインポートを含む *.py ファイルを作成します。例は test/integration/test_logcontains.py に示されています。
  2. test* で始まるすべての関数は py.test によって実行されるので、関数 def test_somewaf を作成します。
  3. LogChecker を継承するクラスを実装します。
    1. get_logs() 関数を実装します。FTWはテストの実行後にこの関数を呼び出し、self.start と self.end のdatetimeを設定します。
    2. datetime変数の情報を使用して、ファイルまたはAPI呼び出しのいずれかからWAFのログを取得します。
    3. ログを取得し、文字列の配列に格納して、get_logs() から返します。
  4. py.testフィクスチャ を活用します。関数デコレータ @pytest.fixture を使用し、新しい LogChecker オブジェクトを返します。テスト内でその @pytest.fixture の名前と一致する関数引数を使用すると、オブジェクトがインスタンス化され、テストの実行が容易になります。これの例はステップ1のPythonファイルにあります。

プログラムによるHTTPリクエストの作成

YAML形式を使用してリクエストを行うことが推奨されますが、自動テストでは多くの動的リクエストを行う必要があることがよくあります。そのような場合は、py.testフレームワークを利用して、全体の一部として実行できるテストケースを生成することをお勧めします。 一般的にHTTPリクエストを行うのは簡単です:

  1. HttpUA() クラスのインスタンスを作成します
  2. Input() クラスのインスタンスを作成し、デフォルトにしたくないパラメータを指定します
  3. inputクラスのインスタンスを HttpUA.send_request() に提供します

例については、http統合テストを参照してください

ツールをダウンロード
  • test/integration/LOGCONTAINSFIXTURE.yaml のように *.yaml 形式でテスト設定を記述します。log_contains 行には正規表現である文字列が必要です。FTWはYAMLファイルの各ステージから log_contains 文字列をコンパイルして正規表現にします。この正規表現は、get_logs() から渡されたログ行と照合するために使用されます。したがって、log_contains 文字列は一意のルールIDである必要があります。FTWは貪欲で最初の一致を通過させるためです。LogChecker オブジェクトに渡された開始/終了時刻によって誤検知は軽減されますが、安全のために一意の正規表現を使用するのが最善です。
  • 各ステージごとに get_logs() 関数が呼び出されるため、ログを取得する方法がAPI呼び出しである場合は、その呼び出しを考慮してください。