Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CakeFuzzer — Cake Fuzzer est un projet conçu pour aider à découvrir automatiquement et en continu les vulnérabilités dans les applications web créées à partir de frameworks spécifiques, avec très peu de faux positifs. | Kitploit
Outils/GitHubGitHub/zigrin-security/cakefuzzer
Analyse StatiqueScanners de VulnérabilitésScanners de Vulnérabilités WebAnalyse Dynamique (Sandboxing)Sécurité WebFuzzingTests d'Intrusion
GitHubzigrin-security/cakefuzzer

CakeFuzzer

Cake Fuzzer est un projet conçu pour aider à découvrir automatiquement et en continu les vulnérabilités dans les applications web créées à partir de frameworks spécifiques, avec très peu de faux positifs.

Voir le dépôt
1049il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

CakeFuzzer

Dernière version : 1.0
Licence : GNU GPL v3.0

Cake Fuzzer est un projet conçu pour aider à découvrir automatiquement et en continu les vulnérabilités des applications web créées à partir de frameworks spécifiques, avec très peu de faux positifs. Actuellement, il est implémenté pour supporter le framework Cake PHP.

Si vous souhaitez en savoir plus sur le processus de recherche, consultez cette série d'articles : Recherche en cybersécurité des applications CakePHP

🏆 Bugs signalés 🏆

Voici une liste de quelques bugs découverts par Cake Fuzzer :

TitreSévéritéLien
Injection SQL aveugle dans Cerebrate9.8 Critiquehttps://zigrin.com/advisories/cerebrate-blind-sql-injection/
Injection SQL dans le composant CRUD8.8 Élevéehttps://zigrin.com/advisories/misp-sql-injection-in-crud-component/
XSS basé sur le DOM6.1 Moyennehttps://zigrin.com/advisories/misp-dom-based-xss/
Injection SQL aveugle dans le paramètre order8.8 Élevéehttps://zigrin.com/advisories/misp-blind-sql-injection-in-order-parameter/
Injection SQL aveugle dans les paramètres d'entrée de type tableau8.8 Élevéehttps://zigrin.com/advisories/misp-blind-sql-injection-in-array-input-parameters/
Injection SQL basée sur le temps dans /Logs/index7.2 Élevéehttps://zigrin.com/advisories/misp-time-based-sql-injection-in-logs-index/

Objectifs du projet

Les approches typiques pour découvrir des vulnérabilités à l'aide d'outils automatisés dans les applications web sont :

  • Test de sécurité statique des applications (SAST) – Méthode où un scanner détecte les vulnérabilités en se basant sur le code source sans exécuter l'application
  • Test de sécurité dynamique des applications (DAST) – Méthode qui intègre un scanner de vulnérabilités attaquant l'application en cours d'exécution et identifie les vulnérabilités en fonction des réponses de l'application

Les deux méthodes présentent des inconvénients. Le SAST entraîne un pourcentage élevé de faux positifs – des résultats qui ne sont soit pas des vulnérabilités, soit des vulnérabilités non exploitables. Le DAST génère moins de faux positifs mais découvre moins de vulnérabilités en raison des informations limitées. Il nécessite également une certaine connaissance de l'application et des compétences en sécurité de la personne qui exécute le scan. Cela implique souvent une configuration de scan personnalisée par application pour fonctionner correctement.

Le projet Cake Fuzzer vise à combiner les avantages des deux approches et à éliminer les inconvénients mentionnés ci-dessus. Cette approche est appelée Test de sécurité interactif des applications (IAST).

Les objectifs du projet sont :

  • Créer un processus automatisé de découverte de vulnérabilités dans les applications basées sur le framework CakePHP
  • Aucune connaissance de l'application ni préconfiguration de l'application web requises
  • Résultat avec un minimum ou proche de 0 faux positifs
  • Nécessiter une connaissance minimale en sécurité pour exécuter le scanner

Note : Certaines classes de vulnérabilités ne sont pas la cible de Cake Fuzzer, celui-ci ne pourra donc pas les détecter. Il s'agit par exemple des vulnérabilités de logique métier et des problèmes de contrôle d'accès.

Architecture

Aperçu

Aperçu de l'architecture de Cake Fuzzer

Drawio : Architecture de Cake Fuzzer

Cake Fuzzer se compose de 3 serveurs principaux (relativement indépendants) qui, ensemble, permettent des tests de vulnérabilité dynamiques des applications CakePHP.

  • AttackQueue - Planification et exécution des scénarios d'attaque.
  • Monitors - Surveillance des entités données (sorties de l'exécuteur / contenus de fichiers / processus / erreurs).
  • Registry - Stockage et classification des vulnérabilités trouvées. Ils fonctionnent indépendamment. AttackQueue peut ajouter de nouveaux scanners aux moniteurs, et les moniteurs peuvent planifier de nouvelles attaques (par exemple, en fonction d'une vulnérabilité trouvée pour attaquer davantage l'application).

Les autres composants incluent :

  • Fuzzer - définit et planifie les attaques vers AttackQueue (sert de point d'entrée)
  • Configuration - configure les informations dépendantes de l'application (par exemple, le chemin vers l'application CakePHP)
  • Instrumentation - basée sur la configuration, définit les modifications de l'application / du système d'exploitation pour préparer le terrain aux attaques.

Approche

Cake Fuzzer est basé sur le concept du Test de sécurité interactif des applications (IAST). Il contient un ensemble prédéfini d'attaques qui sont modifiées aléatoirement avant exécution. Cake Fuzzer connaît les détails internes de l'application grâce au framework Cake PHP, donc les attaques seront lancées sur tous les points d'entrée possibles de l'application.

Pendant l'attaque, Cake Fuzzer surveille divers aspects de l'application et du système sous-jacent, tels que :

  • connexion réseau,
  • système de fichiers,
  • réponse de l'application,
  • journaux d'erreurs.

Ces sources d'informations permettent à Cake Fuzzer d'identifier plus de vulnérabilités et de les signaler avec une plus grande certitude.

Prérequis

  • Application web CakePHP installée, configurée et en cours d'exécution. Exemples d'applications web CakePHP : MISP (https://github.com/MISP/MISP), Cerebrate (https://github.com/cerebrate-project/cerebrate)
  • PHP CLI

Environnement de développement utilisant MISP sur une machine virtuelle VMWare

La section suivante décrit les étapes pour configurer un environnement de développement Cake Fuzzer où la cible est une version obsolète de MISP v2.4.146, vulnérable à CVE-2021-41326.

Prérequis

  • VMWare Workstation (D'autres plateformes de virtualisation peuvent être utilisées tant qu'elles supportent le partage/montage de répertoires entre l'hôte et l'invité)

Étapes

Exécutez les commandes suivantes sur votre système d'exploitation hôte pour télécharger une VM MISP obsolète :

root@kitploit:~
cd ~/Downloads # Ou l'endroit où vous souhaitez stocker 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

Effectuez les actions suivantes dans l'interface graphique de VMWare pour préparer le partage des fichiers Cake Fuzzer entre votre système d'exploitation hôte et MISP :

  1. Ouvrez la machine virtuelle dans VMWare et allez dans > Paramètres > Options > Dossiers partagés > Ajouter.
  2. Montez le répertoire où vous conservez Cake Fuzzer sur votre système hôte et nommez-le cake_fuzzer sur la VM.
  3. Démarrez la VM.
  4. Notez l'adresse IP affichée dans la fenêtre VMWare après le démarrage complet de MISP.

Exécutez les commandes suivantes sur votre système hôte (remplacez MISP_IP_ADDRESS par l'adresse IP notée précédemment) :

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

Une fois connecté en SSH à MISP, exécutez les commandes suivantes (dans le terminal MISP) pour terminer la configuration du partage des fichiers Cake Fuzzer entre l'hôte et 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 # Note : Ce chemin est fixe car il est codé en dur dans l'instrumentation (un des patchs)
sudo vmhgfs-fuse .host:/cake_fuzzer /cake_fuzzer -o allow_other -o uid=1000 -o max_write=61440
# max_write corrige un étrange bug de copie de fichier : https://github.com/vmware/open-vm-tools/issues/437#issuecomment-669663891
ls -l /cake_fuzzer # Si tout s'est bien passé, vous devriez voir le contenu du répertoire Cake Fuzzer de votre système hôte. Toute modification sur votre hôte sera reflétée dans la VM et vice-versa.

Préparez MISP pour des tests simples (dans le 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

Enfin, installez les dépendances de Cake Fuzzer et préparez l'environnement virtuel (dans le terminal MISP) :

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

Contribution à la base de données de vulnérabilités

Cake Fuzzer recherche les vulnérabilités qui se trouvent dans le dossier /cake_fuzzer/strategies.

Pour ajouter une nouvelle attaque, nous devons ajouter un nouveau fichier new-attack.json dans le dossier strategies. Chaque vulnérabilité contient 2 champs principaux : Scenarios et Scanners. Les Scenarios contiennent les formes de base des charges utiles d'attaque. Les Scanners, quant à eux, détectent les expressions régulières ou les phrases pour la réponse, la sortie standard, la sortie d'erreur, les journaux et les résultats.

Création d'une charge utile pour Scenarios

Pour créer une charge utile, vous devez d'abord comprendre la vulnérabilité et comment la détecter avec le moins de charges utiles possible.

  • Lors de la construction du scénario, vous devez penser à une charge utile aussi générique que possible. Cependant, plus la charge utile est générique, plus il y a de chances qu'elle produise des faux positifs.

  • Il est préférable d'utiliser une valeur sentinelle telle que __cakefuzzer__new-attack_§CAKEFUZZER_PAYLOAD_GUID§__ dans vos scénarios. La valeur sentinelle contient une chaîne fixe (par exemple : __cakefuzzer__new-attack_) et un identifiant dynamique qui sera modifié dynamiquement par le fuzzer (partie GUID §CAKEFUZZER_PAYLOAD_GUID§). La première partie de la sentinelle est utilisée pour garantir que la charge utile est détectée par les Scanners. La deuxième partie, le GUID, est traduite en une valeur pseudo-aléatoire à chaque exécution de votre charge utile. Ainsi, chaque fois que votre charge utile sera injectée dans un paramètre utilisé par l'application, la sentinelle sera changée en quelque chose comme : __cakefuzzer__new-attack_8383938__, où 8383938 est unique parmi toutes les autres attaques.

Détection et génération de Scanners

Pour créer un scanner, vous devez d'abord comprendre comment l'application peut se comporter lorsque la vulnérabilité est déclenchée. Il existe quelques types de scanners que vous pouvez utiliser, tels que response, sterr, logs, files, et processes. Chaque scanner a un objectif différent.

Par exemple, lorsque vous construisez un scanner pour une XSS, vous chercherez l'indication de la vulnérabilité dans la réponse HTML de l'application. Vous pouvez utiliser le scanner ResultOutputScanner pour rechercher la valeur sentinelle et la charge utile. D'un autre côté, les vulnérabilités d'injection SQL peuvent être détectées via les journaux d'erreurs. Pour cela, vous pouvez utiliser LogFilesContentsScanner et ResultErrorsScanner.

  • L'un des points importants lors de la création d'un scanner est de trouver une expression régulière ou une phrase qui ne détecte pas de faux positifs. Si vous souhaitez contribuer avec une nouvelle vulnérabilité, vous devez vous assurer qu'il n'y a pas de faux positifs en utilisant la nouvelle vulnérabilité dans des scans.
  • Le dernier attribut de ces expressions régulières de Scanner est de générer une expression régulière efficace. Évitez d'utiliser des expressions régulières qui correspondent à tous les cas .* ou .+. Elles sont très gourmandes en temps et augmentent considérablement le temps nécessaire pour terminer l'ensemble du scan.

Efficacité

Comme mentionné précédemment, l'efficacité est une partie importante des vulnérabilités. Les Scenarios et les Scanners doivent inclure le moins d'éléments possible. En effet, Cake Fuzzer exécute chaque scénario individuel dans tous les chemins détectés possibles plusieurs fois. D'un autre côté, toutes les réponses, les nouvelles entrées de journal, etc., sont constamment vérifiées par les Scanners. Il y aura probablement beaucoup de paramètres, chemins et points de terminaison détectés, donc utiliser plus de charges utiles ou de Scanner affecte considérablement l'efficacité.

Suppression d'une vulnérabilité spécifique

Si vous ne souhaitez pas analyser une classe de vulnérabilité spécifique, supprimez le fichier json correspondant du dossier strategies, nettoyez la base de données et relancez le fuzzer.

Par exemple, si vous ne souhaitez pas analyser votre application pour les vulnérabilités d'injection SQL, procédez comme suit :

Tout d'abord, supprimez les scénarios d'attaque déjà préparés. Pour ce faire, supprimez tous les fichiers du dossier /cake_fuzzer/databases :

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

Ensuite, supprimez le fichier sqlinj.json du dossier /cake_fuzzer/strategies :

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

Enfin, relancez le fuzzer et tous les processus cake_fuzzer en cours d'exécution sans aucune attaque d'injection SQL.

Utilisation de la Preuve de Concept (PoC)

Installation

Cloner le dépôt

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

Avertissement Cake Fuzzer ne fonctionnera pas correctement s'il se trouve sous un chemin différent de /cake_fuzzer. Gardez à l'esprit qu'il doit être placé sous le répertoire racine du système de fichiers, à côté de /root, /tmp, etc.

Se déplacer dans le répertoire du dépôt

root@kitploit:~
cd /cake_fuzzer

Environnement virtuel

Entrez dans l'environnement virtuel si vous n'y êtes pas déjà :

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

OU

root@kitploit:~
source venv/bin/activate

Configuration

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

Configurez config/config.ini :

root@kitploit:~
WEBROOT_DIR="/var/www/html"         # Chemin vers le répertoire `webroot` de l'application testée
CONCURRENT_QUEUES=5                            # [Optionnel] Nombre d'attaques exécutées simultanément
ONLY_PATHS_WITH_PREFIX="/"                      # [Optionnel] Le fuzzer ne générera que des attaques pour les chemins commençant par ce préfixe
EXCLUDE_PATHS=""                                # [Optionnel] Le fuzzer exclura de l'analyse tous les chemins correspondant à cette expression régulière. Si vide, tous les chemins seront traités
PAYLOAD_GUID_PHRASE="§CAKEFUZZER_PAYLOAD_GUID§" # [Optionnel] Mot-clé interne qui est remplacé juste avant l'attaque par un identifiant de charge utile unique
INSTRUMENTATION_INI="config/instrumentation_cake4.ini" # [Optionnel] Chemin vers les instrumentations personnalisées de l'application.

Exécution

Démarrer les processus des composants

Avertissement Pendant l'analyse de Cake Fuzzer, plusieurs fonctionnalités de votre application seront invoquées de manière non contrôlée à plusieurs reprises. Cela peut entraîner l'émission de connexions vers des services externes auxquels votre application est connectée, et l'extraction ou l'envoi de données depuis/vers ceux-ci. Il est fortement recommandé d'exécuter Cake Fuzzer dans un environnement contrôlé isolé sans accès à des services externes sensibles.

Note Cake Fuzzer contourne le blackholing, les protections CSRF et l'autorisation. Il envoie toutes les attaques avec les privilèges du premier utilisateur de la base de données. Il est recommandé que cet utilisateur ait les permissions les plus élevées.

L'application se compose de plusieurs composants.

Avertissement Toutes les commandes cake_fuzzer doivent être exécutées en tant que root.

Avant de démarrer le fuzzer, assurez-vous que votre application cible est entièrement instrumentée :

root@kitploit:~
python cake_fuzzer.py instrument check

Si des modifications non appliquées existent, appliquez-les avec :

root@kitploit:~
python cake_fuzzer.py instrument apply

Pour exécuter cake fuzzer, procédez comme suit (il est recommandé d'utiliser au moins 3 terminaux séparés) :

root@kitploit:~
# Premier terminal
python cake_fuzzer.py run fuzzer                  # Génère les attaques, les ajoute à la FILE D'ATTENTE et enregistre les nouveaux SCANNERS (puis se termine)
python cake_fuzzer.py run periodic_monitors       # Responsable de la surveillance (utilisez CTRL+C pour arrêter et quitter à la fin de l'analyse)

# Deuxième terminal
python cake_fuzzer.py run iteration_monitors     # Responsable de la surveillance (utilisez CTRL+C pour arrêter et quitter à la fin de l'analyse)

# Troisième terminal
python cake_fuzzer.py run attack_queue            # Démarre la FILE D'ATTENTE DES ATTAQUES (utilisez CTRL+C pour arrêter et quitter à la fin de l'analyse)

# Une fois toutes les attaques exécutées
python cake_fuzzer.py run registry                # Génère `results.json` en fonction des vulnérabilités trouvées

Note : Il existe actuellement un bogue qui peut modifier le propriétaire des journaux (ou de tout autre fichier modifié dynamiquement de l'application web cible). Cela peut provoquer des erreurs lors de l'utilisation normale de l'application web ou même des faux négatifs lors des exécutions futures de Cake Fuzzer. Pour MISP, nous recommandons d'exécuter la commande suivante après chaque exécution du fuzzer :

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

Une fois votre analyse terminée, annulez l'instrumentation :

root@kitploit:~
python cake_fuzzer.py instrument revert

Pour réexécuter

Pour exécuter à nouveau cake fuzzer, procédez comme suit :

Supprimez les journaux de l'application (à titre d'exemple, les journaux MISP sont stockés dans /var/www/MISP/app/tmp/logs)

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

Supprimez tous les fichiers du dossier /cake_fuzzer/databases

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

Supprimez le fichier cake_fuzzer/results.json (n'oubliez pas d'abord de sauvegarder ou d'examiner les résultats de l'analyse précédente)

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

Enfin, suivez à nouveau le processus d'exécution précédent avec 3 terminaux

FAQ / Dépannage

La file d'attente des attaques semble ne rien faire

La file d'attente des attaques marque les attaques exécutées dans la base de données comme 'exécutées', donc pour réexécuter l'ensemble, vous devez supprimer la base de données et ajouter à nouveau les attaques.

Assurez-vous de tuer les moniteurs et les files d'attente des attaques avant de supprimer la base de données.

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

L'application cible n'enregistre pas les journaux dans les fichiers de log

Cela est probablement dû au fait que les fichiers de log précédents ont été écrasés par root. Cake Fuzzer fonctionne en tant que root, donc les nouveaux fichiers de log seront créés avec root comme propriétaire. Supprimez-les :

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

Aucun fichier dans le répertoire /cake_fuzzer d'une VM après un redémarrage

Si vous utilisez une VM avec partage de cake fuzzer avec votre machine hôte, assurez-vous que le répertoire hôte est correctement attaché à la VM invitée :

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

L'application cible plante après avoir exécuté Cake Fuzzer

Cake Fuzzer doit être situé sous le répertoire racine de la machine et le nom du répertoire de base doit être cake_fuzzer spécifiquement.

root@kitploit:~
mv CakeFuzzer/ /cake_fuzzer

Erreurs de "Patch" lors de l'exécution de instrument apply

Le processus d'instrumentation fait partie du flux d'exécution de Cake Fuzzer. Lorsque vous exécutez instrument apply suivi de instrument check, ces deux commandes devraient aboutir au même nombre de modifications.

Si vous obtenez une erreur de "patch", vous pouvez appliquer les patchs manuellement et supprimer le fichier de patch problématique. Les patchs se trouvent dans le répertoire /cake_fuzzer/cakefuzzer/instrumentation/pathces.

Erreurs de dépendances

Lors de l'installation ou de l'exécution, si vous avez une erreur de dépendance Python, installez manuellement les dépendances après être passé à l'environnement virtuel.

Passez d'abord à l'environnement virtuel

root@kitploit:~
source venv/bin/activate

Ensuite, vous pouvez installer les dépendances avec pip3.

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

Crédits

Inspiration

Ce projet a été inspiré par :

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

Commanditaire

Ce projet a été commandité par : Forces armées luxembourgeoises Cake Fuzzer

Contributeurs initiaux

  • Dawid Czarnecki (auteur original)
  • Adam Bobowski (développeur principal)
  • @Kattorne
  • Ulaş Deniz İlhan
Télécharger l’outil