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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
wpgarlic — WordPressプラグインファザー(概念実証) | Kitploit
ツール/GitHubGitHub/kazet/wpgarlic
脆弱性分析ウェブセキュリティファジング
GitHubkazet/wpgarlic

wpgarlic

WordPressプラグインファザー(概念実証)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

wpgarlic

WordPressプラグインの概念実証ファザーであり、300以上の脆弱性の発見につながりました。これらの脆弱性は、約3000万サイトにインストールされているWordPressプラグインに存在していました。

使用された手法は https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html で説明されています。

研究を続けたい場合は、人気の低いプラグインから始めてください。もしプラグインが2021年10月から2024年1月の間に少なくとも1万のアクティブインストールを達成した場合、私はおそらくファザーのレポートを確認しています(特に2万以上のアクティブインストールがあるプラグインに重点が置かれています)。ファザーの動作には多くのランダム性があるため、これらのプラグインに未発見の脆弱性が残っている可能性はありますが、数は少ないです。

ファザーのレポートには多くの誤検出が含まれています。そのほとんどは脆弱性を示すものではありません。レポートを見た後は、観察している動作が本当に脆弱性なのか、それとも誤検出なのかをまず分析してください。WPScanやベンダーに生のファザーレポートをスパム送信しないでください。代わりにPoCエクスプロイトを提供してください。

例

明白な理由により、例にはすでに修正された脆弱性のみを含めます。

任意のファイル読み取り

responsive-vector-maps バージョン6.4.0をファジングしていると仮定します:

root@kitploit:~
./bin/fuzz_object plugin responsive-vector-maps --version 6.4.0

(最新バージョンをファジングする場合は --version を省略してください)。

ファジングが終了したら(このプラグインでは10〜30分程度かかります)、以下を実行します:

root@kitploit:~
./bin/print_findings data/object_fuzz_results/

すると、次のような出力が表示されます:

responsive-vector-maps ファザー出力例

これは、ファザーが既知のペイロード上での fopen() の実行を検出したことを意味します。ペイロードのほとんどには GARLIC という単語が含まれており、出力内での自動検出を容易にしています。これらは docker_image/magic_payloads.php で確認・設定できます。

次に、ソースコードを調べると、 wp_ajax_rvm_import_markers エンドポイントがファイルの内容を出力のレンダリングに使用しているため、サーバー上の任意のファイルを読み取ることが可能であることがわかります: CVE-2021-24947。

白で表示されているのが注目すべきクラッシュです(crash_detectors.py で変更や追加が可能です)。緑はコンテキストです。青はレポートファイル名(プラグイン名付き)、プラグインの人気度、エンドポイント名(ここでは ajax アクション名)です。

黄色のデータは、どの変数にどのペイロードが注入されたかを示しています。

反射型XSS

page-builder-add バージョン1.4.9.4をファジングしていると仮定します:

root@kitploit:~
./bin/fuzz_object plugin page-builder-add --version 1.4.9.4

結果を表示すると、既知のペイロードがエコーバックされているのが確認できます:

page-builder-add ファザー出力例

その後、手動でこの場所(青でエンドポイント名、ここではメニューページ名が表示されています)がXSSに対して脆弱かどうかをテストできます。このケースでは脆弱です: CVE-2021-25067。

オプション更新による格納型XSS

root@kitploit:~
./bin/fuzz_object plugin duplicate-page-or-post --version 1.4.6

結果を表示すると、update_option が呼び出されていることがわかります:

duplicate-page-or-post ファザー出力例

エンドポイントのコードを分析すると、これが格納型XSS脆弱性につながることがわかります: CVE-2021-25075。

誤検出

残念ながら、ほとんどのプラグインではファザーは興味深いクラッシュを発見できず、その他のプラグインでもレポートの大部分は誤検出です。たとえば、次のような表示が出た場合:

root@kitploit:~
Call: wp_mail arguments={'to': '[email protected]', 'subject': '[Plugin contact]  - http://GARLICGARLICGARLIC.example.com'}

これは wp_mail が確かに呼び出されていることを意味しますが、受信者や件名の大部分を制御できるわけではありません。確実に判断したい場合は、プラグインのソースを確認してください。

ファザーレポートを読む際の追加ヒント

  • 「May as well be equal: ... and ...」というメッセージが表示された場合、既知のペイロードを他の文字列と等しいと見なす仕組み(https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html#patched-equality で説明)が発動したことを意味します。
  • 「GARLIC_ACCESSED _FILES[files] ENDGARLIC」が表示された場合、アップロードされたファイルへのアクセスが検出されたことを意味します。現時点ではそれ以上の確認は行われません。これが脆弱性かどうかを確認するには、コードを参照してください。
  • ファザーがGET、POSTなどのパラメータに注入する内容が、実際の環境で再現できない場合があります。たとえば、特定のメニューページを表示させたい場合、$_GET['page'] には何も注入できません。

使用法の簡易マニュアル

最初のファジングまたはテストの実行には約1時間かかる場合があります。これは、インストゥルメント化されたPHPとWordPressを含むDockerイメージをビルドする必要があるためです。

プラグインを名前でファジング

root@kitploit:~
./bin/fuzz_object plugin PLUGIN_SLUG

テーマを名前でファジング

root@kitploit:~
./bin/fuzz_object theme THEME_SLUG

ファイルからプラグインをファジング

ローカルのzipファイルからプラグインをインストールすることもできます:

root@kitploit:~
./bin/fuzz_object plugin PLUGIN_FILE_NAME.zip

発見結果の表示

ファザーが見つけた内容を表示するには、以下を使用します:

root@kitploit:~
./bin/print_findings data/object_fuzz_results/

テストの実行

テストを実行するには、以下を使用します:

root@kitploit:~
./bin/test

警告: テストは長時間(1時間以上)かかり、ファザーが脆弱性を見つけるかどうかをチェックするため、ある程度の確率で失敗します。

コードの再フォーマットとリンターの実行

wpgarlic は pre-commit を使用してリンターを実行し、コードをフォーマットします。 pre-commit はCI上で実行され、コードが適切にフォーマットされていることを確認します。

ローカルで実行するには、以下を使用します:

root@kitploit:~
pre-commit run --all-files

コミットのたびに pre-commit が実行されるように設定するには、以下を使用します:

root@kitploit:~
pre-commit install

手動テスト環境

1つのプラグインだけがインストールされたテスト環境を起動するには、以下を使用します:

root@kitploit:~
./bin/manual_testing PLUGIN_SLUG|PLUGIN_PATH.zip [version]

プラグインはスラッグまたはローカルのzipファイルからインストールできます。

http://127.0.0.1:8001/ で待機します。

データベースには2人のテストユーザーがいます:

  • ユーザー名: admin、パスワード: admin、権限: 管理者
  • ユーザー名: subscriber、パスワード: subscriber、権限: 購読者

ファザーの拡張と設定

このツールは概念実証です。このセクションでは、より多くの脆弱性を見つけるために改善できる箇所を示します。

filtering.py を編集するとよいでしょう。このファイルには、特定のクラッシュを重要とみなすかどうかのルールが含まれています。変更すると誤検出が増える可能性がありますが、より多くの脆弱性を見つけることもできます。たとえば、私が出力されたヘッダーの中で重要とみなしたのはLocationヘッダーだけで、Open Redirect脆弱性を検出するためです。これは一つのアイデアであり、他にもアイデアがあるかもしれません。

拡張する価値のあるもう一つのファイルは docker_image/patch_wordpress.sh です。これは、どの関数の呼び出しが興味深いとしてログに記録されるかを記述しています。

他のペイロードを注入したい場合(または注入確率を変更したい場合)は、docker_image/magic_payloads.php と docker_image/fuzz/config.py を編集してください。

crash_detector.py には、興味深いクラッシュや露出した情報(例:メールアドレス)を見つける正規表現が含まれています。

ログイン済み管理者としてRESTルートをファジングすることは、誤検出を引き起こすため無効になっています。これを変更するには、config.DEFAULT_ENABLED_FEATURES の rest_routes_admin をコメント解除してください。

ファザーの内部構造

ブロックリスト

一部のプラグインは他のプラグイン(例:woocommerce)を依存関係として必要とします。依存関係のあるプラグインをファジングする場合、選択したプラグインのみをファジングし、依存関係のAJAXアクション、RESTルート、メニューページをスキップしたいと考えます。woocommerceのアクション/ルート/ページは、woocommerceをファジング対象として選択した場合のみファジングします。

依存関係のアクション/ルート/ページのリストはブロックリストと呼ばれ、docker_image/blocklists/ にリストされています。common という名前のファイルにはWordPressコアのアクション/ルート/ページが含まれており、これらもファジングしないようにします。

これらのブロックリストを更新するには、./bin/update_blocklists を使用します。

FAQ

ファザーが何かを見つけました。これは脆弱性ですか?

可能性があります。プラグインをローカルのテスト環境(たとえば「手動テスト環境」のセクションで説明されているもの)にインストールし、バグを分析してください。

ファザーが何も見つけませんでした。プラグインは安全ですか?

そうとは限りません。 ファザーはいくつかのクラスの脆弱性を見つけますが、限界もあります。

ほとんどのプラグインではファザーは何も見つけません。このツールの目的は、むしろ多数のWordPressプラグインを大量にスキャンすることであり、単一のプラグインの包括的なテストを行うことではありません。

ある実行ではファザーが何かを見つけたが、次の実行では見つからなかった。なぜ?

可能です。ファザーはペイロードをランダムに選択し、他の場所でもランダム性を導入します(例:https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html#patched-equality で説明されているケースでの==演算子の動作方法など)。

動作しない?質問は?

Githubのチケットを提出するか、メールしてください: [email protected]

ツールをダウンロード