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
Outils/GitHubGitHub/mseclab/pyjfuzz
Analyse Dynamique (Sandboxing)Analyse des VulnérabilitésTests de Sécurité des APISécurité WebFuzzing
GitHubmseclab/pyjfuzz

PyJFuzz

PyJFuzz - Fuzzer JSON Python

Voir le dépôt
377674il y a 3 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

LOGO

PyJFuzz est un petit framework extensible et prêt à l'emploi utilisé pour fuzzer des entrées JSON, comme les API REST d'endpoints mobiles, les implémentations JSON, les navigateurs, les exécutables en ligne de commande et bien plus encore.

Installation

Dépendances

Pour fonctionner, PyJFuzz a besoin de certaines dépendances : bottle, netifaces, GitPython et gramfuzz. Vous pouvez les installer via l'installation automatique de setup.py.

Installation

Vous pouvez installer PyJFuzz avec la commande suivante

root@kitploit:~
git clone https://github.com/mseclab/PyJFuzz.git && cd PyJFuzz && sudo python setup.py install

Documentation et exemples

Outil en ligne de commande

Une fois installé, PyJFuzz crée à la fois une bibliothèque Python et un utilitaire en ligne de commande appelé pjf (capture d'écran ci-dessous)

MENU

PJF

Bibliothèque

PyJFuzz peut également fonctionner comme une bibliothèque, vous pouvez l'importer dans votre projet comme suit

root@kitploit:~
from pyjfuzz.lib import *

Classes

Les objets/classes disponibles sont les suivants :

  • PJFServer - Permet de démarrer et d'arrêter les serveurs HTTP et HTTPS intégrés.
  • PJFProcessMonitor - Utilisé pour surveiller les plantages de processus ; il redémarre automatiquement le processus à chaque plantage.
  • PJFTestcaseServer - Le serveur de cas de test est utilisé conjointement avec PJFProcessMonitor ; lorsqu'un processus plante, le serveur de cas de test enregistre et stocke le JSON à l'origine du plantage.
  • PJFFactory - C'est l'objet principal utilisé pour effectuer le véritable fuzzing des objets JSON.
  • PJFConfiguration - C'est le fichier de configuration pour chacun des objets disponibles.
  • PJFExternalFuzzer - Utilisé par PJFactory, c'est une classe auxiliaire qui fournit une interface vers d'autres fuzzers en ligne de commande tels que radamsa.
  • PJFMutation - Utilisé par PJFFactory, fournit toutes les mutations utilisées lors d'une session de fuzzing.
  • PJFExecutor - Fournit une interface pour interagir avec un processus externe.

CLASSES

Exemples

Voici quelques exemples simples de mise en œuvre d'un programme utilisant PyJFuzz

simple_fuzzer.py

root@kitploit:~
from argparse import Namespace
from pyjfuzz.lib import *

config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6))
fuzzer = PJFFactory(config)
while True:
    print fuzzer.fuzzed

custom_techniques.py

root@kitploit:~
from argparse import Namespace
from pyjfuzz.lib import *

# Les techniques peuvent être définies par groupe ou par numéro de technique.
# Les groupes sont CHTPRSX. Pour comprendre ce qu'ils sont, veuillez exécuter pyjfuzz avec l'option -h ou regarder la capture d'écran de la ligne de commande.
# Ce qui suit initialise un objet de configuration qui utilise uniquement les attaques du groupe P, où P correspond à Path Traversal.
config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, techniques="P"))
# Une fois un objet config défini, vous pouvez accéder à config.techniques pour voir les techniques sélectionnées pour votre groupe.
print("Techniques IDs: {0}".format(str(config.techniques)))
# Vous pouvez éventuellement les modifier !
config.techniques = [2]
# De cette façon, seule l'attaque numéro 2 (LFI Attack) sera effectuée !
fuzzer = PJFFactory(config)
while True:
    print fuzzer.fuzzed

simple_server.py

root@kitploit:~
from argparse import Namespace
from pyjfuzz.lib import *

config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, debug=True, indent=True))
PJFServer(config).run()

Parfois, vous pouvez avoir besoin de modifier des paramètres standard non personnalisables, comme le port du serveur HTTPS ou HTTP. Cela peut être fait de la manière suivante

root@kitploit:~
from argparse import Namespace
from pyjfuzz.lib import *

config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, indent=True))
print config.ports["servers"]["HTTP_PORT"]   # 8080
print config.ports["servers"]["HTTPS_PORT"]  # 8443
print config.ports["servers"]["TCASE_PORT"]  # 8888
config.ports["servers"]["HTTPS_PORT"] = 443  # Change HTTPS port to 443

Rappel : Lorsque vous modifiez les ports par défaut, vous devez toujours gérer les exceptions en raison des privilèges nécessaires !

Voici une liste complète de tous les paramètres/personnalisations disponibles de l'objet PJFConfiguration :

Tableau de configuration

Tableau des techniques

Captures d'écran

Voici quelques captures d'écran pour vous donner une idée de ce que vous pouvez attendre de PyJFuzz

CLI

CLI2

CLI3

Outil intégré

PyJFuzz est livré avec un outil intégré appelé PyJFuzz Web Fuzzer. Cet outil fournit une console de fuzzing automatique via un serveur HTTP et HTTPS. Il peut être utilisé pour fuzzer facilement presque n'importe quel navigateur web, même lorsque vous ne pouvez pas contrôler l'état du processus ! Deux options permettent de lancer cet outil (--browser-auto et --fuzz-web). La première effectue un redémarrage automatique du navigateur en cas de plantage, la seconde tente de détecter quand un navigateur n'effectue plus de requêtes. Les deux sauvegardent toujours les cas de test. Voici quelques captures d'écran.

FUZZ

FUZZ2

BROWSERAUTO

BROWSERAUTO2 Problèmes

Veuillez signaler tout problème ici via GitHub, je fournirai un correctif dès que possible.

Résultats

Voici une liste des problèmes connus découverts par PyJFuzz, la liste sera mise à jour chaque semaine

  • Double free in cJSON (https://github.com/DaveGamble/cJSON/issues/105)
  • Unhandled exception in picojson (https://github.com/kazuho/picojson/issues/94)
  • Memory leak in simpleJSON (https://github.com/nbsdx/SimpleJSON/issues/8)
  • Stack base buffer overflow in frozen (https://github.com/cesanta/frozen/issues/14)
  • Memory corruption with custom EIP (https://github.com/cesanta/frozen/issues/15)

Fin

Merci d'utiliser PyJFuzz !

Bon Fuzzing de la part de mseclab

Télécharger l’outil
Version 1.1.0
Page d'accueilhttp://www.mseclab.com/
Githubhttps://github.com/mseclab/PyJFuzz
AuteurDaniele Linguaglossa (@dzonerzy)
LicenceMIT - (voir le fichier LICENSE)
NomTypeDescription
jsondictObjet JSON à fuzzer
json_filestrChemin vers un fichier JSON
parameterslist<str>Liste des paramètres à fuzzer (extraits de l'objet JSON)
techniquesstr<int>Chaîne d'attaques activées, utilisée pour générer du JSON fuzzé, comme XSS, LFI, etc. ex. "CHPTRSX" (voir tableau des techniques)
levelintNiveau de fuzzing compris entre 0 et 6
utf8boolSi vrai, passe d'un encodage Unicode à une représentation pure en octets
indentboolDéfinit s'il faut indenter l'objet résultat
url_encodeboolDéfinit s'il faut encoder l'URL de l'objet résultat
strong_fuzzboolDéfinit s'il faut utiliser le strong fuzzing (le strong fuzzing ne préserve pas la structure JSON, utile pour le fuzzing d'analyseurs)
debugboolDéfinit s'il faut activer les impressions de débogage
excludeboolExclut du fuzzing les paramètres sélectionnés par l'option parameters
notifyboolDéfinit s'il faut notifier le moniteur de processus lors d'un plantage (uniquement utilisé avec PJFServer)
htmlstrChemin vers un répertoire HTML à servir au sein de PJFServer
ext_fuzzboolDéfinit s'il faut utiliser le binaire de "command" comme fuzzer externe
cmd_fuzzboolDéfinit s'il faut utiliser le binaire de "command" comme cible du fuzzer
content_typestrDéfinit le type de contenu du résultat de PJFServer (par défaut application/json)
commandlist<str>Commande à exécuter ; chaque paramètre est un élément de liste, vous pouvez utiliser shlex.split de Python
IndexDescription
0Injection XSS (Polyglotte)
1Injection SQL (Polyglotte)
2Attaque LFI
3Injection SQL polyglotte (2)
4Injection XSS (Polyglotte) (2)
5Injection RCE (Polyglotte)
6Attaque LFI (2)
7Attaque par URI de données
8Attaque LFI et HREF
9Injection d'en-tête
10Injection RCE (Polyglotte) (2)
11Injection de template générique
12Injection de template Flask
13Attaque par caractères aléatoires