Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
jdam — Un fuzzer JSON conscient de la structure | Kitploit
Outils/GitLabGitLab/michenriksen/jdam
Analyse des VulnérabilitésExploitation d'Applications WebFuzzingTests d'Intrusion
GitLabmichenriksen/jdam

jdam

Un fuzzer JSON conscient de la structure

Voir le dépôt
55852il y a 5 ansVé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

jdam - Fuzzing JSON conscient de la structure

jdam

jdam est un outil inspiré de [Radamsa] pour le fuzzing d'objets JSON arbitraires de manière consciente de la structure, ce qui garantit que les résultats du fuzzing seront toujours du JSON valide.

De nombreux outils de fuzzing existants modifient aveuglément l'entrée et rendent souvent le résultat invalide en JSON. Cela signifie que les tests de fuzzing ne sollicitent que l'analyseur JSON de l'application cible et n'atteignent jamais le code sous-jacent de l'application car les requêtes sont invalides. Jdam est une tentative de résoudre ce problème.

jdam est livré avec plusieurs modules de mutation qui visent tous à découvrir les problèmes potentiels et les vulnérabilités dans les systèmes qui traitent les données fuzzées. Certains modules effectuent des changements aléatoires tels que la suppression, le remplacement, l'échange et la répétition d'octets aléatoires, l'inversion de valeurs booléennes et la négation de nombres, tandis que d'autres modules remplacent les valeurs par des charges utiles qui tentent de déclencher des types de vulnérabilités spécifiques tels que :

  • [SQL Injection]
  • [Command Injection]
  • [LDAP Injection]
  • [NoSQL Injection]
  • [Format String Injection]
  • [Local File Inclusion]
  • [Integer Overflow]
  • et plus encore

Pour voir la liste complète des mutateurs disponibles, utilisez jdam -list.

Note

jdam est encore assez brut et des erreurs sont à prévoir. Il est néanmoins suffisamment stable pour être publié pour les personnes aventureuses, mais considérez-le comme un logiciel alpha pour l'instant !

Installation

Téléchargez une [release] précompilée pour votre système d'exploitation ou clonez le dépôt et compilez avec go build -o jdam cmd/jdam/*.

Usage

Usage of jdam:
  -count int
    	Number of fuzzed objects to generate (default 1)
  -ignore string
    	Comma-separated list of fields to exclude from fuzzing
  -list
    	List available mutators
  -max-depth int
    	Maximum object depth to fuzz (default 100)
  -mutators string
    	Comma-separated list of mutator IDs to use (default: all)
  -nil-chance float
    	Probability of value being set to nil (between 0 (no nils) and 1 (all nils)) (default 0.75)
  -output string
    	Output file pattern to use for results (e.g. /tmp/jdam-%d.json)
  -rounds int
    	Number of times to fuzz object (default 1)
  -seed int
    	Seed to use for pseudo-random number generator (default: current UNIX timestamp)
  -verbose
    	Print activity information
  -version
    	Print current jdam version

jdam fonctionne en lui fournissant un objet JSON valide ({...}) via un pipe. Par défaut, jdam effectue une permutation aléatoire sur un champ aléatoire et affiche l'objet JSON résultant :

$ echo '{"hello":"world"}' | jdam
{"hello":{"id":1}}

Le JSON sujet peut être muté plusieurs fois avec le drapeau -rounds, mais gardez à l'esprit que les charges utiles de fuzzing précédentes peuvent également être mutées :

$ echo '{"hello":"world"}' | jdam -rounds 10
{"hello":{"_constructor":"${42*444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444442}"}}

Plusieurs objets fuzzés peuvent être générés avec le drapeau -count :

$ echo '{"hello":"world"}' | jdam -count 10
{"hello":"sorld"}
{"hello":"../../../../../../../../../../../../../../../../../../../../etc/passwd"}
{"hello":"{{42*42}}"}
{"hello":null}
{"hello":"' \u0026\u0026 this.password.match(/.*/)//+\u0000"}
{"hello":{"$where":"1"}}
{"hello":"null"}
{"hello":"\";touch /tmp/jdam.70797.fail'"}
{"hello":null}
{"hello":"|| 1==1"}

Écriture des résultats dans des fichiers

jdam peut écrire les résultats de fuzzing dans des fichiers individuels si vous souhaitez préparer des fichiers de test plutôt que d'utiliser la sortie standard de la commande :

$ echo '{"hello":"world"}' | jdam -count 10 -output "/tmp/jdam-%d.json"

La commande ci-dessus générera 10 fichiers dans /tmp de jdam-1.json à jdam-10.json. Le verbe spécial %d sera automatiquement remplacé par un numéro séquentiel afin que les résultats puissent être écrits dans des fichiers individuels.

Ignorer des champs

Si vous voulez vous assurer que jdam ne mute jamais certains champs dans l'objet JSON sujet, vous pouvez lui demander de les ignorer avec le drapeau -ignore :

$ echo '{"id":13,"articleId":37,"comment":"Hello"}' | ./jdam -count 10 -ignore id,articleId
{"id":13,"articleId":37,"comment":"%x%x%x%x"}
{"id":13,"articleId":37,"comment":"search=')] | //user/*[contains(*,'"}
{"id":13,"articleId":37,"comment":"' and count(/comment())=1 and '1'='1"}
{"id":13,"articleId":37,"comment":"\u0016ello"}
{"id":13,"articleId":37,"comment":"/"}
{"id":13,"articleId":37,"comment":null}
{"id":13,"articleId":37,"comment":"{{{42*42}}}"}
{"id":13,"articleId":37,"comment":"@*"}
{"id":13,"articleId":37,"comment":"Helloooooooooooooooo"}
{"id":13,"articleId":37,"comment":"//*"}

Utiliser jdam avec Ffuf

[ffuf] est un fuzzer web fantastique et jdam peut facilement être utilisé comme entrée pour le fuzzing :

ffuf -input-cmd 'cat subject.json | jdam -rounds 3' -d FUZZ -u http://localhost/api/todos/1 -X PUT -v -mc 500 -mr 'error|failed|failure|fault|abort|root:|1764|0x|\d{20}' -od /tmp/ffuf_test

La commande ci-dessus demandera à ffuf d'obtenir son entrée de fuzzing depuis jdam et de l'envoyer comme corps de requête à PUT /api/todos/1. Les détails de la requête et de la réponse seront écrits dans tmp/ffuf_test/ si la réponse est 500 Erreur Interne du Serveur ou si le corps de la réponse contient certaines chaînes intéressantes.

Utiliser jdam comme un package

Si vous connaissez [Go] et avez besoin d'un fuzzing très spécialisé, vous pouvez utiliser jdam dans votre propre code Go. Consultez le dossier examples/ pour des exemples d'utilisation.

Que rechercher

Le fuzzing n'est utile que si vous pouvez détecter qu'une mutation particulière a causé un problème ou déclenché une vulnérabilité. Ces signes varieront en fonction du système cible et de l'environnement, mais voici quelques bonnes généralités à surveiller :

Télécharger l’outil