Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CakeFuzzer — Cake Fuzzer — это проект, предназначенный для автоматического и непрерывного обнаружения уязвимостей в веб-приложениях, созданных на основе определенных фреймворков, с очень малым количеством ложных срабатываний. | Kitploit
Инструменты/GitHubGitHub/zigrin-security/cakefuzzer
Статический анализСканеры уязвимостейСканеры веб-уязвимостейДинамический анализ (песочница)Веб-безопасностьФаззингТестирование на Проникновение
GitHubzigrin-security/cakefuzzer

CakeFuzzer

Cake Fuzzer — это проект, предназначенный для автоматического и непрерывного обнаружения уязвимостей в веб-приложениях, созданных на основе определенных фреймворков, с очень малым количеством ложных срабатываний.

Репозиторий
10491 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

CakeFuzzer

Последний релиз: 1.0
Лицензия: GNU GPL v3.0

Cake Fuzzer — это проект, предназначенный для автоматического и непрерывного обнаружения уязвимостей в веб-приложениях, созданных на основе определённых фреймворков, с минимальным количеством ложных срабатываний. В настоящее время он реализован для поддержки фреймворка CakePHP.

Если вы хотите узнать больше о процессе исследования, ознакомьтесь с этой серией статей: Исследование кибербезопасности приложений CakePHP

🏆 Найденные ошибки 🏆

Ниже приведён список некоторых ошибок, обнаруженных Cake Fuzzer:

НазваниеКритичностьСсылка
Слепая SQL-инъекция в Cerebrate9.8 Критическийhttps://zigrin.com/advisories/cerebrate-blind-sql-injection/
SQL-инъекция в компоненте CRUD8.8 Высокийhttps://zigrin.com/advisories/misp-sql-injection-in-crud-component/
DOM-основанный XSS6.1 Среднийhttps://zigrin.com/advisories/misp-dom-based-xss/
Слепая SQL-инъекция в параметре order8.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/
SQL-инъекция на основе времени в /Logs/index7.2 Высокийhttps://zigrin.com/advisories/misp-time-based-sql-injection-in-logs-index/

Цели проекта

Типичные подходы к обнаружению уязвимостей в веб-приложениях с помощью автоматизированных инструментов:

  • Статическое тестирование безопасности приложений (SAST) – метод, при котором сканер обнаруживает уязвимости на основе исходного кода без запуска приложения.
  • Динамическое тестирование безопасности приложений (DAST) – метод, включающий сканер уязвимостей, который атакует работающее приложение и выявляет уязвимости на основе ответов приложения.

Оба метода имеют недостатки. SAST даёт высокий процент ложных срабатываний – находок, которые либо не являются уязвимостями, либо не могут быть эксплуатированы. DAST даёт меньше ложных срабатываний, но обнаруживает меньше уязвимостей из-за ограниченной информации. Также он требует определённых знаний о приложении и опыта в области безопасности от лица, запускающего сканирование. Часто для корректной работы требуется настройка сканирования для каждого приложения.

Проект Cake Fuzzer призван объединить преимущества обоих подходов и устранить указанные недостатки. Этот подход называется интерактивное тестирование безопасности приложений (IAST).

Цели проекта:

  • Создать автоматизированный процесс обнаружения уязвимостей в приложениях на основе CakePHP.
  • Отсутствие необходимости в знании приложения или его предварительной настройке.
  • Результат с минимальным количеством ложных срабатываний, близким к нулю.
  • Минимальные требования к знаниям в области безопасности для запуска сканера.

Примечание: Некоторые классы уязвимостей не являются целью 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). Он содержит предопределённый набор атак, которые случайным образом модифицируются перед выполнением. Благодаря знанию внутреннего устройства приложения через фреймворк CakePHP, атаки запускаются на всех возможных точках входа приложения.

Во время атаки Cake Fuzzer отслеживает различные аспекты приложения и базовой системы, такие как:

  • сетевое подключение,
  • файловая система,
  • ответ приложения,
  • журналы ошибок.

Эти источники информации позволяют Cake Fuzzer выявлять больше уязвимостей и сообщать о них с более высокой уверенностью.

Требования

  • Установленное, настроенное и работающее веб-приложение CakePHP. Примеры веб-приложений CakePHP: MISP (https://github.com/MISP/MISP), Cerebrate (https://github.com/cerebrate-project/cerebrate)
  • PHP CLI

Среда разработки с использованием MISP на виртуальной машине VMWare

В следующем разделе описаны шаги по настройке среды разработки Cake Fuzzer, где целевым приложением является устаревший MISP v2.4.146, уязвимый к CVE-2021-41326.

Требования

  • VMWare Workstation (можно использовать другие платформы виртуализации, если они поддерживают общие/монтируемые каталоги между хостом и гостевой ОС)

Шаги

Выполните следующие команды на вашей хост-операционной системе для загрузки устаревшей виртуальной машины MISP:

root@kitploit:~
cd ~/Downloads # Или любое другое место, где вы хотите хранить VM 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

Выполните следующие действия в GUI VMWare, чтобы подготовить общий доступ к файлам Cake Fuzzer между хост-ОС и MISP:

  1. Откройте виртуальную машину в VMWare и перейдите в > Settings > Options > Shared Folders > Add.
  2. Подключите каталог, где вы храните Cake Fuzzer на хост-ОС, и назовите его cake_fuzzer на виртуальной машине.
  3. Запустите виртуальную машину.
  4. Запомните IP-адрес, отображаемый в окне VMWare после полной загрузки MISP.

Выполните следующие команды на хост-ОС (замените 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 # Примечание: этот путь фиксирован, так как он жёстко прописан в инструментации (один из патчей)
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 и подготовьте виртуальное окружение (в терминале MISP):

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

Вклад в базу данных уязвимостей

Cake Fuzzer сканирует уязвимости, которые находятся внутри папки /cake_fuzzer/strategies.

Чтобы добавить новую атаку, необходимо добавить новый файл new-attack.json в папку strategies. Каждая уязвимость содержит 2 основных поля: Scenarios и Scanners. В Scenarios хранятся базовые формы с полезными нагрузками для атаки. В Scanners, с другой стороны, находятся регулярные выражения или фразы для обнаружения в ответе, stdout, stderr, логах и результатах.

Создание полезной нагрузки для Scenarios

Чтобы создать полезную нагрузку, сначала нужно понимать уязвимость и как её обнаружить с минимальным количеством полезных нагрузок.

  • При создании сценария старайтесь сделать полезную нагрузку максимально общей. Однако чем более общей будет нагрузка, тем выше вероятность ложных срабатываний.

  • Предпочтительно использовать канареечное значение, например __cakefuzzer__new-attack_§CAKEFUZZER_PAYLOAD_GUID§__ в ваших сценариях. Канареечное значение содержит фиксированную строку (например: __cakefuzzer__new-attack_) и динамический идентификатор, который будет динамически изменяться фаззером (часть GUID §CAKEFUZZER_PAYLOAD_GUID§). Первая часть канарейки используется для того, чтобы полезная нагрузка была обнаружена Scanners. Вторая часть, GUID, преобразуется в псевдослучайное значение при каждом выполнении вашей полезной нагрузки. Таким образом, когда ваша нагрузка будет внедрена в параметр, используемый приложением, канарейка изменится на что-то вроде: __cakefuzzer__new-attack_8383938__, где 8383938 уникально для всех остальных атак.

Обнаружение и создание Scanners

Чтобы создать сканер, сначала нужно понять, как приложение может вести себя при срабатывании уязвимости. Существует несколько типов сканеров: response, stderr, logs, files, processes. Каждый сканер служит своей цели.

Например, при создании сканера для XSS вы будете искать признаки уязвимости в HTML-ответе приложения. Вы можете использовать сканер ResultOutputScanner для поиска канареечного значения и полезной нагрузки. С другой стороны, уязвимости SQL-инъекций могут быть обнаружены через логи ошибок. Для этой цели можно использовать LogFilesContentsScanner и ResultErrorsScanner.

  • Один из важных моментов при создании сканера — найти регулярное выражение или фразу, которые не ловят ложные срабатывания. Если вы хотите добавить новую уязвимость, убедитесь, что при её использовании в сканировании не возникает ложных срабатываний.
  • Последний атрибут этих регулярных выражений Scanner — создание эффективного regex. Избегайте использования regex, которые соответствуют всем случаям, например .* или .+. Они очень затратны по времени и значительно увеличивают время, необходимое для завершения всего сканирования.

Эффективность

Как упоминалось ранее, эффективность является важной частью уязвимостей. Как Scenarios, так и Scanners должны содержать как можно меньше элементов. Это связано с тем, что Cake Fuzzer выполняет каждый сценарий во всех возможных обнаруженных путях многократно. С другой стороны, все ответы, новые записи в логах и т.д. постоянно проверяются Scanners. Будет обнаружено множество параметров, путей и конечных точек, поэтому использование большего количества полезных нагрузок или Scanner'ов существенно влияет на эффективность.

Удаление конкретной уязвимости

Если вы не хотите сканировать определённый класс уязвимостей, удалите соответствующий JSON-файл из папки strategies, очистите базу данных и запустите фаззер снова.

Например, если вы не хотите сканировать ваше приложение на наличие SQL-инъекций, выполните следующие шаги:

Сначала удалите уже подготовленные сценарии атак. Для этого удалите все файлы внутри папки /cake_fuzzer/databases:

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

После этого удалите файл sqlinj.json из папки /cake_fuzzer/strategies:

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

Наконец, снова запустите фаззер и все процессы 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

Виртуальное окружение

Войдите в виртуальное окружение, если вы ещё не в нём:

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§"  # [Опционально] Внутреннее ключевое слово, которое заменяется перед атакой уникальным идентификатором полезной нагрузки
INSTRUMENTATION_INI="config/instrumentation_cake4.ini"  # [Опционально] Путь к пользовательским инструментациям приложения.

Выполнение

Запуск процессов компонентов

Предупреждение Во время сканирования Cake Fuzzer множество функций вашего приложения будут вызываться неконтролируемым образом многократно. Это может привести к установке соединений с внешними сервисами, к которым подключено ваше приложение, и к получению или отправке данных от/в них. Настоятельно рекомендуется запускать Cake Fuzzer в изолированной контролируемой среде без доступа к конфиденциальным внешним сервисам.

Примечание Cake Fuzzer обходит защиту blackholing, 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                  # Генерирует атаки, добавляет их в очередь и регистрирует новые сканеры (затем завершается)
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` на основе найденных уязвимостей

Примечание: существует ошибка, которая может изменить владельца логов (или любых других динамически изменяемых файлов целевого веб-приложения). Это может вызвать ошибки при нормальном использовании веб-приложения или даже ложноотрицательные результаты при последующих выполнениях 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 терминалами.

Часто задаваемые вопросы / Устранение неполадок

Очередь атак, похоже, ничего не делает

Очередь атак помечает выполненные атаки в базе данных как 'выполненные', поэтому для повторного запуска всего набора необходимо удалить базу данных и снова добавить атаки.

Убедитесь, что остановили monitors и очереди атак перед удалением базы данных.

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 должен находиться в корневом каталоге машины, и имя базового каталога должно быть именно cake_fuzzer.

root@kitploit:~
mv CakeFuzzer/ /cake_fuzzer

Ошибки "Patch" при выполнении instrument apply

Процесс инструментации является частью потока выполнения Cake Fuzzer. Когда вы запускаете instrument apply с последующим instrument check, обе эти команды должны приводить к одинаковому количеству изменений.

Если вы получаете какую-либо ошибку "patch", вы можете применить патчи вручную и удалить проблемный файл патча. Патчи находятся в каталоге /cake_fuzzer/cakefuzzer/instrumentation/patches.

Ошибки зависимостей

Если при установке или запуске возникает ошибка зависимости Python, вручную установите зависимости после переключения на виртуальное окружение.

Сначала переключитесь на виртуальное окружение:

root@kitploit:~
source venv/bin/activate

После этого вы можете установить зависимости с помощью pip3:

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

Авторы

Вдохновение

Этот проект был вдохновлён:

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

Заказчик

Этот проект был выполнен по заказу: Вооружённые силы Люксембурга

Первоначальные участники

  • Dawid Czarnecki (автор оригинала)
  • Adam Bobowski (ведущий разработчик)
  • @Kattorne
  • Ulaş Deniz İlhan
Скачать инструмент