Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/zigrin-security/cakefuzzer
Analisi StaticaScanner di VulnerabilitàScanner di Vulnerabilità WebAnalisi Dinamica (Sandboxing)Sicurezza WebFuzzingPenetration Testing
GitHubzigrin-security/cakefuzzer

CakeFuzzer

Cake Fuzzer è un progetto pensato per aiutare a scoprire automaticamente e continuamente vulnerabilità in applicazioni web create sulla base di framework specifici, con un numero molto limitato di falsi positivi.

Vedi RepositorySito web
10491 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CakeFuzzer

Ultima versione: 1.0
Licenza: GNU GPL v3.0

Cake Fuzzer è un progetto che ha lo scopo di aiutare a scoprire automaticamente e continuamente vulnerabilità in applicazioni web create basate su framework specifici, con un numero molto limitato di falsi positivi. Attualmente è implementato per supportare il framework Cake PHP.

Se desideri saperne di più sul processo di ricerca, dai un'occhiata a questa serie di articoli: CakePHP Application Cybersecurity Research

🏆 Bug segnalati 🏆

Di seguito è elencata una lista di alcuni bug scoperti da Cake Fuzzer:

TitoloGravitàCollegamento
Iniezione SQL cieca in Cerebrate9.8 Criticohttps://zigrin.com/advisories/cerebrate-blind-sql-injection/
Iniezione SQL nel componente CRUD8.8 Altohttps://zigrin.com/advisories/misp-sql-injection-in-crud-component/
XSS basato su DOM6.1 Mediohttps://zigrin.com/advisories/misp-dom-based-xss/
Iniezione SQL cieca nel parametro order8.8 Altohttps://zigrin.com/advisories/misp-blind-sql-injection-in-order-parameter/
Iniezione SQL cieca nei parametri di input array8.8 Altohttps://zigrin.com/advisories/misp-blind-sql-injection-in-array-input-parameters/
Iniezione SQL basata sul tempo in /Logs/index7.2 Altohttps://zigrin.com/advisories/misp-time-based-sql-injection-in-logs-index/

Obiettivi del progetto

Gli approcci tipici per scoprire vulnerabilità utilizzando strumenti automatizzati nelle applicazioni web sono:

  • Static Application Security Testing (SAST) – Metodo che prevede uno scanner che rileva le vulnerabilità basandosi sul codice sorgente senza eseguire l'applicazione
  • Dynamic Application Security Testing (DAST) – Metodo che prevede uno scanner di vulnerabilità che attacca l'applicazione in esecuzione e identifica le vulnerabilità in base alle risposte dell'applicazione

Entrambi i metodi presentano svantaggi. Il SAST produce un'alta percentuale di falsi positivi – risultati che non sono vulnerabilità o che non sono vulnerabilità sfruttabili. Il DAST produce meno falsi positivi ma scopre meno vulnerabilità a causa delle informazioni limitate. Richiede inoltre una certa conoscenza dell'applicazione e un background di sicurezza da parte della persona che esegue la scansione. Spesso ciò comporta una configurazione personalizzata per ogni applicazione per funzionare correttamente.

Il progetto Cake Fuzzer mira a combinare i vantaggi di entrambi gli approcci ed eliminare gli svantaggi sopra menzionati. Questo approccio è chiamato Interactive Application Security Testing (IAST).

Gli obiettivi del progetto sono:

  • Creare un processo automatizzato per scoprire vulnerabilità nelle applicazioni basate sul framework CakePHP
  • Nessun requisito di conoscenza dell'applicazione o pre-configurazione dell'applicazione web
  • Risultati con un numero minimo o vicino a 0 di falsi positivi
  • Richiedere una conoscenza minima di sicurezza per eseguire lo scanner

Nota: Alcune classi di vulnerabilità non sono l'obiettivo di Cake Fuzzer, quindi Cake Fuzzer non sarà in grado di rilevarle. Esempi di queste classi sono le vulnerabilità di logica aziendale e i problemi di controllo degli accessi.

Architettura

Panoramica

Cake Fuzzer architecture overview

Drawio: Cake Fuzzer Architecture

Cake Fuzzer è composto da 3 server principali (abbastanza indipendenti) che, nel complesso, consentono test dinamici delle vulnerabilità delle applicazioni CakePHP.

  • AttackQueue - Pianificazione ed esecuzione degli scenari di attacco.
  • Monitors - Monitoraggio di entità specifiche (output degli executor / contenuti dei file / processi / errori).
  • Registry - Archiviazione e classificazione delle vulnerabilità trovate. Eseguono in modo indipendente. AttackQueue può aggiungere nuovi scanner ai monitor, e i Monitor possono pianificare nuovi attacchi (ad esempio basati su una vulnerabilità trovata per attaccare ulteriormente l'applicazione).

Altri componenti includono:

  • Fuzzer - Definisce e pianifica gli attacchi per AttackQueue (funge da punto di ingresso)
  • Configuration - Imposta le informazioni specifiche dell'applicazione (es. percorso dell'applicazione CakePHP)
  • Instrumentation - In base alla configurazione, definisce le modifiche all'applicazione/sistema operativo per preparare il terreno agli attacchi.

Approccio

Cake Fuzzer si basa sul concetto di Interactive Application Security Testing (IAST). Contiene un insieme predefinito di attacchi che vengono modificati casualmente prima dell'esecuzione. Cake Fuzzer ha conoscenza degli interni dell'applicazione grazie al framework Cake PHP, quindi gli attacchi verranno lanciati su tutti i possibili punti di ingresso dell'applicazione.

Durante l'attacco, Cake Fuzzer monitora vari aspetti dell'applicazione e del sistema sottostante come:

  • connessione di rete,
  • file system,
  • risposta dell'applicazione,
  • log degli errori.

Queste fonti di informazioni permettono a Cake Fuzzer di identificare più vulnerabilità e segnalarle con maggiore certezza.

Requisiti

  • Applicazione web CakePHP installata, configurata e in esecuzione. Esempi di applicazioni web CakePHP: MISP (https://github.com/MISP/MISP), Cerebrate (https://github.com/cerebrate-project/cerebrate)
  • PHP CLI

Ambiente di sviluppo utilizzando MISP su macchina virtuale VMWare

La sezione seguente descrive i passaggi per configurare un ambiente di sviluppo Cake Fuzzer in cui il target è la vecchia versione MISP v2.4.146, vulnerabile a CVE-2021-41326.

Requisiti

  • VMWare Workstation (è possibile utilizzare altre piattaforme di virtualizzazione purché supportino la condivisione/montaggio delle directory tra sistema host e guest)

Passaggi

Esegui i seguenti comandi sul tuo sistema operativo host per scaricare una VM MISP obsoleta:

root@kitploit:~
cd ~/Downloads # O dove desideri archiviare la 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

Esegui le seguenti azioni nell'interfaccia grafica di VMWare per preparare la condivisione dei file di Cake Fuzzer tra il sistema host e MISP:

  1. Apri la macchina virtuale in VMWare e vai su > Impostazioni > Opzioni > Cartelle condivise > Aggiungi.
  2. Monta la directory in cui conservi Cake Fuzzer sul tuo sistema host e denominala cake_fuzzer sulla VM.
  3. Avvia la VM.
  4. Prendi nota dell'indirizzo IP visualizzato nella finestra di VMWare dopo l'avvio completo di MISP.

Esegui i seguenti comandi sul tuo sistema operativo host (sostituisci MISP_IP_ADDRESS con l'indirizzo IP annotato in precedenza):

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

Una volta effettuato l'SSH in MISP, esegui i seguenti comandi (nel terminale MISP) per completare la configurazione della condivisione dei file di Cake Fuzzer tra sistema host e 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: Questo percorso è fisso poiché è hardcoded nell'instrumentazione (una delle patch)
sudo vmhgfs-fuse .host:/cake_fuzzer /cake_fuzzer -o allow_other -o uid=1000 -o max_write=61440
# max_write risolve un bug strano di copia dei file: https://github.com/vmware/open-vm-tools/issues/437#issuecomment-669663891
ls -l /cake_fuzzer # Se tutto è andato bene, dovresti vedere il contenuto della directory Cake Fuzzer dal tuo sistema host. Qualsiasi modifica sul sistema host si rifletterà nella VM e viceversa.

Prepara MISP per test semplici (nel terminale 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

Infine, installa le dipendenze di Cake Fuzzer e prepara l'ambiente virtuale (nel terminale MISP):

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

Contributo al database delle vulnerabilità

Cake Fuzzer cerca vulnerabilità che si trovano nella cartella /cake_fuzzer/strategies.

Per aggiungere un nuovo attacco, dobbiamo aggiungere un nuovo file new-attack.json nella cartella strategies. Ogni vulnerabilità contiene 2 campi principali: Scenarios e Scanners. Gli Scenarios contengono i form base dei payload di attacco. Gli Scanners, invece, rilevano espressioni regolari o frasi per la risposta, stout, sterr, log e risultati.

Creazione di un payload per Scenarios

Per creare un payload, devi prima comprendere la vulnerabilità e come rilevarla con il minor numero possibile di payload.

  • Durante la costruzione dello scenario, dovresti pensare al payload più generico possibile. Tuttavia, più generico è il payload, maggiori sono le possibilità che produca falsi positivi.

  • È preferibile utilizzare un valore canarino come __cakefuzzer__new-attack_§CAKEFUZZER_PAYLOAD_GUID§__ nei tuoi scenari. Un valore canarino contiene una stringa fissa (ad esempio: __cakefuzzer__new-attack_) e un identificatore dinamico che verrà modificato dinamicamente dal fuzzer (la parte GUID §CAKEFUZZER_PAYLOAD_GUID§). La prima parte del canarino viene utilizzata per garantire che il payload venga rilevato dagli Scanners. La seconda parte, il GUID, viene tradotta in un valore pseudo-casuale ad ogni esecuzione del tuo payload. Quindi, ogni volta che il tuo payload verrà iniettato in un parametro utilizzato dall'applicazione, il canarino verrà modificato in qualcosa del tipo: __cakefuzzer__new-attack_8383938__, dove 8383938 è unico per tutti gli altri attacchi.

Rilevamento e generazione di Scanners

Per creare uno scanner, devi prima capire come potrebbe comportarsi l'applicazione quando viene attivata la vulnerabilità. Ci sono alcuni tipi di scanner che puoi utilizzare, come response, sterr, logs, files e processes. Ogni scanner ha uno scopo diverso.

Ad esempio, quando costruisci uno scanner per un XSS, cercherai un'indicazione della vulnerabilità nella risposta HTML dell'applicazione. Puoi utilizzare lo scanner ResultOutputScanner per cercare il valore canarino e il payload. D'altra parte, le vulnerabilità di SQL Injection potrebbero essere rilevate tramite i log degli errori. A questo scopo, puoi utilizzare LogFilesContentsScanner e ResultErrorsScanner.

  • Uno dei punti importanti nella creazione di uno scanner è trovare un'espressione regolare o una frase che non catturi falsi positivi. Se desideri contribuire con una nuova vulnerabilità, dovresti assicurarti che non ci siano falsi positivi utilizzando la nuova vulnerabilità nelle scansioni.
  • L'ultimo attributo di queste espressioni regolari Scanner è generare un regex efficiente. Evita di usare regex che corrispondono a tutti i casi .* o .+. Sono molto dispendiosi in termini di tempo e aumentano drasticamente il tempo necessario per completare l'intera scansione.

Efficienza

Come accennato, l'efficienza è una parte importante delle vulnerabilità. Sia Scenarios che Scanners dovrebbero includere il minor numero possibile di elementi. Questo perché Cake Fuzzer esegue ogni singolo scenario in tutti i percorsi rilevati più volte. D'altra parte, tutte le risposte, le nuove voci di log, ecc., vengono costantemente controllate dagli Scanner. Ci saranno molti parametri, percorsi e endpoint rilevati, quindi utilizzare più payload o Scanner influisce notevolmente sull'efficienza.

Rimozione di una vulnerabilità specifica

Se non desideri eseguire la scansione per una classe di vulnerabilità specifica, rimuovi il file json specificato dalla cartella strategies, pulisci il database ed esegui nuovamente il fuzzer.

Ad esempio, se non desideri eseguire la scansione della tua applicazione per le vulnerabilità di SQL Injection, procedi con i seguenti passaggi:

Prima di tutto, rimuovi gli scenari di attacco già preparati. Per fare ciò, elimina tutti i file all'interno della cartella /cake_fuzzer/databases:

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

Successivamente, rimuovi il file sqlinj.json dalla cartella /cake_fuzzer/strategies:

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

Infine, esegui di nuovo il fuzzer e tutti i processi di cake_fuzzer in esecuzione senza che nessun attacco SQL Injection venga eseguito.

Utilizzo del PoC

Installazione

Clona il repository

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

Attenzione Cake Fuzzer non funzionerà correttamente se si trova in un percorso diverso da /cake_fuzzer. Tieni presente che deve essere posizionato sotto la directory radice del file system, accanto a /root, /tmp e così via.

Spostati nella directory del repository

root@kitploit:~
cd /cake_fuzzer

Ambiente virtuale

Entra nell'ambiente virtuale se non ci sei già:

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

OPPURE

root@kitploit:~
source venv/bin/activate

Configurazione

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

Configura config/config.ini:

root@kitploit:~
WEBROOT_DIR="/var/www/html"         # Percorso della directory `webroot` dell'applicazione testata
CONCURRENT_QUEUES=5                            # [Opzionale] Numero di attacchi eseguiti contemporaneamente
ONLY_PATHS_WITH_PREFIX="/"                      # [Opzionale] Il fuzzer genererà attacchi solo per quelli che iniziano con questo prefisso
EXCLUDE_PATHS=""                                # [Opzionale] Il fuzzer escluderà dalla scansione tutti i percorsi che corrispondono a questa espressione regolare. Se vuoto, verranno elaborati tutti i percorsi
PAYLOAD_GUID_PHRASE="§CAKEFUZZER_PAYLOAD_GUID§" # [Opzionale] Parola chiave interna che viene sostituita subito prima dell'attacco con un ID payload univoco
INSTRUMENTATION_INI="config/instrumentation_cake4.ini" # [Opzionale] Percorso per instrumentazioni personalizzate dell'applicazione.

Esecuzione

Avvia i processi dei componenti

Attenzione Durante la scansione di Cake Fuzzer, molte funzionalità della tua applicazione verranno invocate in modo incontrollato più volte. Ciò potrebbe comportare l'emissione di connessioni a servizi esterni a cui la tua applicazione è connessa e l'estrazione o l'invio di dati da/verso di essi. Si consiglia vivamente di eseguire Cake Fuzzer in un ambiente isolato e controllato, senza accesso a servizi esterni sensibili.

Nota Cake Fuzzer bypassa blackholing, protezioni CSRF e autorizzazioni. Invia tutti gli attacchi con i privilegi del primo utente nel database. Si consiglia che questo utente abbia i permessi più elevati.

L'applicazione è composta da diversi componenti.

Attenzione Tutti i comandi cake_fuzzer devono essere eseguiti come root.

Prima di avviare il fuzzer, assicurati che la tua applicazione target sia completamente strumentata:

root@kitploit:~
python cake_fuzzer.py instrument check

Se ci sono modifiche non applicate, applicale con:

root@kitploit:~
python cake_fuzzer.py instrument apply

Per eseguire cake fuzzer, procedi come segue (si consiglia di utilizzare almeno 3 terminali separati):

root@kitploit:~
# Primo terminale
python cake_fuzzer.py run fuzzer                  # Genera gli attacchi, li aggiunge alla CODA e registra nuovi SCANNER (poi esce)
python cake_fuzzer.py run periodic_monitors       # Responsabile del monitoraggio (usa CTRL+C per fermare ed uscire alla fine della scansione)

# Secondo terminale
python cake_fuzzer.py run iteration_monitors     # Responsabile del monitoraggio (usa CTRL+C per fermare ed uscire alla fine della scansione)

# Terzo terminale
python cake_fuzzer.py run attack_queue            # Avvia la CODA DI ATTACCO (usa CTRL+C per fermare ed uscire alla fine della scansione)

# Una volta che tutti gli attacchi sono stati eseguiti
python cake_fuzzer.py run registry                # Genera `results.json` basato sulle vulnerabilità trovate

Nota: C'è attualmente un bug che può cambiare il proprietario dei log (o di qualsiasi altro file modificato dinamicamente dell'app web target). Ciò potrebbe causare errori nell'utilizzo normale dell'applicazione web o persino falsi negativi in future esecuzioni di Cake Fuzzer. Per MISP, si consiglia di eseguire quanto segue dopo ogni esecuzione del fuzzer:

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

Una volta che la scansione termina, annulla l'instrumentazione:

root@kitploit:~
python cake_fuzzer.py instrument revert

Per eseguire di nuovo

Per eseguire di nuovo cake fuzzer, procedi come segue:

Elimina i log dell'applicazione (come esempio, i log di MISP sono memorizzati in /var/www/MISP/app/tmp/logs)

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

Elimina tutti i file all'interno della cartella /cake_fuzzer/databases

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

Elimina il file cake_fuzzer/results.json (prima non dimenticare di salvare o esaminare i risultati della scansione precedente)

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

Infine, segui nuovamente il processo di esecuzione precedente con 3 terminali

FAQ / Risoluzione dei problemi

Attack Queue sembra non fare nulla

Attack queue segna gli attacchi eseguiti nel database come 'eseguiti', quindi per eseguire nuovamente l'intera suite devi eliminare il database e aggiungere nuovamente gli attacchi.

Assicurati di fermare i monitor e le code di attacco prima di eliminare il database.

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

L'app target non salva i log nei file di log

Ciò è probabilmente dovuto al fatto che i file di log precedenti sono stati sovrascritti da root. Cake Fuzzer opera come root, quindi i nuovi file di log verranno creati con root come proprietario. Rimuovili:

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

Nessun file nella directory /cake_fuzzer di una VM dopo un riavvio

Se utilizzi una VM con condivisione di cake fuzzer con la tua macchina host, assicurati che la directory host sia correttamente collegata alla VM guest:

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

L'app target si blocca dopo l'esecuzione di Cake Fuzzer

Cake Fuzzer deve trovarsi sotto la directory radice della macchina e il nome della directory base deve essere specificamente cake_fuzzer.

root@kitploit:~
mv CakeFuzzer/ /cake_fuzzer

Errori "Patch" durante l'esecuzione di instrument apply

Il processo di instrumentazione è una parte del flusso di esecuzione di Cake Fuzzer. Quando esegui instrument apply seguito da instrument check, entrambi questi comandi dovrebbero produrre lo stesso numero di modifiche.

Se ricevi un errore "patch", puoi applicare le patch manualmente ed eliminare il file di patch problematico. Le patch si trovano nella directory /cake_fuzzer/cakefuzzer/instrumentation/pathces.

Errori di dipendenza

Durante l'installazione o l'esecuzione, se hai un errore di dipendenza Python, installa manualmente le dipendenze dopo essere passato all'ambiente virtuale.

Prima passa all'ambiente virtuale

root@kitploit:~
source venv/bin/activate

Successivamente, puoi installare le dipendenze con pip3.

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

Crediti

Ispirazione

Questo progetto è stato ispirato da:

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

Commissione

Questo progetto è stato commissionato da: Cake Fuzzer Luxembourg Armed Forces

Collaboratori iniziali

  • Dawid Czarnecki (autore originale)
  • Adam Bobowski (sviluppatore principale)
  • @Kattorne
  • Ulaş Deniz İlhan
Scarica lo strumento