Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

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

CakeFuzzer

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

リポジトリを見る
1049211年前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 をダウンロードします:

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 アドレスに置き換えてください):

ssh-copy-id misp@MISP_IP_ADDRESS
ssh misp@MISP_IP_ADDRESS

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

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 ターミナル内):

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 ターミナル内):

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 フォルダ内のすべてのファイルを削除します:

rm  /cake_fuzzer/databases/*

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

rm /cake_fuzzer/strategies/sqlinj.json

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

PoC の使用方法

インストール

リポジトリのクローン

git clone https://github.com/Zigrin-Security/CakeFuzzer /cake_fuzzer

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

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

cd /cake_fuzzer
ツールをダウンロード