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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CakeFuzzer — Cake Fuzzerは、特定のフレームワークに基づいて作成されたWebアプリケーションの脆弱性を、偽陽性を非常に抑えながら自動的かつ継続的に発見するのに役立つプロジェクトです。 | Kitploit
ツール/GitHubGitHub/zigrin-security/cakefuzzer
静的分析脆弱性スキャナーウェブ脆弱性スキャナー動的分析 (サンドボックス)ウェブセキュリティファジングペネトレーションテスト
GitHubzigrin-security/cakefuzzer

CakeFuzzer

Cake Fuzzerは、特定のフレームワークに基づいて作成されたWebアプリケーションの脆弱性を、偽陽性を非常に抑えながら自動的かつ継続的に発見するのに役立つプロジェクトです。

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

CakeFuzzer

最新リリース: 1.0
ライセンス: GNU GPL v3.0

Cake Fuzzer は、特定のフレームワークに基づいて作成された Web アプリケーションの脆弱性を、非常に少ない誤検知で自動的かつ継続的に発見することを目的としたプロジェクトです。現在は Cake PHP フレームワークをサポートするように実装されています。

調査プロセスの詳細については、次の記事シリーズをご覧ください: CakePHP アプリケーション サイバーセキュリティ調査

🏆 報告されたバグ 🏆

以下は、Cake Fuzzer によって発見されたバグの一部です:

タイトル重要度リンク
Cerebrate のブラインド SQL インジェクション9.8 Criticalhttps://zigrin.com/advisories/cerebrate-blind-sql-injection/
CRUD コンポーネントの SQL インジェクション8.8 Highhttps://zigrin.com/advisories/misp-sql-injection-in-crud-component/
DOM ベース XSS6.1 Mediumhttps://zigrin.com/advisories/misp-dom-based-xss/
order パラメータのブラインド SQL インジェクション8.8 Highhttps://zigrin.com/advisories/misp-blind-sql-injection-in-order-parameter/
配列入力パラメータのブラインド SQL インジェクション8.8 Highhttps://zigrin.com/advisories/misp-blind-sql-injection-in-array-input-parameters/
/Logs/index の Time-based SQL インジェクション7.2 Highhttps://zigrin.com/advisories/misp-time-based-sql-injection-in-logs-index/

プロジェクトの目標

Webアプリケーションにおける自動ツールを使用した脆弱性発見の典型的なアプローチは次のとおりです:

  • SAST (Static Application Security Testing) – アプリケーションを実行せずにソースコードに基づいて脆弱性を検出するスキャナーを含む方法
  • DAST (Dynamic Application Security Testing) – 実行中のアプリケーションを攻撃し、アプリケーションの応答に基づいて脆弱性を特定する脆弱性スキャナーを組み込んだ方法

どちらの方法にも欠点があります。SAST は誤検知率が高く、脆弱性ではないか、悪用可能ではない発見が多いです。DAST は誤検知は少ないものの、情報が限られているため発見される脆弱性は少なくなります。また、アプリケーションに関するある程度の知識と、スキャンを実行する人のセキュリティに関する背景が必要です。多くの場合、アプリケーションごとにカスタムスキャン設定が必要で、適切に動作させるにはそれが必要です。

Cake Fuzzer プロジェクトは、両方のアプローチの利点を組み合わせ、上記の欠点を排除することを目的としています。このアプローチは IAST (Interactive Application Security Testing) と呼ばれます。

プロジェクトの目標は次のとおりです:

  • CakePHP フレームワークに基づいたアプリケーションの脆弱性を自動的に発見するプロセスを作成する
  • アプリケーションの知識や事前設定を必要としない
  • 誤検知は最小限、あるいはゼロに近い結果を出す
  • スキャナーを実行するために最小限のセキュリティ知識しか必要としない

注: 一部の脆弱性クラスは Cake Fuzzer の対象外であるため、Cake Fuzzer はそれらを検出できません。そのようなクラスの例としては、ビジネスロジックの脆弱性やアクセス制御の問題があります。

アーキテクチャ

概要

Cake Fuzzer アーキテクチャ概要

Drawio: Cake Fuzzer アーキテクチャ

Cake Fuzzer は 3 つの主要な (かなり独立した) サーバーで構成され、これらが連携して CakePHP アプリケーションの動的な脆弱性テストを可能にします。

  • AttackQueue - 攻撃シナリオのスケジューリングと実行。
  • Monitors - 指定されたエンティティ (executor outputs / file contents / processes / errors) の監視。
  • Registry - 発見された脆弱性の保存と分類。 これらは独立して動作します。AttackQueue は新しいスキャナーを Monitors に追加でき、Monitors は新しい攻撃をスケジュールできます (例: 発見された脆弱性に基づいてアプリケーションをさらに攻撃するため)。

その他のコンポーネントは次のとおりです:

  • Fuzzer - 攻撃を定義し、AttackQueue にスケジュールします (エントリとして機能)
  • Configuration - アプリケーションに依存する情報 (例: CakePHP アプリケーションへのパス) を設定します
  • Instrumentation - 設定に基づいて、アプリケーション/OS への変更を定義し、攻撃の準備を整えます。

アプローチ

Cake Fuzzer は IAST (Interactive Application Security Testing) の概念に基づいています。事前定義された攻撃セットを含み、実行前にランダムに変更されます。Cake Fuzzer は Cake PHP フレームワークのおかげでアプリケーション内部に関する知識を持っているため、攻撃はアプリケーションのすべての可能なエントリポイントに対して発射されます。

攻撃中、Cake Fuzzer はアプリケーションと基盤システムのさまざまな側面を監視します。たとえば:

  • ネットワーク接続
  • ファイルシステム
  • アプリケーション応答
  • エラーログ

これらの情報源により、Cake Fuzzer はより多くの脆弱性を特定し、より高い確実性で報告できます。

必要条件

  • CakePHP Web アプリケーションがインストール、設定、実行されていること。CakePHP Web アプリケーションの例: MISP (https://github.com/MISP/MISP)、Cerebrate (https://github.com/cerebrate-project/cerebrate)
  • PHP CLI

VMWare 仮想マシン上の MISP を使用した開発環境

以下のセクションでは、ターゲットが CVE-2021-41326 に対して脆弱な古い MISP v2.4.146 である Cake Fuzzer 開発環境をセットアップする手順を説明します。

必要条件

  • VMWare Workstation (ホスト OS とゲスト OS 間でディレクトリの共有/マウントをサポートしている限り、他の仮想化プラットフォームも使用可能)

手順

ホストオペレーティングシステムで以下のコマンドを実行し、古い MISP VM をダウンロードします:

root@kitploit:~
cd ~/Downloads # MISP VM を保存したい場所があれば適宜変更
wget https://vm.misp-project.org/MISP_v2.4.146@0c25b72/[email protected] -O MISP.zip
unzip MISP.zip
rm MISP.zip
mv VMware/ MISP-2.4.146

VMWare GUI で以下の操作を行い、ホスト OS と MISP 間で Cake Fuzzer ファイルを共有できるようにします:

  1. VMWare で仮想マシンを開き、[設定] > [オプション] > [共有フォルダ] > [追加] に移動します。
  2. ホスト OS 上で Cake Fuzzer を保持しているディレクトリをマウントし、VM 上では cake_fuzzer という名前を付けます。
  3. VM を起動します。
  4. VMWare ウィンドウに表示される IP アドレス (MISP が完全に起動した後) をメモします。

ホスト OS で以下のコマンドを実行します (MISP_IP_ADDRESS を先にメモした IP アドレスに置き換えてください):

root@kitploit:~
ssh-copy-id misp@MISP_IP_ADDRESS
ssh misp@MISP_IP_ADDRESS

MISP に SSH で接続したら、以下のコマンド (MISP ターミナル内) を実行して、ホスト OS と MISP 間での Cake Fuzzer ファイル共有の設定を完了します:

root@kitploit:~
sudo apt update
sudo apt-get -y install open-vm-tools open-vm-tools-desktop
sudo apt-get -y install build-essential module-assistant linux-headers-virtual linux-image-virtual && sudo dpkg-reconfigure open-vm-tools
sudo mkdir /cake_fuzzer # 注: このパスはインストルメンテーション (パッチの 1 つ) にハードコードされているため固定です
sudo vmhgfs-fuse .host:/cake_fuzzer /cake_fuzzer -o allow_other -o uid=1000 -o max_write=61440
# max_write は奇妙なファイルコピーバグを修正します: https://github.com/vmware/open-vm-tools/issues/437#issuecomment-669663891
ls -l /cake_fuzzer # すべてがうまくいけば、ホスト OS の Cake Fuzzer ディレクトリの内容が表示されるはずです。ホスト OS での変更は VM 内に反映され、その逆も同様です。

簡単なテストのために MISP を準備します (MISP ターミナル内):

root@kitploit:~
CAKE=/var/www/MISP/app/Console/cake
SUDO='sudo -H -u www-data'
$CAKE userInit -q
$SUDO $CAKE Admin setSetting "Security.password_policy_length" 1
$SUDO $CAKE Admin setSetting "Security.password_policy_complexity" '/.*/'
$SUDO $CAKE Password [email protected] admin --override_password_change

最後に Cake Fuzzer の依存関係をインストールし、venv を準備します (MISP ターミナル内):

root@kitploit:~
source /cake_fuzzer/precheck.sh

脆弱性データベースへの貢献

Cake Fuzzer は /cake_fuzzer/strategies フォルダ内の脆弱性をスキャンします。

新しい攻撃を追加するには、strategies フォルダに新しい new-attack.json ファイルを追加する必要があります。 各脆弱性には 2 つの主要フィールドがあります: Scenarios と Scanners。Scenarios は攻撃ペイロードの基本フォームを保存します。一方、Scanners は応答、stdout、stderr、ログ、結果を検出する正規表現やフレーズを保持します。

Scenarios のペイロード作成

ペイロードを作成するには、まず脆弱性と、可能な限り少ないペイロードでそれを検出する方法を理解する必要があります。

  • シナリオを構築する際は、できるだけ汎用的なペイロードを考えてください。ただし、汎用的なペイロードほど誤検知が発生する可能性が高くなります。
  • シナリオでは、__cakefuzzer__new-attack_§CAKEFUZZER_PAYLOAD_GUID§__ のようなカナリア値を使用することをお勧めします。 カナリア値には固定文字列 (例: __cakefuzzer__new-attack_) と、ファザーによって動的に変更される動的識別子 (GUID 部分 §CAKEFUZZER_PAYLOAD_GUID§) が含まれます。最初のカナリア部分は、ペイロードが Scanners によって検出されることを保証するために使用されます。2 番目のカナリア部分 (GUID) は、ペイロードが実行されるたびに擬似ランダム値に変換されます。したがって、ペイロードがアプリケーションで使用されるパラメータに注入されるたびに、カナリアは __cakefuzzer__new-attack_8383938__ のように変更され、8383938 は他のすべての攻撃間で一意になります。

Scanners の検出と生成

スキャナーを作成するには、まず脆弱性がトリガーされたときにアプリケーションがどのように動作するかを理解する必要があります。利用できるスキャナーの種類には、response、sterr、logs、files、processes などがあります。各スキャナーは異なる目的を果たします。

たとえば、XSS のスキャナーを構築する場合、アプリケーションの HTML 応答内で脆弱性の兆候を探します。ResultOutputScanner スキャナーを使用してカナリア値とペイロードを探すことができます。一方、SQL インジェクションの脆弱性はエラーログを介して検出できます。その目的には LogFilesContentsScanner と ResultErrorsScanner を使用できます。

  • スキャナーを作成する際の重要なポイントの 1 つは、誤検知を捉えない正規表現またはフレーズを見つけることです。新しい脆弱性を貢献したい場合は、新しい脆弱性をスキャンに使用して誤検知がないことを確認する必要があります。
  • これらの Scanner 正規表現の最後の属性は、効率的な正規表現を生成することです。すべてのケースに一致する .* や .+ のような正規表現は避けてください。これらは非常に時間がかかり、スキャン全体の完了時間を大幅に増加させます。

効率性

前述のように、効率性は脆弱性の重要な部分です。Scenarios と Scanners はどちらもできるだけ少ない要素を含む必要があります。これは、Cake Fuzzer がすべてのシナリオを検出されたすべての可能なパスで複数回実行するためです。一方、すべての応答、新しいログエントリなどがスキャナーによって常にチェックされます。多くのパラメータ、パス、エンドポイントが検出されるため、ペイロードや Scanner を多く使用すると効率にかなり影響します。

特定の脆弱性の削除

特定の脆弱性クラスをスキャンしたくない場合は、指定された json ファイルを strategies フォルダから削除し、データベースをクリーンアップして、ファザーを再度実行します。

たとえば、アプリケーションを SQL インジェクション脆弱性に対してスキャンしたくない場合は、次の手順を実行します:

まず、準備された攻撃シナリオを削除します。これを達成するには、/cake_fuzzer/databases フォルダ内のすべてのファイルを削除します:

root@kitploit:~
rm  /cake_fuzzer/databases/*

その後、/cake_fuzzer/strategies から sqlinj.json ファイルを削除します:

root@kitploit:~
rm /cake_fuzzer/strategies/sqlinj.json

最後に、SQL インジェクション攻撃を実行せずにファザーとすべての cake_fuzzer 実行プロセスを再実行します。

PoC の使用方法

インストール

リポジトリのクローン

root@kitploit:~
git clone https://github.com/Zigrin-Security/CakeFuzzer /cake_fuzzer

警告 Cake Fuzzer が /cake_fuzzer 以外のパスにある場合、正しく動作しません。ファイルシステムのルートディレクトリの下、/root、/tmp などの隣に配置する必要があることに注意してください。

リポジトリのディレクトリに移動

root@kitploit:~
cd /cake_fuzzer

Venv

仮想環境に入っていない場合は、仮想環境に入ります:

root@kitploit:~
source /cake_fuzzer/precheck.sh

または

root@kitploit:~
source venv/bin/activate

設定

root@kitploit:~
cp config/config.example.ini config/config.ini

config/config.ini を設定します:

root@kitploit:~
WEBROOT_DIR="/var/www/html"         # テスト対象アプリケーションの `webroot` ディレクトリへのパス
CONCURRENT_QUEUES=5                            # [オプション] 同時に実行される攻撃の数
ONLY_PATHS_WITH_PREFIX="/"                      # [オプション] ファザーはこのプレフィックスで始まる攻撃のみを生成します
EXCLUDE_PATHS=""                                # [オプション] ファザーはこの正規表現に一致するすべてのパスをスキャンから除外します。空の場合はすべてのパスが処理されます
PAYLOAD_GUID_PHRASE="§CAKEFUZZER_PAYLOAD_GUID§" # [オプション] 攻撃の直前に一意のペイロード ID に置き換えられる内部キーワード
INSTRUMENTATION_INI="config/instrumentation_cake4.ini" # [オプション] アプリケーションのカスタムインストルメンテーションへのパス

実行

コンポーネントプロセスの開始

警告 Cake Fuzzer スキャン中、アプリケーションの多くの機能が制御不能な方法で複数回呼び出されます。これにより、アプリケーションが接続されている外部サービスへの接続や、外部サービスとのデータのプッシュ/プルが発生する可能性があります。機密性の高い外部サービスにアクセスできない、隔離された制御環境で Cake Fuzzer を実行することを強くお勧めします。

注 Cake Fuzzer はブラックホーリング、CSRF 保護、承認をバイパスします。すべての攻撃をデータベースの最初のユーザーの権限で送信します。このユーザーが最も高い権限を持つことをお勧めします。

アプリケーションはいくつかのコンポーネントで構成されています。

警告 すべての cake_fuzzer コマンドは root として実行する必要があります。

ファザーを開始する前に、ターゲットアプリケーションが完全にインストルメント化されていることを確認してください:

root@kitploit:~
python cake_fuzzer.py instrument check

未適用の変更がある場合は、以下で適用します:

root@kitploit:~
python cake_fuzzer.py instrument apply

cake fuzzer を実行するには、次の手順を実行します (少なくとも 3 つの別々のターミナルを使用することをお勧めします):

root@kitploit:~
# 最初のターミナル
python cake_fuzzer.py run fuzzer                  # 攻撃を生成し、QUEUE に追加し、新しい SCANNERS を登録します (その後終了)
python cake_fuzzer.py run periodic_monitors       # 監視を担当します (スキャン終了時に CTRL+C で停止して終了)

# 2 番目のターミナル
python cake_fuzzer.py run iteration_monitors     # 監視を担当します (スキャン終了時に CTRL+C で停止して終了)

# 3 番目のターミナル
python cake_fuzzer.py run attack_queue            # ATTACK QUEUE を開始します (スキャン終了時に CTRL+C で停止して終了)

# すべての攻撃が実行された後
python cake_fuzzer.py run registry                # 発見された脆弱性に基づいて `results.json` を生成します

注: 現在、ログ (またはターゲット Web アプリのその他の動的に変更されるファイル) の所有者を変更する可能性があるバグがあります。これにより、Web アプリケーションを通常どおり使用するときにエラーが発生したり、将来の Cake Fuzzer 実行で誤検知が発生したりする可能性があります。MISP の場合は、ファザーを実行するたびに以下を実行することをお勧めします:

root@kitploit:~
sudo chown -R www-data:www-data /var/www/MISP/app/tmp/logs/

スキャンが完了したら、インストルメンテーションを元に戻します:

root@kitploit:~
python cake_fuzzer.py instrument revert

再実行するには

cake fuzzer を再度実行するには、次の手順を実行します:

アプリケーションのログを削除します (例として、MISP ログは /var/www/MISP/app/tmp/logs に保存されます)

root@kitploit:~
rm  /var/www/MISP/app/tmp/logs/*

/cake_fuzzer/databases フォルダ内のすべてのファイルを削除します

root@kitploit:~
rm  /cake_fuzzer/databases/*

cake_fuzzer/results.json ファイルを削除します (以前のスキャン結果は事前に保存または確認することを忘れないでください)

root@kitploit:~
rm  /cake_fuzzer/results.json

最後に、3 つのターミナルで以前の実行プロセスを再度実行します

FAQ / トラブルシューティング

Attack Queue が何もしていないように見える

Attack queue は実行された攻撃をデータベース内で 'executed' としてマークするため、スイート全体を再度実行するにはデータベースを削除して攻撃を再度追加する必要があります。

データベースを削除する前に、モニターと攻撃キューを確実に停止してください。

root@kitploit:~
rm database.db*
python cake_fuzzer.py run fuzzer
python cake_fuzzer.py run attack_queue

ターゲットアプリがログファイルにログを保存しない

これはおそらく、以前のログファイルが root によって上書きされたためです。Cake Fuzzer は root として動作するため、新しいログファイルは root を所有者として作成されます。それらを削除します:

root@kitploit:~
chmod -R a+w /var/www/MISP/app/tmp/logs/*

再起動後に VM の /cake_fuzzer ディレクトリにファイルがない

Cake fuzzer をホストマシンと共有する VM を使用する場合、ホストディレクトリがゲスト VM に適切にアタッチされていることを確認してください:

root@kitploit:~
sudo vmhgfs-fuse .host:/cake_fuzzer /cake_fuzzer -o allow_other -o uid=1000

Cake Fuzzer 実行後にターゲットアプリがクラッシュする

Cake Fuzzer はマシンのルートディレクトリの下に配置する必要があり、ベースディレクトリ名は特に cake_fuzzer である必要があります。

root@kitploit:~
mv CakeFuzzer/ /cake_fuzzer

instrument apply 実行中の "Patch" エラー

インストルメンテーションプロセスは Cake Fuzzer 実行フローの一部です。instrument apply の後に instrument check を実行すると、両方のコマンドで同じ数の変更が発生するはずです。

"patch" エラーが発生した場合は、パッチを手動で適用し、問題のあるパッチファイルを削除できます。パッチは /cake_fuzzer/cakefuzzer/instrumentation/pathces ディレクトリにあります。

依存関係エラー

インストール中または実行中に Python の依存関係エラーが発生した場合は、仮想環境に切り替えた後、手動で依存関係をインストールします。

まず仮想環境に切り替えます

root@kitploit:~
source venv/bin/activate

その後、pip3 で依存関係をインストールできます。

root@kitploit:~
pip3 install -r requriments.txt

クレジット

インスピレーション

このプロジェクトは以下に触発されました:

  • Miguel Filipe Beatriz による「Automatic Detection of Vulnerabilities in Web Applications using Fuzzing」 – https://fenix.tecnico.ulisboa.pt/downloadFile/563345090413029/ExtendedAbstract-MEICA-67039-MiguelBeatriz.pdf
  • Krzysztof Zając による WPGarlic – https://github.com/kazet/wpgarlic

委託

このプロジェクトは以下によって委託されました: Cake Fuzzer ルクセンブルク軍

初期の貢献者

  • Dawid Czarnecki (オリジナル著者)
  • Adam Bobowski (リード開発者)
  • @Kattorne
  • Ulaş Deniz İlhan
ツールをダウンロード