Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CakeFuzzer — Cake Fuzzer é um projeto que visa ajudar a descobrir automaticamente e continuamente vulnerabilidades em aplicações web criadas com base em frameworks específicos, com falsos positivos muito limitados. | Kitploit
Ferramentas/GitHubGitHub/zigrin-security/cakefuzzer
Análise EstáticaScanners de VulnerabilidadesScanners de Vulnerabilidades WebAnálise Dinâmica (Sandboxing)Segurança WebFuzzingTestes de Penetração
GitHubzigrin-security/cakefuzzer

CakeFuzzer

Cake Fuzzer é um projeto que visa ajudar a descobrir automaticamente e continuamente vulnerabilidades em aplicações web criadas com base em frameworks específicos, com falsos positivos muito limitados.

Ver Repositório
1049há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

CakeFuzzer

Último lançamento: 1.0
Licença: GNU GPL v3.0

Cake Fuzzer é um projeto que tem como objetivo ajudar a descobrir vulnerabilidades de forma automática e contínua em aplicações web criadas com base em frameworks específicos, com um número muito limitado de falsos positivos. Atualmente, está implementado para suportar o framework Cake PHP.

Se quiser saber mais sobre o processo de pesquisa, veja esta série de artigos: Pesquisa em Cibersegurança de Aplicações CakePHP

🏆 Bugs reportados 🏆

Abaixo está uma lista de alguns dos bugs descobertos pelo Cake Fuzzer:

TítuloGravidadeLink
Injeção SQL cega no Cerebrate9.8 Críticohttps://zigrin.com/advisories/cerebrate-blind-sql-injection/
Injeção SQL no componente CRUD8.8 Altohttps://zigrin.com/advisories/misp-sql-injection-in-crud-component/
XSS baseado em DOM6.1 Médiohttps://zigrin.com/advisories/misp-dom-based-xss/
Injeção SQL cega no parâmetro order8.8 Altohttps://zigrin.com/advisories/misp-blind-sql-injection-in-order-parameter/
Injeção SQL cega em parâmetros de entrada de array8.8 Altohttps://zigrin.com/advisories/misp-blind-sql-injection-in-array-input-parameters/
Injeção SQL baseada em tempo em /Logs/index7.2 Altohttps://zigrin.com/advisories/misp-time-based-sql-injection-in-logs-index/

Objetivos do projeto

As abordagens típicas para descobrir vulnerabilidades usando ferramentas automatizadas em aplicações web são:

  • Teste de Segurança Estático de Aplicações (SAST) – Método que envolve um scanner que deteta vulnerabilidades com base no código fonte sem executar a aplicação
  • Teste de Segurança Dinâmico de Aplicações (DAST) – Método que incorpora um scanner de vulnerabilidades que ataca a aplicação em execução e identifica as vulnerabilidades com base nas respostas da aplicação

Ambos os métodos têm desvantagens. O SAST resulta numa elevada percentagem de falsos positivos – achados que ou não são vulnerabilidades ou não são vulnerabilidades exploráveis. O DAST resulta em menos falsos positivos, mas descobre menos vulnerabilidades devido à informação limitada. Também requer algum conhecimento sobre a aplicação e uma base de segurança da pessoa que executa a análise. Isto muitas vezes vem com uma configuração de análise personalizada por aplicação para funcionar corretamente.

O projeto Cake Fuzzer pretende combinar as vantagens de ambas as abordagens e eliminar as desvantagens mencionadas. Esta abordagem é chamada de Teste de Segurança Interativo de Aplicações (IAST).

Os objetivos do projeto são:

  • Criar um processo automatizado de descoberta de vulnerabilidades em aplicações baseadas no framework CakePHP
  • Nenhum requisito de conhecimento da aplicação ou pré-configuração da aplicação web
  • Resultar num número mínimo ou próximo de 0 de falsos positivos
  • Exigir conhecimento mínimo de segurança para executar o scanner

Nota: Algumas classes de vulnerabilidades não são alvo do Cake Fuzzer, portanto o Cake Fuzzer não será capaz de as detetar. Exemplos dessas classes são vulnerabilidades de lógica de negócio e problemas de controlo de acesso.

Arquitetura

Visão geral

Visão geral da arquitetura do Cake Fuzzer

Drawio: Arquitetura do Cake Fuzzer

O Cake Fuzzer consiste em 3 servidores principais (razoavelmente independentes) que, no total, permitem testes dinâmicos de vulnerabilidades em aplicações CakePHP.

  • AttackQueue - Agendamento e execução de cenários de ataque.
  • Monitors - Monitorização de entidades específicas (saídas do executor / conteúdos de ficheiros / processos / erros).
  • Registry - Armazenamento e classificação de vulnerabilidades encontradas. Eles funcionam de forma independente. O AttackQueue pode adicionar novos scanners aos monitores, e os Monitors podem agendar novos ataques (por exemplo, com base numa vulnerabilidade encontrada para atacar mais a aplicação).

Outros componentes incluem:

  • Fuzzer - define e agenda ataques para o AttackQueue (serve como ponto de entrada)
  • Configuration - define informações dependentes da aplicação (por exemplo, caminho para a aplicação CakePHP)
  • Instrumentation - com base na configuração define alterações à aplicação / SO para preparar o terreno para os ataques.

Abordagem

O Cake Fuzzer baseia-se no conceito de Teste de Segurança Interativo de Aplicações (IAST). Contém um conjunto predefinido de ataques que são modificados aleatoriamente antes da execução. O Cake Fuzzer tem conhecimento dos internos da aplicação graças ao framework Cake PHP, portanto os ataques serão lançados em todos os pontos de entrada possíveis da aplicação.

Durante o ataque, o Cake Fuzzer monitoriza vários aspetos da aplicação e do sistema subjacente, tais como:

  • conexão de rede,
  • sistema de ficheiros,
  • resposta da aplicação,
  • logs de erro.

Estas fontes de informação permitem que o Cake Fuzzer identifique mais vulnerabilidades e as reporte com maior certeza.

Requisitos

  • Aplicação web CakePHP instalada, configurada e em execução. Exemplos de aplicações web CakePHP: MISP (https://github.com/MISP/MISP), Cerebrate (https://github.com/cerebrate-project/cerebrate)
  • PHP CLI

Ambiente de desenvolvimento usando MISP em máquina virtual VMWare

A secção seguinte descreve os passos para configurar um ambiente de desenvolvimento do Cake Fuzzer onde o alvo é o MISP desatualizado v2.4.146, vulnerável ao CVE-2021-41326.

Requisitos

  • VMWare Workstation (Outra plataforma de virtualização pode ser usada desde que suporte a partilha/montagem de diretórios entre o sistema anfitrião e convidado)

Passos

Execute os seguintes comandos no seu sistema operativo anfitrião para descarregar uma VM MISP desatualizada:

root@kitploit:~
cd ~/Downloads # Ou onde quiser armazenar a 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

Execute as seguintes ações na GUI do VMWare para preparar a partilha de ficheiros do Cake Fuzzer entre o seu SO anfitrião e o MISP:

  1. Abra a máquina virtual no VMWare e vá a > Definições > Opções > Pastas Partilhadas > Adicionar.
  2. Monte o diretório onde mantém o Cake Fuzzer no seu SO anfitrião e nomeie-o como cake_fuzzer na VM.
  3. Inicie a VM.
  4. Anote o endereço IP exibido na janela do VMWare após o MISP iniciar completamente.

Execute os seguintes comandos no seu SO anfitrião (substitua MISP_IP_ADDRESS pelo endereço IP anotado anteriormente):

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

Assim que fizer SSH para o MISP, execute os seguintes comandos (no terminal MISP) para finalizar a configuração da partilha de ficheiros do Cake Fuzzer entre o SO anfitrião e o 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: Este caminho é fixo pois está hardcoded na instrumentação (um dos patches)
sudo vmhgfs-fuse .host:/cake_fuzzer /cake_fuzzer -o allow_other -o uid=1000 -o max_write=61440
# max_write corrige um bug estranho de cópia de ficheiros: https://github.com/vmware/open-vm-tools/issues/437#issuecomment-669663891
ls -l /cake_fuzzer # Se tudo correu bem, deve ver o conteúdo do diretório Cake Fuzzer do seu SO anfitrião. Quaisquer alterações no SO anfitrião serão refletidas dentro da VM e vice-versa.

Prepare o MISP para testes simples (no terminal 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, instale as dependências do Cake Fuzzer e prepare o venv (no terminal MISP):

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

Contribuição para a Base de Dados de Vulnerabilidades

O Cake Fuzzer procura vulnerabilidades que estão dentro da pasta /cake_fuzzer/strategies.

Para adicionar um novo ataque, precisamos de adicionar um novo ficheiro new-attack.json à pasta strategies. Cada vulnerabilidade contém 2 campos principais: Scenarios e Scanners. Os cenários onde as formas base das cargas de ataque são armazenadas. Os scanners, por outro lado, detetam expressões regulares ou frases para resposta, stdout, stderr, logs e resultados.

Criar carga para Scenarios

Para criar uma carga, primeiro precisa de compreender a vulnerabilidade e como detetá-la com o menor número possível de cargas.

  • Ao construir o cenário, deve pensar na carga mais genérica possível. No entanto, quanto mais genérica for a carga, maiores são as hipóteses de produzir falsos positivos.

  • É preferível usar um valor canário como __cakefuzzer__new-attack_§CAKEFUZZER_PAYLOAD_GUID§__ nos seus cenários. O valor canário contém uma string fixa (por exemplo: __cakefuzzer__new-attack_) e um identificador dinâmico que será alterado dinamicamente pelo fuzzer (parte GUID §CAKEFUZZER_PAYLOAD_GUID§). A primeira parte do canário é usada para garantir que a carga é detetada pelos Scanners. A segunda parte do canário, o GUID, é traduzida para um valor pseudoaleatório em cada execução da sua carga. Portanto, sempre que a sua carga for injetada num parâmetro usado pela aplicação, o canário será alterado para algo como: __cakefuzzer__new-attack_8383938__, onde o 8383938 é único entre todos os outros ataques.

Detetar e gerar Scanners

Para criar um scanner, primeiro precisa de entender como a aplicação pode comportar-se quando a vulnerabilidade é acionada. Existem alguns tipos de scanner que pode usar, como response, stderr, logs, files e processes. Cada scanner serve um propósito diferente.

Por exemplo, ao construir um scanner para um XSS, irá procurar indícios da vulnerabilidade na resposta HTML da aplicação. Pode usar o scanner ResultOutputScanner para procurar o valor canário e a carga. Por outro lado, vulnerabilidades de Injeção SQL podem ser detetadas através de logs de erro. Para esse propósito, pode usar o LogFilesContentsScanner e o ResultErrorsScanner.

  • Um dos pontos importantes ao criar um scanner é encontrar uma expressão regular ou uma frase que não capture valores de falsos positivos. Se quiser contribuir com uma nova vulnerabilidade, deve garantir que não há falsos positivos ao usar a nova vulnerabilidade em análises.
  • O último atributo destas expressões regulares do Scanner é gerar uma regex eficiente. Evite usar regex que correspondam a todos os casos .* ou .+. São muito demoradas e aumentam drasticamente o tempo necessário para concluir toda a análise.

Eficiência

Como mencionado, a eficiência é uma parte importante das vulnerabilidades. Tanto os Scenarios como os Scanners devem incluir o menor número possível de elementos. Isto porque o Cake Fuzzer executa cada cenário individual em todos os caminhos detetados possíveis várias vezes. Por outro lado, todas as respostas, novas entradas de log, etc., são constantemente verificadas pelos Scanners. Haverá muitos parâmetros, caminhos e endpoints detetados, portanto usar mais cargas ou Scanner afeta bastante a eficiência.

Remover Vulnerabilidade Específica

Se não quiser analisar uma classe específica de vulnerabilidade, remova o ficheiro json especificado da pasta strategies, limpe a base de dados e execute o fuzzer novamente.

Por exemplo, se não quiser analisar a sua aplicação quanto a vulnerabilidades de Injeção SQL, siga os seguintes passos:

Primeiro, remova os cenários de ataque já preparados. Para isso, apague todos os ficheiros dentro da pasta /cake_fuzzer/databases:

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

Depois disso, remova o ficheiro sqlinj.json da pasta /cake_fuzzer/strategies:

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

Finalmente, reexecute o fuzzer e todos os processos do cake_fuzzer em execução sem qualquer ataque de Injeção SQL executado.

Uso de Prova de Conceito

Instalação

Clonar repositório

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

Aviso O Cake Fuzzer não funcionará corretamente se estiver num caminho diferente de /cake_fuzzer. Tenha em mente que deve ser colocado sob o diretório raiz do sistema de ficheiros, ao lado de /root, /tmp, etc.

Mudar para o diretório do repositório

root@kitploit:~
cd /cake_fuzzer

Venv

Entre no ambiente virtual se ainda não estiver:

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

OU

root@kitploit:~
source venv/bin/activate

Configuração

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

Configure config/config.ini:

root@kitploit:~
WEBROOT_DIR="/var/www/html"         # Caminho para o diretório `webroot` da aplicação testada
CONCURRENT_QUEUES=5                            # [Opcional] Número de ataques executados simultaneamente de cada vez
ONLY_PATHS_WITH_PREFIX="/"                      # [Opcional] O Fuzzer gerará apenas ataques para caminhos que começam com este prefixo
EXCLUDE_PATHS=""                                # [Opcional] O Fuzzer excluirá da análise todos os caminhos que correspondam a esta expressão regular. Se estiver vazio, todos os caminhos serão processados
PAYLOAD_GUID_PHRASE="§CAKEFUZZER_PAYLOAD_GUID§" # [Opcional] Palavra-chave interna que é substituída imediatamente antes do ataque pelo ID único da carga
INSTRUMENTATION_INI="config/instrumentation_cake4.ini" # [Opcional] Caminho para instrumentações personalizadas da aplicação.

Execução

Iniciar processos dos componentes

Aviso Durante a análise do Cake Fuzzer, múltiplas funcionalidades da sua aplicação serão invocadas de forma não controlada várias vezes. Isto pode resultar em conexões a serviços externos aos quais a sua aplicação está ligada, e na obtenção ou envio de dados de/para esses serviços. É altamente recomendável executar o Cake Fuzzer num ambiente isolado e controlado, sem acesso a serviços externos sensíveis.

Nota O Cake Fuzzer contorna blackholing, proteções CSRF e autorização. Envia todos os ataques com os privilégios do primeiro utilizador na base de dados. É recomendado que este utilizador tenha as permissões mais altas.

A aplicação consiste em vários componentes.

Aviso Todos os comandos cake_fuzzer devem ser executados como root.

Antes de iniciar o fuzzer, certifique-se de que a sua aplicação alvo está totalmente instrumentada:

root@kitploit:~
python cake_fuzzer.py instrument check

Se houver algumas alterações não aplicadas, aplique-as com:

root@kitploit:~
python cake_fuzzer.py instrument apply

Para executar o cake fuzzer, faça o seguinte (recomenda-se usar pelo menos 3 terminais separados):

root@kitploit:~
# Primeiro Terminal
python cake_fuzzer.py run fuzzer                  # Gera ataques, adiciona-os à FILA e regista novos SCANNERS (depois sai)
python cake_fuzzer.py run periodic_monitors       # Responsável pela monitorização (use CTRL+C para parar e sair no final da análise)

# Segundo terminal
python cake_fuzzer.py run iteration_monitors     # Responsável pela monitorização (use CTRL+C para parar e sair no final da análise)

# Terceiro terminal
python cake_fuzzer.py run attack_queue            # Inicia a FILA DE ATAQUES (use CTRL+C para parar e sair no final da análise)

# Após todos os ataques serem executados
python cake_fuzzer.py run registry                # Gera `results.json` com base nas vulnerabilidades encontradas

Nota: Atualmente existe um bug que pode alterar o proprietário dos logs (ou de quaisquer outros ficheiros alterados dinamicamente da aplicação web alvo). Isto pode causar erros ao usar a aplicação web normalmente ou até falsos negativos em execuções futuras do Cake Fuzzer. Para o MISP, recomendamos executar o seguinte após cada execução do fuzzer:

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

Assim que a sua análise terminar, reverta a instrumentação:

root@kitploit:~
python cake_fuzzer.py instrument revert

Para Executar Novamente

Para executar o cake fuzzer novamente, faça o seguinte:

Apague os Logs da Aplicação (como exemplo, para o MISP os logs estão armazenados em /var/www/MISP/app/tmp/logs)

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

Apague Todos os Ficheiros Dentro da Pasta /cake_fuzzer/databases

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

Apague o ficheiro cake_fuzzer/results.json (Primeiro não se esqueça de guardar ou examinar os resultados da análise anterior)

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

Finalmente, siga novamente o processo de execução anterior com 3 terminais

FAQ / Resolução de Problemas

A Fila de Ataques parece não estar a fazer nada

A fila de ataques marca os ataques executados na base de dados como 'executados', portanto, para executar todo o conjunto novamente, precisa de remover a base de dados e adicionar os ataques novamente.

Certifique-se de parar os monitores e as filas de ataques antes de remover a base de dados.

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

A aplicação alvo não guarda logs nos ficheiros de log

Isto é provavelmente devido ao facto de os ficheiros de log anteriores terem sido sobrescritos pelo root. O Cake Fuzzer opera como root, portanto novos ficheiros de log serão criados com o root como proprietário. Remova-os:

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

Sem ficheiros no diretório /cake_fuzzer de uma VM após um reinício

Se usar uma VM com partilha do cake fuzzer com a sua máquina anfitriã, certifique-se de que o diretório anfitrião está devidamente ligado à VM convidada:

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

A aplicação alvo falha após executar o Cake Fuzzer

O Cake Fuzzer deve estar localizado sob o diretório raiz da máquina e o nome do diretório base deve ser especificamente cake_fuzzer.

root@kitploit:~
mv CakeFuzzer/ /cake_fuzzer

Erros de "Patch" ao executar instrument apply

O processo de instrumentação é uma parte do fluxo de execução do Cake Fuzzer. Quando executa instrument apply seguido de instrument check, ambos os comandos devem resultar no mesmo número de alterações.

Se obtiver algum erro de "patch", pode aplicar os patches manualmente e eliminar o ficheiro de patch problemático. Os patches estão localizados sob o diretório /cake_fuzzer/cakefuzzer/instrumentation/patches.

Erros de dependência

Ao instalar ou executar, se tiver um erro de dependência do Python, instale manualmente as dependências após mudar para o ambiente virtual.

Primeiro, mude para o ambiente virtual

root@kitploit:~
source venv/bin/activate

Depois, pode instalar as dependências com pip3.

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

Créditos

Inspiração

Este projeto foi inspirado por:

  • 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

Encomenda

Este projeto foi encomendado por: Forças Armadas do Luxemburgo Cake Fuzzer

Contribuidores iniciais

  • Dawid Czarnecki (autor original)
  • Adam Bobowski (desenvolvedor principal)
  • @Kattorne
  • Ulaş Deniz İlhan
Baixar ferramenta