Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CakeFuzzer — Cake Fuzzer es un proyecto diseñado para ayudar a descubrir vulnerabilidades de forma automática y continua en aplicaciones web creadas basadas en marcos específicos, con un número muy limitado de falsos positivos. | Kitploit
Herramientas/GitHubGitHub/zigrin-security/cakefuzzer
Análisis EstáticoEscáneres de VulnerabilidadesEscáneres de Vulnerabilidades WebAnálisis Dinámico (Sandboxing)Seguridad WebFuzzingPruebas de Penetración
GitHubzigrin-security/cakefuzzer

CakeFuzzer

Cake Fuzzer es un proyecto diseñado para ayudar a descubrir vulnerabilidades de forma automática y continua en aplicaciones web creadas basadas en marcos específicos, con un número muy limitado de falsos positivos.

Ver Repositorio
1049hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

CakeFuzzer

Última versión: 1.0
Licencia: GNU GPL v3.0

Cake Fuzzer es un proyecto diseñado para ayudar a descubrir vulnerabilidades de forma automática y continua en aplicaciones web creadas sobre frameworks específicos, con una tasa muy limitada de falsos positivos. Actualmente está implementado para dar soporte al framework Cake PHP.

Si deseas conocer más sobre el proceso de investigación, consulta esta serie de artículos: Investigación en Ciberseguridad de Aplicaciones CakePHP

🏆 Errores reportados 🏆

A continuación se muestra una lista de algunos de los errores descubiertos por Cake Fuzzer:

TítuloSeveridadEnlace
Inyección SQL ciega en Cerebrate9.8 Críticohttps://zigrin.com/advisories/cerebrate-blind-sql-injection/
Inyección SQL en el componente CRUD8.8 Altohttps://zigrin.com/advisories/misp-sql-injection-in-crud-component/
XSS basado en DOM6.1 Mediohttps://zigrin.com/advisories/misp-dom-based-xss/
Inyección SQL ciega en el parámetro order8.8 Altohttps://zigrin.com/advisories/misp-blind-sql-injection-in-order-parameter/
Inyección SQL ciega en parámetros de entrada tipo array8.8 Altohttps://zigrin.com/advisories/misp-blind-sql-injection-in-array-input-parameters/
Inyección SQL basada en tiempo en /Logs/index7.2 Altohttps://zigrin.com/advisories/misp-time-based-sql-injection-in-logs-index/

Objetivos del proyecto

Los enfoques típicos para descubrir vulnerabilidades mediante herramientas automatizadas en aplicaciones web son:

  • Static Application Security Testing (SAST) – Método en el que un escáner detecta vulnerabilidades basándose en el código fuente sin ejecutar la aplicación.
  • Dynamic Application Security Testing (DAST) – Método que incorpora un escáner de vulnerabilidades que ataca la aplicación en ejecución e identifica las vulnerabilidades en función de las respuestas de la aplicación.

Ambos métodos tienen desventajas. SAST produce un alto porcentaje de falsos positivos: hallazgos que no son vulnerabilidades o no son explotables. DAST produce menos falsos positivos, pero descubre menos vulnerabilidades debido a la información limitada. También requiere cierto conocimiento de la aplicación y experiencia en seguridad por parte de la persona que ejecuta el escaneo, lo que a menudo implica una configuración de escaneo personalizada por aplicación para que funcione correctamente.

El proyecto Cake Fuzzer pretende combinar las ventajas de ambos enfoques y eliminar las desventajas mencionadas. Este enfoque se denomina Interactive Application Security Testing (IAST).

Los objetivos del proyecto son:

  • Crear un proceso automatizado para descubrir vulnerabilidades en aplicaciones basadas en el framework CakePHP.
  • No requerir conocimiento previo de la aplicación ni preconfiguración de la misma.
  • Obtener resultados con una cantidad mínima o cercana a 0 de falsos positivos.
  • Requerir conocimientos mínimos de seguridad para ejecutar el escáner.

Nota: Algunas clases de vulnerabilidades no son el objetivo de Cake Fuzzer, por lo que no podrán ser detectadas. Ejemplos de estas clases son las vulnerabilidades de lógica de negocio y los problemas de control de acceso.

Arquitectura

Vista general

Vista general de la arquitectura de Cake Fuzzer

Drawio: Arquitectura de Cake Fuzzer

Cake Fuzzer consta de 3 servidores principales (bastante independientes) que en conjunto permiten realizar pruebas dinámicas de vulnerabilidades en aplicaciones CakePHP.

  • AttackQueue - Programación y ejecución de escenarios de ataque.
  • Monitors - Monitoreo de entidades dadas (salidas del ejecutor / contenidos de archivos / procesos / errores).
  • Registry - Almacenamiento y clasificación de las vulnerabilidades encontradas. Funcionan de forma independiente. AttackQueue puede agregar nuevos escáneres a los Monitors, y los Monitors pueden programar nuevos ataques (por ejemplo, basándose en una vulnerabilidad encontrada para atacar más a fondo la aplicación).

Otros componentes incluyen:

  • Fuzzer - define y programa ataques en AttackQueue (sirve como punto de entrada)
  • Configuration - configura la información dependiente de la aplicación (por ejemplo, la ruta a la aplicación CakePHP).
  • Instrumentation - basándose en la configuración, define los cambios en la aplicación / SO para preparar el terreno para los ataques.

Enfoque

Cake Fuzzer se basa en el concepto de Interactive Application Security Testing (IAST). Contiene un conjunto predefinido de ataques que se modifican aleatoriamente antes de su ejecución. Cake Fuzzer tiene conocimiento de los aspectos internos de la aplicación gracias al framework Cake PHP, por lo que los ataques se lanzarán sobre todos los puntos de entrada posibles de la aplicación.

Durante el ataque, Cake Fuzzer monitorea varios aspectos de la aplicación y del sistema subyacente, como:

  • conexión de red,
  • sistema de archivos,
  • respuesta de la aplicación,
  • registros de errores.

Estas fuentes de información permiten a Cake Fuzzer identificar más vulnerabilidades y reportarlas con mayor certeza.

Requisitos

  • Aplicación web CakePHP instalada, configurada y en ejecución. Ejemplos de aplicaciones web CakePHP: MISP (https://github.com/MISP/MISP), Cerebrate (https://github.com/cerebrate-project/cerebrate)
  • PHP CLI

Entorno de desarrollo usando MISP en máquina virtual VMWare

La siguiente sección describe los pasos para configurar un entorno de desarrollo de Cake Fuzzer donde el objetivo es una versión antigua de MISP v2.4.146, vulnerable a CVE-2021-41326.

Requisitos

  • VMWare Workstation (se puede usar otra plataforma de virtualización siempre que admita compartir/montar directorios entre el sistema anfitrión y el invitado).

Pasos

Ejecuta los siguientes comandos en tu sistema operativo anfitrión para descargar una MV de MISP desactualizada:

root@kitploit:~
cd ~/Downloads # O donde quieras almacenar la MV de 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

Realiza las siguientes acciones en la interfaz gráfica de VMWare para preparar el uso compartido de los archivos de Cake Fuzzer entre tu SO anfitrión y MISP:

  1. Abre la máquina virtual en VMWare y ve a > Configuración > Opciones > Carpetas compartidas > Agregar.
  2. Monta el directorio donde tienes Cake Fuzzer en tu SO anfitrión y nómbralo cake_fuzzer en la MV.
  3. Inicia la MV.
  4. Anota la dirección IP que se muestra en la ventana de VMWare después de que MISP arranque completamente.

Ejecuta los siguientes comandos en tu SO anfitrión (reemplaza MISP_IP_ADDRESS con la dirección IP anotada anteriormente):

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

Una vez que te hayas conectado por SSH a MISP, ejecuta los siguientes comandos (en la terminal de MISP) para finalizar la configuración del uso compartido de archivos de Cake Fuzzer entre el SO anfitrión y 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 # Nota: Esta ruta es fija ya que está codificada en la instrumentación (uno de los parches)
sudo vmhgfs-fuse .host:/cake_fuzzer /cake_fuzzer -o allow_other -o uid=1000 -o max_write=61440
# max_write corrige un error extraño de copia de archivos: https://github.com/vmware/open-vm-tools/issues/437#issuecomment-669663891
ls -l /cake_fuzzer # Si todo salió bien, deberías ver el contenido del directorio de Cake Fuzzer desde tu SO anfitrión. Cualquier cambio en tu SO anfitrión se reflejará dentro de la MV y viceversa.

Prepara MISP para pruebas sencillas (en la terminal de 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

Finalmente, instala las dependencias de Cake Fuzzer y prepara el entorno virtual (en la terminal de MISP):

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

Contribución a la base de datos de vulnerabilidades

Cake Fuzzer escanea en busca de vulnerabilidades que se encuentran dentro de la carpeta /cake_fuzzer/strategies.

Para agregar un nuevo ataque, debemos añadir un nuevo archivo new-attack.json a la carpeta strategies. Cada vulnerabilidad contiene 2 campos principales: Scenarios y Scanners. En Scenarios se almacenan las formas base de las cargas de ataque (payloads). Por otro lado, los Scanners detectan expresiones regulares o frases para la respuesta, salida estándar, salida de error, registros y resultados.

Creación de payloads para Scenarios

Para crear un payload, primero debes comprender la vulnerabilidad y cómo detectarla con la menor cantidad posible de payloads.

  • Al construir el escenario, debes pensar en un payload lo más genérico posible. Sin embargo, cuanto más genérico sea el payload, mayores serán las posibilidades de que produzca falsos positivos.

  • Es preferible usar un valor "canary" como __cakefuzzer__new-attack_§CAKEFUZZER_PAYLOAD_GUID§__ en tus escenarios. El valor canary contiene una cadena fija (por ejemplo, __cakefuzzer__new-attack_) y un identificador dinámico que será cambiado dinámicamente por el fuzzer (la parte GUID §CAKEFUZZER_PAYLOAD_GUID§). La primera parte del canary se utiliza para asegurar que el payload sea detectado por los Scanners. La segunda parte, el GUID, se traduce a un valor pseudoaleatorio en cada ejecución de tu payload. Así, cuando tu payload se inyecte en un parámetro usado por la aplicación, el canary cambiará a algo como: __cakefuzzer__new-attack_8383938__, donde 8383938 es único entre todos los demás ataques.

Detección y generación de Scanners

Para crear un scanner, primero debes entender cómo podría comportarse la aplicación cuando se activa la vulnerabilidad. Existen varios tipos de scanners que puedes usar, como response, stderr, logs, files y processes. Cada scanner sirve para un propósito diferente.

Por ejemplo, cuando construyes un scanner para un XSS, buscarás indicios de la vulnerabilidad en la respuesta HTML de la aplicación. Puedes usar el scanner ResultOutputScanner para buscar el valor canary y el payload. Por otro lado, las vulnerabilidades de inyección SQL podrían detectarse a través de los registros de errores. Para ello, puedes usar LogFilesContentsScanner y ResultErrorsScanner.

  • Uno de los puntos importantes al crear un scanner es encontrar una expresión regular o una frase que no capture valores falsos positivos. Si deseas contribuir con una nueva vulnerabilidad, debes asegurarte de que no haya falsos positivos al usar la nueva vulnerabilidad en los escaneos.
  • El último atributo de estas expresiones regulares de Scanner es generar una regex eficiente. Evita usar regex que coincidan con todos los casos como .* o .+. Son muy lentas y aumentan drásticamente el tiempo necesario para completar todo el escaneo.

Eficiencia

Como se mencionó, la eficiencia es una parte importante de las vulnerabilidades. Tanto Scenarios como Scanners deben incluir la menor cantidad posible de elementos. Esto se debe a que Cake Fuzzer ejecuta cada escenario en todas las rutas detectadas posibles múltiples veces. Por otro lado, todas las respuestas, nuevas entradas de registro, etc., son constantemente revisadas por los Scanners. Se detectarán muchos parámetros, rutas y endpoints, por lo que usar más payloads o Scanner afecta considerablemente la eficiencia.

Eliminación de una vulnerabilidad específica

Si no deseas escanear una clase de vulnerabilidad específica, elimina el archivo json correspondiente de la carpeta strategies, limpia la base de datos y vuelve a ejecutar el fuzzer.

Por ejemplo, si no deseas escanear tu aplicación en busca de vulnerabilidades de inyección SQL, sigue los siguientes pasos:

Primero, elimina los escenarios de ataque ya preparados. Para ello, borra todos los archivos dentro de la carpeta /cake_fuzzer/databases:

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

Después, elimina el archivo sqlinj.json de la carpeta /cake_fuzzer/strategies:

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

Finalmente, vuelve a ejecutar el fuzzer y todos los procesos de cake_fuzzer en ejecución sin que se ejecute ningún ataque de inyección SQL.

Uso (PoC)

Instalación

Clonar el repositorio

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

Advertencia Cake Fuzzer no funcionará correctamente si se encuentra en una ruta diferente a /cake_fuzzer. Ten en cuenta que debe colocarse en el directorio raíz del sistema de archivos, junto a /root, /tmp, etc.

Cambiar al directorio del repositorio

root@kitploit:~
cd /cake_fuzzer

Entorno virtual

Ingresa al entorno virtual si aún no lo has hecho:

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

O

root@kitploit:~
source venv/bin/activate

Configuración

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

Configura config/config.ini:

root@kitploit:~
WEBROOT_DIR="/var/www/html"         # Ruta al directorio `webroot` de la aplicación bajo prueba
CONCURRENT_QUEUES=5                            # [Opcional] Número de ataques ejecutados concurrentemente
ONLY_PATHS_WITH_PREFIX="/"                      # [Opcional] El fuzzer generará solo ataques para rutas que comiencen con este prefijo
EXCLUDE_PATHS=""                                # [Opcional] El fuzzer excluirá del escaneo todas las rutas que coincidan con esta expresión regular. Si está vacío, se procesarán todas las rutas
PAYLOAD_GUID_PHRASE="§CAKEFUZZER_PAYLOAD_GUID§" # [Opcional] Palabra clave interna que se sustituye justo antes del ataque con un ID de payload único
INSTRUMENTATION_INI="config/instrumentation_cake4.ini" # [Opcional] Ruta a instrumentaciones personalizadas de la aplicación.

Ejecución

Iniciar los procesos de los componentes

Advertencia Durante el escaneo de Cake Fuzzer, se invocarán múltiples funcionalidades de tu aplicación de forma no controlada en varias ocasiones. Esto puede provocar conexiones a servicios externos a los que tu aplicación esté conectada, y la obtención o envío de datos hacia/desde ellos. Se recomienda encarecidamente ejecutar Cake Fuzzer en un entorno aislado y controlado, sin acceso a servicios externos sensibles.

Nota Cake Fuzzer evita el blackholing, las protecciones CSRF y la autorización. Envía todos los ataques con los privilegios del primer usuario en la base de datos. Se recomienda que este usuario tenga los permisos más altos.

La aplicación consta de varios componentes.

Advertencia Todos los comandos de cake_fuzzer deben ejecutarse como root.

Antes de iniciar el fuzzer, asegúrate de que tu aplicación objetivo esté completamente instrumentada:

root@kitploit:~
python cake_fuzzer.py instrument check

Si hay algunos cambios sin aplicar, aplícalos con:

root@kitploit:~
python cake_fuzzer.py instrument apply

Para ejecutar cake fuzzer, haz lo siguiente (se recomienda usar al menos 3 terminales separadas):

root@kitploit:~
# Primera terminal
python cake_fuzzer.py run fuzzer                  # Genera ataques, los agrega a la COLA y registra nuevos SCANNERS (luego sale)
python cake_fuzzer.py run periodic_monitors       # Responsable del monitoreo (usa CTRL+C para detener y salir al final del escaneo)

# Segunda terminal
python cake_fuzzer.py run iteration_monitors     # Responsable del monitoreo (usa CTRL+C para detener y salir al final del escaneo)

# Tercera terminal
python cake_fuzzer.py run attack_queue            # Inicia la COLA DE ATAQUES (usa CTRL+C para detener y salir al final del escaneo)

# Una vez que todos los ataques se hayan ejecutado
python cake_fuzzer.py run registry                # Genera `results.json` basado en las vulnerabilidades encontradas

Nota: Actualmente existe un error que puede cambiar el propietario de los registros (o de cualquier otro archivo modificado dinámicamente de la aplicación web objetivo). Esto puede causar errores al usar la aplicación web normalmente o incluso falsos negativos en futuras ejecuciones de Cake Fuzzer. Para MISP, recomendamos ejecutar lo siguiente después de cada ejecución del fuzzer:

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

Una vez que el escaneo termine, revierte la instrumentación:

root@kitploit:~
python cake_fuzzer.py instrument revert

Para ejecutar de nuevo

Para volver a ejecutar cake fuzzer, haz lo siguiente:

Elimina los registros de la aplicación (como ejemplo, los registros de MISP se almacenan en /var/www/MISP/app/tmp/logs)

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

Elimina todos los archivos dentro de la carpeta /cake_fuzzer/databases

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

Elimina el archivo cake_fuzzer/results.json (primero no olvides guardar o examinar los resultados del escaneo anterior)

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

Finalmente, sigue el proceso de ejecución anterior nuevamente con 3 terminales

FAQ / Solución de problemas

La cola de ataques parece no hacer nada

La cola de ataques marca los ataques ejecutados en la base de datos como 'ejecutados', por lo que para ejecutar todo el conjunto nuevamente debes eliminar la base de datos y agregar los ataques de nuevo.

Asegúrate de detener los monitores y las colas de ataques antes de eliminar la base de datos.

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

La aplicación objetivo no guarda registros en archivos de log

Esto probablemente se deba a que los archivos de registro anteriores fueron sobrescritos por root. Cake Fuzzer opera como root, por lo que los nuevos archivos de registro se crearán con root como propietario. Elimínalos:

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

No hay archivos en el directorio /cake_fuzzer de una MV después de reiniciar

Si usas una MV con el directorio compartido de cake fuzzer con tu máquina anfitriona, asegúrate de que el directorio anfitrión esté correctamente montado en la MV invitada:

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

La aplicación objetivo falla después de ejecutar Cake Fuzzer

Cake Fuzzer debe ubicarse en el directorio raíz de la máquina y el nombre del directorio base debe ser específicamente cake_fuzzer.

root@kitploit:~
mv CakeFuzzer/ /cake_fuzzer

Errores de "Patch" al ejecutar instrument apply

El proceso de instrumentación es parte del flujo de ejecución de Cake Fuzzer. Cuando ejecutas instrument apply seguido de instrument check, ambos comandos deberían dar como resultado el mismo número de cambios.

Si recibes algún error de "patch", puedes aplicar los parches manualmente y eliminar el archivo de parche problemático. Los parches se encuentran en el directorio /cake_fuzzer/cakefuzzer/instrumentation/patches.

Errores de dependencias

Si durante la instalación o ejecución tienes un error de dependencia de Python, instala las dependencias manualmente después de cambiar al entorno virtual.

Primero cambia al entorno virtual

root@kitploit:~
source venv/bin/activate

Después puedes instalar las dependencias con pip3.

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

Créditos

Inspiración

Este proyecto se inspiró en:

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

Comisión

Este proyecto fue encargado por: Fuerzas Armadas de Luxemburgo

Contribuyentes iniciales

  • Dawid Czarnecki (autor original)
  • Adam Bobowski (desarrollador principal)
  • @Kattorne
  • Ulaş Deniz İlhan
Descargar herramienta