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
PyJFuzz — PyJFuzz - Fuzzer JSON in Python | Kitploit
Strumenti/GitHubGitHub/mseclab/pyjfuzz
Analisi Dinamica (Sandboxing)Analisi delle VulnerabilitàTest di Sicurezza delle APISicurezza WebFuzzing
GitHubmseclab/pyjfuzz

PyJFuzz

PyJFuzz - Fuzzer JSON in Python

Vedi Repository
377673 anni 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

LOGO

PyJFuzz è un piccolo framework estensibile e pronto all'uso utilizzato per fuzzare input JSON, come API REST di endpoint mobili, implementazioni JSON, browser, eseguibili da riga di comando e molto altro.

Versione 1.1.0
Homepagehttp://www.mseclab.com/
GitHubhttps://github.com/mseclab/PyJFuzz
AutoreDaniele Linguaglossa (@dzonerzy)
LicenzaMIT - (vedi file LICENSE)

Installazione

Dipendenze

Per funzionare, PyJFuzz necessita di alcune dipendenze: bottle, netifaces, GitPython e gramfuzz. Puoi installarle automaticamente tramite setup.py.

Installazione

Puoi installare PyJFuzz con il seguente comando

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

Documentazione ed Esempi

Strumento CLI

Una volta installato, PyJFuzz creerà sia una libreria Python che un'utilità da riga di comando chiamata pjf (screenshot qui sotto)

MENU

PJF

Libreria

PyJFuzz può anche funzionare come libreria. Puoi importarla nel tuo progetto come segue

root@kitploit:~
from pyjfuzz.lib import *

Classi

Gli oggetti/classi disponibili sono i seguenti:

  • PJFServer - Utilizzato per avviare e fermare i server HTTP e HTTPS integrati
  • PJFProcessMonitor - Utilizzato per monitorare i crash dei processi, riavvia automaticamente il processo ogni volta che si arresta
  • PJFTestcaseServer - Il server di testcase viene utilizzato in combinazione con PJFProcessMonitor; ogni volta che un processo va in crash, il server di testcase registra e memorizza il JSON che ha causato il crash
  • PJFFactory - È l'oggetto principale utilizzato per eseguire il vero fuzzing degli oggetti JSON
  • PJFConfiguration - È il file di configurazione per ciascuno degli oggetti disponibili
  • PJFExternalFuzzer - Utilizzato da PJFactory, è una classe ausiliaria che fornisce un'interfaccia verso altri fuzzer da riga di comando come radamsa
  • PJFMutation - Utilizzato da PJFFactory, fornisce tutte le mutazioni utilizzate durante la sessione di fuzzing
  • PJFExecutor - Fornisce un'interfaccia per interagire con processi esterni

CLASSI

Esempi

Di seguito alcuni esempi banali su come implementare un programma basato su 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 *

# Le tecniche possono essere definite per gruppo o per numero di tecnica
# I gruppi sono CHTPRSX; per capire cosa sono, esegui pyjfuzz con l'opzione -h o guarda lo screenshot della riga di comando
# Questo qui sotto inizializza un oggetto config che utilizza solo gli attacchi del gruppo P, dove P sta per Path Traversal
config = PJFConfiguration(Namespace(json={"test": ["1", 2, True]}, nologo=True, level=6, techniques="P"))
# Una volta definito un oggetto config, puoi accedere a config.techniques per visualizzare le tecniche selezionate per il tuo gruppo
print("Techniques IDs: {0}".format(str(config.techniques)))
# Puoi eventualmente modificarle!
config.techniques = [2]
# In questo modo verrà eseguito solo l'attacco numero 2 (LFI Attack)!
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()

A volte potresti aver bisogno di modificare impostazioni standard non personalizzabili come la porta del server HTTP o HTTPS; questo può essere fatto nel seguente modo

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  # Cambia la porta HTTPS a 443

Ricorda: Quando cambi le porte predefinite, dovresti sempre gestire le eccezioni dovute ai privilegi necessari!

Di seguito una lista completa di tutte le impostazioni / personalizzazioni disponibili dell'oggetto PJFConfiguration:

Tabella di configurazione

Tabella delle tecniche

Screenshot

Di seguito alcuni screenshot per farti capire cosa aspettarti da PyJFuzz

CLI

CLI2

CLI3

Strumento integrato

PyJFuzz è fornito con uno strumento integrato chiamato PyJFuzz Web Fuzzer, questo strumento fornirà una console di fuzzing automatica tramite server HTTP e HTTPS. Può essere utilizzato per fuzzare facilmente quasi tutti i browser web, anche quando non puoi controllare lo stato del processo!

Ci sono due opzioni utilizzate per avviare questo strumento (--browser-auto e --fuzz-web): la prima esegue il riavvio automatico del browser quando si verifica un crash, l'altra tenta di rilevare quando un browser non effettua più richieste. Entrambe salvano sempre i testcase. Di seguito alcuni screenshot.

FUZZ

FUZZ2

BROWSERAUTO

BROWSERAUTO2 Problemi

Per favore, segnala qualsiasi problema qui su GitHub. Fornirò una correzione il prima possibile.

Risultati

Di seguito una lista di problemi noti trovati da PyJFuzz. La lista verrà aggiornata settimanalmente

  • Doppio free in cJSON (https://github.com/DaveGamble/cJSON/issues/105)
  • Eccezione non gestita in picojson (https://github.com/kazuho/picojson/issues/94)
  • Perdita di memoria in simpleJSON (https://github.com/nbsdx/SimpleJSON/issues/8)
  • Overflow del buffer basato su stack in frozen (https://github.com/cesanta/frozen/issues/14)
  • Corruzione della memoria con EIP personalizzato (https://github.com/cesanta/frozen/issues/15)

Fine

Grazie per aver usato PyJFuzz!

Happy Fuzzing da mseclab

Scarica lo strumento
NomeTipoDescrizione
jsondictOggetto JSON da fuzzare
json_filestrPercorso di un file JSON
parameterslist<str>Lista di parametri da fuzzare (presi dall'oggetto JSON)
techniquesstr<int>Stringa di attacchi abilitati, utilizzata per generare JSON fuzzato, come XSS, LFI ecc. es. "CHPTRSX" (Guarda la tabella delle tecniche)
levelintLivello di fuzzing nell'intervallo 0-6
utf8boolSe true, passa dalla codifica unicode alla rappresentazione pura di byte
indentboolImposta se indentare l'oggetto risultato
url_encodeboolImposta se codificare URL l'oggetto risultato
strong_fuzzboolImposta se utilizzare il strong fuzzing (il strong fuzzing non mantiene la struttura JSON, utile per il fuzzing di parser)
debugboolImposta se abilitare le stampe di debug
excludeboolEsclude dal fuzzing i parametri selezionati dall'opzione parameters
notifyboolImposta se notificare al monitor dei processi quando si verifica un crash, utilizzato solo con PJFServer
htmlstrPercorso di una directory HTML da servire all'interno di PJFServer
ext_fuzzboolImposta se utilizzare il binario da "command" come fuzzer esterno
cmd_fuzzboolImposta se utilizzare il binario da "command" come target del fuzzer
content_typestrImposta il tipo di contenuto risultato di PJFServer (default application/json)
commandlist<str>Comando da eseguire; ogni parametro è un elemento della lista, puoi usare shlex.split di Python
IndiceDescrizione
0Iniezione XSS (Polyglot)
1Iniezione SQL (Polyglot)
2Attacco LFI
3Polyglot SQL injection (2)
4Iniezione XSS (Polyglot) (2)
5Iniezione RCE (Polyglot)
6Attacco LFI (2)
7Attacco Data URI
8Attacco LFI e HREF
9Iniezione header
10Iniezione RCE (Polyglot) (2)
11Iniezione generica di template
12Iniezione di template Flask
13Attacco a caratteri casuali