Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CakeFuzzer — Cake Fuzzer 是一个项目,旨在帮助自动且持续地发现基于特定框架创建的 Web 应用程序中的漏洞,并且误报率非常有限。 | Kitploit
工具/GitHubGitHub/zigrin-security/cakefuzzer
静态分析漏洞扫描器Web漏洞扫描器动态分析 (沙盒)Web安全模糊测试渗透测试
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 严重https://zigrin.com/advisories/cerebrate-blind-sql-injection/
CRUD 组件中的 SQL 注入8.8 高https://zigrin.com/advisories/misp-sql-injection-in-crud-component/
基于 DOM 的 XSS6.1 中https://zigrin.com/advisories/misp-dom-based-xss/
order 参数中的盲 SQL 注入8.8 高https://zigrin.com/advisories/misp-blind-sql-injection-in-order-parameter/
数组输入参数中的盲 SQL 注入8.8 高https://zigrin.com/advisories/misp-blind-sql-injection-in-array-input-parameters/
/Logs/index 中的基于时间的 SQL 注入7.2 高https://zigrin.com/advisories/misp-time-based-sql-injection-in-logs-index/

项目目标

使用自动化工具发现 Web 应用程序漏洞的典型方法有:

  • 静态应用程序安全测试(SAST)——扫描器基于源代码检测漏洞,无需运行应用程序
  • 动态应用程序安全测试(DAST)——漏洞扫描器攻击正在运行的应用程序,并根据应用程序响应识别漏洞

两种方法都有缺点。SAST 导致高比例的假阳性——即发现的结果要么不是漏洞,要么是不可利用的漏洞。DAST 产生的假阳性较少,但由于信息有限,发现的漏洞也更少。它还需要对应用程序有一定了解,并且运行扫描的人员需要具备安全背景。这通常需要为每个应用程序进行自定义扫描配置才能正常工作。

Cake Fuzzer 项目旨在结合两种方法的优点,消除上述缺点。这种方法称为交互式应用程序安全测试(IAST)。

项目目标如下:

  • 创建基于 CakePHP 框架的应用程序漏洞自动发现流程
  • 无需了解应用程序知识或对 Web 应用程序进行预配置
  • 结果假阳性数量极少或接近 0
  • 运行扫描所需的安全知识极少

注意:某些漏洞类别不是 Cake Fuzzer 的目标,因此 Cake Fuzzer 无法检测它们。例如业务逻辑漏洞和访问控制问题。

架构

概览

Cake Fuzzer 架构概览

Drawio:Cake Fuzzer 架构

Cake Fuzzer 由 3 个主要(相对独立)服务器组成,它们共同实现对 CakePHP 应用程序的动态漏洞测试。

  • AttackQueue - 调度和执行攻击场景。
  • Monitors - 监控给定实体(执行器输出 / 文件内容 / 进程 / 错误)。
  • Registry - 存储和分类已发现的漏洞。 它们独立运行。AttackQueue 可以向 monitors 添加新的扫描器,Monitors 可以调度新的攻击(例如,基于已发现的漏洞进一步攻击应用程序)。

其他组件包括:

  • Fuzzer - 定义攻击并将攻击调度到 AttackQueue(作为入口)
  • Configuration - 设置应用程序相关信息(例如,CakePHP 应用程序路径)
  • Instrumentation - 基于配置定义对应用程序/操作系统的更改,为攻击做准备。

方法

Cake Fuzzer 基于交互式应用程序安全测试(IAST)的概念。它包含一组预定义的攻击,这些攻击在执行前会随机修改。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 搭建开发环境

以下部分描述了搭建 Cake Fuzzer 开发环境的步骤,其中目标是存在漏洞的旧版 MISP v2.4.146,该版本存在 CVE-2021-41326。

要求

  • VMWare Workstation(其他虚拟化平台只要支持主机和客户机操作系统之间的目录共享/挂载即可)

步骤

在主操作系统上运行以下命令,下载旧版 MISP 虚拟机:

root@kitploit:~
cd ~/Downloads # 或者您希望存储 MISP 虚拟机的其他位置
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 中执行以下操作,以准备在主机操作系统和 MISP 之间共享 Cake Fuzzer 文件:

  1. 在 VMWare 中打开虚拟机,进入 > 设置 > 选项 > 共享文件夹 > 添加。
  2. 挂载您主机操作系统上存放 Cake Fuzzer 的目录,并在虚拟机中将其命名为 cake_fuzzer。
  3. 启动虚拟机。
  4. 记下 MISP 完全启动后在 VMWare 窗口中显示的 IP 地址。

在主机操作系统上运行以下命令(将 MISP_IP_ADDRESS 替换为之前记下的 IP 地址):

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

通过 SSH 登录到 MISP 后,在 MISP 终端中运行以下命令,完成 Cake Fuzzer 文件在主机和 MISP 之间共享的设置:

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 # 注意:此路径是固定的,因为在 instrumentation(其中一个补丁)中已硬编码
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 # 如果一切正常,您应该能看到主机操作系统上 Cake Fuzzer 目录的内容。主机操作系统上的任何更改都会反映到虚拟机中,反之亦然。

为简单测试准备 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 文件。 每个漏洞包含两个主要字段:Scenarios 和 Scanners。Scenarios 存储攻击载荷的基础形式。而 Scanners 用于检测响应、标准输出、标准错误、日志和结果中的正则表达式或短语。

为 Scenarios 创建载荷

要创建载荷,首先需要了解漏洞以及如何用尽可能少的载荷检测它。

  • 在设计场景时,您应该尽可能考虑最通用的载荷。然而,载荷越通用,产生假阳性的可能性就越大。

  • 最好在场景中使用金丝雀值,例如 __cakefuzzer__new-attack_§CAKEFUZZER_PAYLOAD_GUID§__。 金丝雀值包含一个固定字符串(例如 __cakefuzzer__new-attack_)和一个动态标识符,该标识符将由 fuzzer 动态更改(GUID 部分 §CAKEFUZZER_PAYLOAD_GUID§)。金丝雀的第一部分用于确保载荷能被 Scanners 检测到。第二部分(GUID)在每次执行载荷时会被转换为伪随机值。因此,每当您的载荷注入到应用程序使用的参数中时,金丝雀将变为类似 __cakefuzzer__new-attack_8383938__ 的内容,其中 8383938 在所有攻击中是唯一的。

检测和生成 Scanners

要创建扫描器,首先需要了解触发漏洞时应用程序可能的行为。有几种扫描器类型可供使用,例如 response(响应)、sterr(标准错误)、logs(日志)、files(文件)和 processes(进程)。每种扫描器用于不同的目的。

例如,当您为 XSS 构建扫描器时,您会在应用程序的 HTML 响应中寻找漏洞的迹象。您可以使用 ResultOutputScanner 扫描器来查找金丝雀值和载荷。另一方面,SQL 注入漏洞可以通过错误日志检测。为此,您可以使用 LogFilesContentsScanner 和 ResultErrorsScanner。

  • 创建扫描器的一个重要点是找到一个不会捕获假阳性值的正则表达式或短语。如果您想贡献一个新的漏洞,您应该通过使用新漏洞进行扫描,确保没有假阳性。
  • 这些 Scanner 正则表达式的最后一个属性是生成高效的正则表达式。避免使用匹配所有情况的 .* 或 .+ 正则表达式。它们非常耗时,并且会大大增加完成整个扫描所需的时间。

效率

如前所述,效率是漏洞的重要组成部分。Scenarios 和 Scanners 都应包含尽可能少的元素。这是因为 Cake Fuzzer 会在所有可能检测到的路径上多次执行每个场景。另一方面,所有响应、新的日志条目等都会被扫描器持续检查。由于会检测到大量参数、路径和端点,因此使用更多的载荷或 Scanner 会显著影响效率。

移除特定漏洞

如果您不想扫描特定的漏洞类别,请从 strategies 文件夹中删除相应的 json 文件,清理数据库,然后重新运行 fuzzer。

例如,如果您不想扫描应用程序的 SQL 注入漏洞,请执行以下步骤:

首先,删除已准备好的攻击场景。为此,删除 /cake_fuzzer/databases 文件夹中的所有文件:

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

之后,从 /cake_fuzzer/strategies 文件夹中删除 sqlinj.json 文件:

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

最后,重新运行 fuzzer 和所有 cake_fuzzer 运行进程,不会执行任何 SQL 注入攻击。

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="/"                      # [可选] Fuzzer 仅生成以此前缀开头的攻击路径
EXCLUDE_PATHS=""                                # [可选] Fuzzer 将排除所有匹配此正则表达式的路径。如果为空,则处理所有路径
PAYLOAD_GUID_PHRASE="§CAKEFUZZER_PAYLOAD_GUID§" # [可选] 内部关键字,在攻击前会被替换为唯一的载荷 ID
INSTRUMENTATION_INI="config/instrumentation_cake4.ini" # [可选] 应用程序自定义 instrumentation 的路径。

执行

启动组件进程

警告 在 Cake Fuzzer 扫描期间,应用程序的多个功能会以不受控的方式多次调用。这可能导致向应用程序连接的外部服务发出连接,并从这些服务拉取或推送数据。强烈建议在隔离的受控环境中运行 Cake Fuzzer,避免访问敏感的外部服务。

注意 Cake Fuzzer 会绕过黑名单(blackholing)、CSRF 保护和授权。它将以数据库中第一个用户的权限发送所有攻击。建议该用户拥有最高权限。

该应用程序由多个组件组成。

警告 所有 cake_fuzzer 命令必须以 root 身份执行。

在启动 fuzzer 之前,请确保您的目标应用程序已完全 instrument(插桩):

root@kitploit:~
python cake_fuzzer.py instrument check

如果有未应用的更改,请应用它们:

root@kitploit:~
python cake_fuzzer.py instrument apply

要运行 Cake Fuzzer,请执行以下操作(建议至少使用三个独立的终端):

root@kitploit:~
# 第一个终端
python cake_fuzzer.py run fuzzer                  # 生成攻击,将其添加到队列并注册新的扫描器(然后退出)
python cake_fuzzer.py run periodic_monitors       # 负责周期性监控(使用 CTRL+C 停止并在扫描结束时退出)

# 第二个终端
python cake_fuzzer.py run iteration_monitors     # 负责迭代监控(使用 CTRL+C 停止并在扫描结束时退出)

# 第三个终端
python cake_fuzzer.py run attack_queue            # 启动攻击队列(使用 CTRL+C 停止并在扫描结束时退出)

# 所有攻击执行完毕后
python cake_fuzzer.py run registry                # 根据发现的漏洞生成 `results.json`

注意:目前有一个 bug 可能会更改目标 Web 应用程序的日志(或其他动态更改的文件)的所有者。这可能导致正常使用 Web 应用程序时出现错误,甚至导致将来执行 Cake Fuzzer 时出现假阴性。对于 MISP,我们建议每次执行 fuzzer 后运行以下命令:

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

扫描完成后,撤销 instrumentation(插桩):

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

最后,使用三个终端按照之前的运行流程再次执行

常见问题 / 故障排除

Attack Queue 似乎没有做任何事情

攻击队列会在数据库中将已执行的攻击标记为“已执行”,因此要再次运行整个套件,您需要删除数据库并重新添加攻击。

确保在删除数据库前终止 monitors 和 attack queues。

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/*

重启后虚拟机中的 /cake_fuzzer 目录没有文件

如果您使用虚拟机并通过共享目录将 Cake Fuzzer 与主机连接,请确保主机目录已正确挂载到客户机虚拟机:

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

运行 Cake Fuzzer 后目标应用程序崩溃

Cake Fuzzer 必须放在机器的根目录下,并且基本目录名称必须 specifically 为 cake_fuzzer。

root@kitploit:~
mv CakeFuzzer/ /cake_fuzzer

运行 instrument apply 时出现“Patch”错误

Instrumentation(插桩)过程是 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 的《使用模糊测试自动检测 Web 应用程序漏洞》 – 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
下载工具