Wapiti - Web 脆弱性スキャナー
Wapiti は、Python で書かれた Web 脆弱性スキャナーです。
http://wapiti-scanner.github.io/
要件
Wapiti が正しく動作するには、Python 3.10 または 3.11 が必要です。
setup.py スクリプトまたは pip install wapiti3 を使用すると、すべての Python モジュールの依存関係が自動的にインストールされます。
インストールの詳細については、INSTALL.md を参照してください。
Windows 上で Wapiti を実行するには、WSL を使用します。
仕組み
Wapiti は「ブラックボックス」脆弱性スキャナーとして機能します。つまり、Web アプリケーションのソース コードを調査するのではなく、ファザーのように機能し、デプロイされた Web アプリケーションのページをスキャンし、リンクとフォームを抽出してスクリプトを攻撃します。ペイロードを送信し、エラー メッセージ、特殊な文字列、または異常な動作を探します。
一般的な機能
- さまざまな形式 (HTML、XML、JSON、TXT、CSV) で脆弱性レポートを生成します。
- スキャンまたは攻撃を一時停止および再開できます (sqlite3 データベースを使用したセッション メカニズム)。
- 端末に色を付けて脆弱性を強調できます。
- さまざまなレベルの冗長性。
- 攻撃モジュールを迅速かつ簡単にアクティブ化/非アクティブ化する方法。
- ペイロードの追加は、テキスト ファイルに行を追加するのと同じくらい簡単です。
- HTTP リクエストを実行するための同時タスクの構成可能な数。
閲覧機能
- HTTP、HTTPS、SOCKS5 プロキシをサポートします。
- ターゲットでの HTTP 認証 (ベーシック、ダイジェスト、NTLM)
- ログインフォームに入力して認証します。
- スキャンの範囲 (ドメイン、フォルダー、ページ、URL) を制限する機能。
- URL 内の 1 つ以上のパラメータの自動削除。
- スキャンの無限ループに対する複数の安全策 (パラメータの値の制限など)。
- 探索する最初の URL を設定する可能性 (スコープ内にない場合でも)。
- スキャンと攻撃の一部の URL (ログアウト URL など) を除外できます。
- Chrome または Firefox ブラウザから、または wapiti-getcookie ツールを使用して Cookie をインポートします。
- SSL証明書の検証を有効化/無効化できます。
- Flash SWF ファイルから URL を抽出します。
- JavaScript (非常に基本的な JS インタープリター) から URL を抽出してみます。
- HTML5 対応 (最近の HTML タグを理解)。
- クローラーの動作と制限を制御するためのいくつかのオプション。
- 攻撃時に一部のパラメータ名をスキップします。
- スキャンプロセスの最大時間を設定します。
- カスタム HTTP ヘッダーを追加するか、カスタム ユーザー エージェントを設定します。
- クロールに Firefox ヘッドレス ブラウザを使用する
- 複雑な認証の場合に独自の Python コードをロードする (--form-script オプションを参照)
- カスタム URL または PATH を追加して Wappalyzer データベースを更新する
- OpenAPI (swagger) ファイルを指定して REST API をスキャンする
サポートされている攻撃
- SQL インジェクション (エラー ベース、ブール ベース、時間ベース) および XPath インジェクション
- LDAP インジェクション (エラーベースおよびブールベース)
- クロスサイトスクリプティング (XSS) が反映され永続的
- ファイル開示の検出 (ローカルおよびリモートの include、require、fopen、readfile...)
- コマンド実行検出 (eval()、system()、passtru()...)
- XXE (Xml 外部エンティティ) インジェクション
- CRLF注射
- サーバー上の潜在的に危険なファイルを検索します (Nikto db に感謝します)
- 弱い htaccess 設定のバイパス
- サーバー上のスクリプトのコピー (バックアップ) を検索します。
- シェルショック
- フォルダーとファイルの列挙 (DirBuster のような)
- サーバー側のリクエスト フォージェリ (外部 Wapiti Web サイトの使用による)
- オープンリダイレクト
- 珍しい HTTP メソッド (PUT など) の検出
- 基本的な CSP 評価者
- ブルート フォース ログイン フォーム (辞書リストを使用)
- HTTPセキュリティヘッダーのチェック
- Cookie セキュリティ フラグ (secure フラグと httponly フラグ) の確認
- クロスサイト リクエスト フォージェリ (CSRF) の基本的な検出
- Wappalyzer データベースを使用した Web アプリケーションのフィンガープリンティングにより、関連する CVE 情報が得られます
- Wordpress、Drupal、Joomla、SPIP などの CMS モジュールの列挙
- サブドメイン乗っ取りの検出
- Log4Shell (CVE-2021-44228) の検出
- Spring4Shell (CVE-2020-5398) の検出
- httpsリダイレクトを確認する
- ファイルアップロードの脆弱性をチェックする
- ネットワークデバイスの検出
- JSON本体内にもペイロードを挿入します
Wapiti は、攻撃に対して GET および POST HTTP メソッドの両方をサポートしています。マルチパートもサポートしており、ファイル名にペイロードを挿入することもできます (アップロード)。異常が見つかった場合に警告を表示します (500 エラーやタイムアウトなど)。永続的な XSS 脆弱性と反映された XSS 脆弱性の違いが生じます。
モジュール名
前述の攻撃は、次のモジュール名に関連付けられています。
- バックアップ (Web サーバー上のスクリプトとアーカイブのコピーを検索)
- brute_login_form (辞書リストを使用したブルート フォース ログイン フォーム)
- Buster (DirBusterのようなモジュール)
- cms (CMS とそのバージョンを検出するためのスキャン)
- cookieflags (Secure フラグと HttpOnly フラグをチェック)
- crlf (HTTP ヘッダーへの CR-LF インジェクション)
- csp (CSP の欠如または弱い CSP 構成を検出)
- csrf (CSRF から保護されていないフォーム、または弱い反 CSRF トークンを使用しているフォームを検出します)
- exec (コード実行またはコマンドインジェクション)
- ファイル (パストラバーサル、ファイルインクルードなど)
- htaccess (htaccess 制限の設定が間違っている)
- htp (HashThePlanet データベースで使用されている Web テクノロジーを特定)
- http_header (HTTP セキュリティ ヘッダーを確認する)
- https_redirect (https リダイレクトを確認します)
- ldap (エラーベースおよびブールベースの LDAP インジェクション検出)
- log4shell (CVE-2021-44228 に対して脆弱な Web サイトを検出)
- メソッド (PUT など、利用可能な一般的ではない HTTP メソッドを探します)
- network_device (ネットワークデバイスを検出するための共通ファイルを探します)
- nikto (URL の存在をテストし、応答を確認して既知の脆弱性を探します)
- Permanentxss (xss モジュールの実行後にターゲット全体を再スキャンし、以前に汚染されたペイロードを探します)
- リダイレクト (オープンリダイレクト)
- シェルショック (シェルショック攻撃のテスト、Wikipedia を参照)
- spring4shell (CVE-2020-5398 に対して脆弱な Web サイトを検出)
- SQL (エラーベースおよびブールベースの SQL インジェクション検出)
- ssl (SSL/TLS 証明書構成のセキュリティを評価します。sslscan が必要です)
- ssrf (サーバーサイドリクエストフォージェリ)
- 引き継ぎ(サブドメイン引き継ぎ)
- minutesql (時間ベースの手法で検出された SQL インジェクションの脆弱性)
- アップロード (ファイルアップロードの脆弱性)
- wapp (攻撃モジュールではありません。ターゲットで使用されているバージョンとカテゴリを含む Web テクノロジーを取得し、対応する CVE を見つけます)
- wp_enum (Wordpress Web サイト上のプラグインとテーマを列挙します)
- xss (XSS インジェクション モジュール)
- xxe (XML 外部エンティティ攻撃)
モジュール名は、「-m」または「--module」オプションを使用して、カンマ区切りのリストとして指定できます。
最良の結果を得る方法
さらに多くの脆弱性を見つけるには (一部の攻撃はエラーベースであるため)、Web サーバーの構成を変更できます。
たとえば、PHP 構成で次の値を設定できます。
セーフモード = オフ
display_errors = オン (推奨)
magic_quotes_gpc = オフ
allow_url_fopen = オン
mysql.trace_mode = オン
どこで助けが得られるか
プロンプトで次のコマンドを入力するだけで、基本的な使用方法が表示されます。
ワピティ -h
各オプションの詳細については、マンページ (wapiti.1 または wapiti.1.html) を参照してください。
より詳細な公式 Wiki もあります: https://github.com/wapiti-scanner/wapiti/wiki
別の質問がある場合は、まず FAQ を確認してください
バグを見つけた場合は、問題を記入してください: https://github.com/wapiti-scanner/wapiti/issues
ワピティプロジェクトを支援する方法
あなたはできる :
- 寄付してプロジェクトをサポートしてください ( http://sf.net/donate/index.php?group_id=168625 )
- 攻撃モジュールを作成または改善する
- レポート ジェネレーターとテンプレートを作成または改善する
- バグ修正やパッチを送信...
- いくつかの GUI を作成する
- PCAP ファイルを Wapiti sqlite3 セッション ファイルに変換するツールを作成する
- あなたの周りのワピティについて話してください
ライセンス
Wapiti は、GNU General Public License バージョン 2 (GPL) に基づいてリリースされています。ソースコードはGithubで入手できます。
ニコラス・サリバスによって作成されました。
スポンサー
サイバーウォッチ https://cyberwatch.fr/
みんなのセキュリティ https://securityforeveryone.com/
免責事項
Wapiti はサイバーセキュリティ ソフトウェアです。提供されたターゲットに対してセキュリティ評価を実行します。これにより、ターゲット上で誤動作やクラッシュが発生したり、データ損失が発生したりする可能性があります。
所有者の事前の同意なしにターゲットを攻撃するためにワピティを使用することは違法です。適用されるすべての現地法に従うのはエンドユーザーの責任です。
Wapiti プロジェクトに関与する開発者および関係者は、このプログラムによって引き起こされたいかなる誤用や損害に対しても責任を負いません。