==================================
Wapiti - Web脆弱性スキャナー
.. image:: https://img.shields.io/pypi/v/wapiti3?label=PyPI&logo=PyPI&logoColor=white&color=blue
:alt: PyPI version
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://img.shields.io/pypi/pyversions/wapiti3
:alt: Supported Python versions
:target: https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md
.. image:: https://img.shields.io/github/license/wapiti-scanner/wapiti
:alt: License: GPL-2.0
:target: https://github.com/wapiti-scanner/wapiti/blob/master/LICENSE
.. image:: https://img.shields.io/pypi/dd/wapiti3
:alt: Downloads per day on PyPi
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://codecov.io/gh/wapiti-scanner/wapiti/branch/master/graph/badge.svg?token=GFEIORAFB8
:target: https://codecov.io/gh/wapiti-scanner/wapiti
WapitiはPythonで書かれたWeb脆弱性スキャナーです。
http://wapiti-scanner.github.io/
要件
正しく動作するには、WapitiにはPython 3.12、3.13、または3.14が必要です。
setup.pyスクリプトを使用するか、pip install wapiti3を実行すれば、すべてのPythonモジュール依存関係が自動的にインストールされます。
インストールの詳細については、INSTALL.md <https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md>__を参照してください。
WindowsでWapitiを実行するには、WSL <https://learn.microsoft.com/en-us/training/modules/get-started-with-windows-subsystem-for-linux/>__を使用できます。
動作の仕組み
Wapitiは「ブラックボックス」方式の脆弱性スキャナーとして動作します。つまり、
Webアプリケーションのソースコードを調査するのではなく、ファザーのように動作し、
デプロイされたWebアプリケーションのページをスキャンしてリンクやフォームを抽出し、
スクリプトを攻撃してペイロードを送信し、エラーメッセージや特別な文字列、
異常な動作を探します。
一般的な機能
- さまざまな形式(HTML、XML、JSON、TXT、CSV、Markdown)で脆弱性レポートを生成します。
- スキャンや攻撃を一時停止・再開できます(sqlite3データベースを使用したセッション機構)。
- ターミナルで色を使って脆弱性を強調表示できます。
- 詳細度のレベルを選択できます。
- 攻撃モジュールをすばやく簡単に有効化/無効化できます。
- ペイロードの追加は、テキストファイルに1行追加するのと同じくらい簡単です。
- HTTPリクエストを実行する並行タスク数を設定できます。
ブラウジング機能
- HTTP、HTTPS、SOCKS5プロキシをサポート。
- ターゲット上のHTTP認証(Basic、Digest、NTLM)
- ログインフォームへの入力による認証。
- スキャンのスコープを制限する機能(ドメイン、フォルダ、ページ、URL)。
- URL内の1つ以上のパラメータを自動的に削除。
- スキャンの無限ループに対する複数の保護策(例: パラメータの値の上限)。
- 探索する最初のURLを設定可能(スコープ外でも可)。
- スキャンや攻撃から一部のURLを除外可能(例: ログアウトURL)。
- ChromeやFirefoxブラウザからクッキーをインポートするか、
wapiti-getcookieツールを使用します。
- SSL証明書の検証を有効/無効にできます。
- JavaScriptからURLの抽出を試みます(非常に基本的なJSインタープリタ)。
- HTML5対応(最近のHTMLタグを理解)。
- クローラーの動作と制限を制御する複数のオプション。
- 攻撃中に一部のパラメータ名をスキップ。
- スキャンプロセスの最大時間を設定。
- カスタムHTTPヘッダーの追加やカスタムUser-Agentの設定。
- クローリングにFirefoxヘッドレスブラウザを使用
- 複雑な認証ケースのために独自のPythonコードを読み込む(
--form-scriptオプションを参照)
- Wappalyzerデータベースを更新するためのカスタムURLまたはPATHを追加
- OpenAPI(swagger)ファイルで指定されたREST APIをスキャン
対応している攻撃
- SQLインジェクション(エラーベース、ブールベース、タイムベース)およびXPathインジェクション
- LDAPインジェクション(エラーベースおよびブールベース)
- 反射型および永続型のクロスサイトスクリプティング(XSS)
- ファイル開示の検出(ローカルおよびリモートのinclude、require、fopen、readfile...)
- コマンド実行の検出(eval()、system()、passtru()...)
- XXE(XML外部実体)インジェクション
- CRLFインジェクション
- サーバー上の潜在的に危険なファイルを検索(Niktoデータベースによる)
- 脆弱なhtaccess設定のバイパス
- サーバー上のスクリプトのコピー(バックアップ)を検索
- Shellshock
- フォルダとファイルの列挙(DirBuster風)
- サーバーサイドリクエストフォージェリ(外部のWapiti Webサイトを利用)
- オープンリダイレクト
- 一般的でないHTTPメソッドの検出(PUTなど)
- 基本的なCSP評価
- 辞書リストを使用したログインフォームへのブルートフォース
- HTTPセキュリティヘッダーの確認
- クッキーのセキュリティフラグの確認(secureおよびhttponlyフラグ)
- クロスサイトリクエストフォージェリ(CSRF)の基本検出
- Wappalyzerデータベースを使用したWebアプリケーションのフィンガープリント。関連するCVE情報も提供
- WordPress、Drupal、Joomla、Magento、SPIP、Typo3などのCMSモジュールの列挙
- サブドメインテイクオーバーの検出
- Log4Shell(CVE-2021-44228)の検出
- Spring4Shell(CVE-2022-22965)の検出
- HTTPSリダイレクトの確認
- ファイルアップロードの脆弱性の確認
- ネットワークデバイスの検出
- JSONボディ内にもペイロードを注入
Wapitiは攻撃にGETとPOSTの両方のHTTPメソッドをサポートします。
また、multipartをサポートしており、ファイル名(アップロード)にペイロードを注入できます。
異常が検出された場合に警告を表示します(例: 500エラーやタイムアウト)
永続型XSSと反射型XSSの脆弱性を区別します。
モジュール名
前述の攻撃は、以下のモジュール名に対応しています:
- backup (Webサーバー上のスクリプトとアーカイブのコピーを検索)
- brute_login_form (辞書リストを使用したログインフォームへのブルートフォース)
- buster (DirBuster風モジュール)
- cms (CMSとそのバージョンを検出するスキャン)
- cookieflags (SecureおよびHttpOnlyフラグを確認)
- crlf (HTTPヘッダーへのCR-LFインジェクション)
- csp (CSPの欠如または脆弱なCSP設定を検出)
- csrf (CSRFから保護されていないフォーム、または脆弱なanti-CSRFトークンを使用しているフォームを検出)
- exec (コード実行またはコマンドインジェクション)
- file (パストラバーサル、ファイルインクルージョンなど)
- htaccess (誤設定されたhtaccess制限)
- htp (HashThePlanetデータベースを使用してWeb技術を識別)
- http_headers (HTTPセキュリティヘッダーの確認)
- https_redirect (HTTPSリダイレクトの確認)
- ldap (エラーベースおよびブールベースのLDAPインジェクション検出)
- log4shell (CVE-2021-44228に対して脆弱なWebサイトを検出)
- methods (PUTなどの一般的でない利用可能なHTTPメソッドを探す)
- network_device (ネットワークデバイスを検出するための一般的なファイルを探す)
- nikto (URLの存在をテストし、レスポンスを確認して既知の脆弱性を探す)
- permanentxss (xssモジュール実行後に、以前汚染されたペイロードを探してターゲット全体を再スキャン)
- printer (ネットワークプリンターを検出し、モデルとファームウェア情報を取得)
- redirect (オープンリダイレクト)
- shellshock (Shellshock攻撃をテスト。
Wikipedia <https://en.wikipedia.org/wiki/Shellshock_%28software_bug%29>__を参照)
- spring4shell (CVE-2020-5398に対して脆弱なWebサイトを検出)
- sql (エラーベースおよびブールベースのSQLインジェクション検出)
- ssl (SSL/TLS証明書設定のセキュリティを評価。
sslscan <https://github.com/rbsec/sslscan>__が必要)
- ssrf (サーバーサイドリクエストフォージェリ)
- takeover (サブドメインテイクオーバー)
- timesql (タイムベース手法で検出されるSQLインジェクションの脆弱性)
- upload (ファイルアップロードの脆弱性)
- wapp (攻撃モジュールではありません。ターゲットで使用されているWeb技術をバージョンとカテゴリ付きで取得し、対応するCVEを発見します)
- wp_enum (WordPressウェブサイト上のプラグインとテーマを列挙)
- xss (XSSインジェクションモジュール)
- xxe (XML外部実体攻撃)
モジュール名は、"-m"または"--module"オプションを使用してカンマ区切りのリストで指定できます。
最良の結果を得るには
より多くの脆弱性を見つけるには(一部の攻撃はエラーベースのため)、
Webサーバーの設定を変更できます。
例えば、PHPの設定で以下の値を設定できます:
.. code-block::
safe_mode = Off
display_errors = On (recommended)
magic_quotes_gpc = Off
allow_url_fopen = On
mysql.trace_mode = On
ヘルプの入手先
プロンプトで、基本的な使い方を確認するには次のコマンドを入力してください:
各オプションの詳細については、manページ(wapiti.1またはwapiti.1.html)も参照してください。
より網羅的な公式Wikiもあります:https://github.com/wapiti-scanner/wapiti/wiki
他に質問がある場合は、まずFAQ <https://github.com/wapiti-scanner/wapiti/blob/master/doc/FAQ.md>__を確認してください。
バグを見つけた場合は、issueを作成してください:https://github.com/wapiti-scanner/wapiti/issues
Wapitiプロジェクトを支援するには
以下のことができます:
ライセンス
WapitiはGNU General Public Licenseバージョン2(GPL)の下で公開されています。
ソースコードはGithub <https://github.com/wapiti-scanner/wapiti>__で入手できます。
Nicolas SURRIBASによって作成されました。
スポンサー
Cyberwatch https://cyberwatch.com/
Security For Everyone https://securityforeveryone.com/
IP-Nina https://ip-ninja.com/
免責事項
Wapitiはサイバーセキュリティソフトウェアです。指定されたターゲットに対してセキュリティ評価を実行します。これにより、ターゲットの誤動作やクラッシュ、潜在的なデータ損失が発生する可能性があります。
所有者の事前の同意なしにターゲットを攻撃する目的でWapitiを使用することは違法です。適用される現地の法律を遵守する責任はエンドユーザーにあります。
Wapitiプロジェクトの開発者および関係者は、いかなる責任も負わず、本プログラムによって引き起こされた誤用や損害についても責任を負いません。