Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PyJFuzz — PyJFuzz - Python JSON Fuzzer | Kitploit
Tools/GitHubGitHub/mseclab/pyjfuzz
Dynamische Analyse (Sandboxing)SchwachstellenanalyseAPI-SicherheitstestsWebsicherheitFuzzing
GitHubmseclab/pyjfuzz

PyJFuzz

PyJFuzz - Python JSON Fuzzer

Repository anzeigen
37767vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

LOGO

PyJFuzz ist ein kleines, erweiterbares und sofort einsatzbereites Framework zum Fuzzing von JSON-Eingaben, wie z.B. mobile REST-API-Endpoints, JSON-Implementierungen, Browser, CLI-Anwendungen und vieles mehr.

Version 1.1.0
Startseitehttp://www.mseclab.com/
GitHubhttps://github.com/mseclab/PyJFuzz
AutorDaniele Linguaglossa (@dzonerzy)
LizenzMIT - (siehe LICENSE-Datei)

Installation

Abhängigkeiten

Damit PyJFuzz funktioniert, benötigt es einige Abhängigkeiten: bottle, netifaces, GitPython und gramfuzz. Diese können über die automatische setup.py-Installation installiert werden.

Installation

Sie können PyJFuzz mit folgendem Befehl installieren:

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

Dokumentation und Beispiele

CLI-Tool

Nach der Installation erstellt PyJFuzz sowohl eine Python-Bibliothek als auch ein Befehlszeilenprogramm namens pjf (siehe Screenshot unten)

Menü

PJF

Bibliothek

PyJFuzz kann auch als Bibliothek arbeiten. Sie können sie wie folgt in Ihr Projekt importieren:

root@kitploit:~
from pyjfuzz.lib import *

Klassen

Die verfügbaren Objekte/Klassen sind die folgenden:

  • PJFServer - Wird verwendet, um integrierte HTTP- und HTTPS-Server zu starten und zu stoppen
  • PJFProcessMonitor - Überwacht Prozessabstürze und startet den Prozess bei jedem Absturz automatisch neu.
  • PJFTestcaseServer - Der Testfall-Server wird in Verbindung mit PJFProcessMonitor verwendet. Bei einem Prozessabsturz registriert und speichert der Testfall-Server das JSON, das den Absturz verursacht hat.
  • PJFFactory - Es ist das Hauptobjekt, das für das eigentliche Fuzzing von JSON-Objekten verwendet wird.
  • PJFConfiguration - Es ist die Konfigurationsdatei für jedes der verfügbaren Objekte.
  • PJFExternalFuzzer - Wird von PJFactory verwendet, ist eine Hilfsklasse, die eine Schnittstelle zu anderen Befehlszeilen-Fuzzern wie radamsa bietet.
  • PJFMutation - Wird von PJFFactory verwendet und stellt alle Mutationen bereit, die während der Fuzzing-Sitzung verwendet werden.
  • PJFExecutor - Bietet eine Schnittstelle zur Interaktion mit externen Prozessen.

Klassen

Beispiele

Im Folgenden finden Sie einige triviale Beispiele für die Implementierung eines PyJFuzz-gestützten Programms.

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 *

# Techniques may be defined by group , or by technique number
# groups are CHTPRSX , to understand what they are , please run pyjfuzz with -h switch or look at the command line screenshot
# This below will initalizate a config object which use only the P group attacks where P stay for Path Traversal
config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, techniques="P"))
# once a config object is defined you can access to config.techniques to view the selected techniques for your group
print("Techniques IDs: {0}".format(str(config.techniques)))
# you can eventually modify them!
config.techniques = [2]
# This way only attack number 2 (LFI Attack) will be performed!
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()

Manchmal müssen Sie standardmäßige, nicht anpassbare Einstellungen wie HTTPS- oder HTTP-Server-Port ändern. Dies kann auf folgende Weise erfolgen:

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

Denken Sie daran: Beim Ändern der Standard-Ports sollten Sie immer Ausnahmen behandeln, da Berechtigungen erforderlich sind!

Nachfolgend finden Sie eine umfassende Liste aller verfügbaren Einstellungen/Anpassungen des PJFConfiguration-Objekts:

Konfigurationstabelle

Techniken-Tabelle

Screenshots

Im Folgenden finden Sie einige Screenshots, die zeigen, was Sie von PyJFuzz erwarten können.

CLI

CLI2

CLI3

Integriertes Werkzeug

PyJFuzz wird mit einem integrierten Werkzeug namens PyJFuzz Web Fuzzer ausgeliefert. Dieses Werkzeug bietet eine automatische Fuzzing-Konsole über HTTP- und HTTPS-Server und kann verwendet werden, um fast jeden Webbrowser einfach zu fuzzen, selbst wenn Sie den Prozesszustand nicht kontrollieren können!

Es gibt zwei Schalter, um dieses Werkzeug zu starten (--browser-auto und --fuzz-web). Der erste führt einen automatischen Browser-Neustart durch, wenn ein Absturz auftritt, der andere versucht zu erkennen, wann ein Browser keine Anfragen mehr stellt. Beide speichern immer die Testfälle. Nachfolgend einige Screenshots.

FUZZ

FUZZ2

BROWSERAUTO

BROWSERAUTO2 Problem

Bitte senden Sie Probleme hier über GitHub, ich werde so schnell wie möglich einen Fix bereitstellen.

Ergebnisse

Nachfolgend eine Liste bekannter, von PyJFuzz gefundener Probleme. Die Liste wird wöchentlich aktualisiert.

  • 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)

Ende

Vielen Dank, dass Sie PyJFuzz verwenden!

Happy Fuzzing von mseclab

Tool herunterladen
NameTypBeschreibung
jsondictZu fuzzendes JSON-Objekt
json_filestrPfad zu einer JSON-Datei
parameterslist<str>Liste der zu fuzzenden Parameter (aus dem JSON-Objekt übernommen)
techniquesstr<int>Zeichenfolge der aktivierten Angriffe, verwendet zum Generieren von gefuzzten JSON, z.B. XSS, LFI usw. z.B. "CHPTRSX" (Siehe Techniken-Tabelle)
levelintFuzzing-Level im Bereich 0-6
utf8boolWenn wahr, wechselt von Unicode-Codierung zu reiner Byte-Darstellung
indentboolLegt fest, ob das Ergebnisobjekt eingerückt werden soll
url_encodeboolLegt fest, ob das Ergebnisobjekt URL-codiert werden soll
strong_fuzzboolLegt fest, ob starkes Fuzzing verwendet werden soll (starkes Fuzzing behält die JSON-Struktur nicht bei, nützlich für Parser-Fuzzing)
debugboolLegt fest, ob Debug-Ausgaben aktiviert werden sollen
excludeboolVon Fuzzing ausschließen: Parameter, die durch die Option 'parameters' ausgewählt wurden
notifyboolLegt fest, ob der Prozessmonitor benachrichtigt werden soll, wenn ein Absturz auftritt, nur in Verbindung mit PJFServer verwendet
htmlstrPfad zu einem HTML-Verzeichnis, das über PJFServer bereitgestellt werden soll
ext_fuzzboolLegt fest, ob die Binärdatei aus "command" als externer Fuzzer verwendet werden soll
cmd_fuzzboolLegt fest, ob die Binärdatei aus "command" als Fuzzing-Ziel verwendet werden soll
content_typestrLegt den Content-Type des Ergebnisses von PJFServer fest (Standard application/json)
commandlist<str>Befehl zur Ausführung: Jeder Parameter ist ein Listenelement. Sie können shlex.split aus Python verwenden.
IndexBeschreibung
0XSS-Injection (Polyglot)
1SQL-Injection (Polyglot)
2LFI-Angriff
3SQL-Injection Polyglot (2)
4XSS-Injection (Polyglot) (2)
5RCE-Injection (Polyglot)
6LFI-Angriff (2)
7Data-URI-Angriff
8LFI- und HREF-Angriff
9Header-Injection
10RCE-Injection (Polyglot) (2)
11Generische Template-Injection
12Flask-Template-Injection
13Zufallszeichen-Angriff