Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
PyJFuzz — PyJFuzz - Fuzzer JSON em Python | Kitploit
Ferramentas/GitHubGitHub/mseclab/pyjfuzz
Análise Dinâmica (Sandboxing)Análise de VulnerabilidadesTestes de Segurança de APIsSegurança WebFuzzing
GitHubmseclab/pyjfuzz

PyJFuzz

PyJFuzz - Fuzzer JSON em Python

Ver Repositório
37767há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

LOGO

PyJFuzz é um framework pequeno, extensível e pronto para uso utilizado para fuzzar entradas JSON, como endpoints REST API de dispositivos móveis, implementações JSON, navegadores, executáveis de linha de comando e muito mais.

Versão 1.1.0
Homepagehttp://www.mseclab.com/
Githubhttps://github.com/mseclab/PyJFuzz
AutorDaniele Linguaglossa (@dzonerzy)
LicençaMIT - (veja o arquivo LICENSE)

Instalação

Dependências

Para funcionar, o PyJFuzz precisa de algumas dependências: bottle, netifaces, GitPython e gramfuzz. Você pode instalá-las através da instalação automática do setup.py.

Instalação

Você pode instalar o PyJFuzz com o seguinte comando:

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

Documentação e Exemplos

Ferramenta CLI

Após a instalação, o PyJFuzz criará tanto uma biblioteca Python quanto um utilitário de linha de comando chamado pjf (captura de tela abaixo)

MENU

PJF

Biblioteca

PyJFuzz também pode funcionar como uma biblioteca. Você pode importá-la em seu projeto da seguinte forma:

root@kitploit:~
from pyjfuzz.lib import *

Classes

Os objetos/classes disponíveis são os seguintes:

  • PJFServer - Usado para iniciar e parar servidores HTTP e HTTPS embutidos
  • PJFProcessMonitor - Usado para monitorar falhas de processo; reiniciará automaticamente o processo sempre que ele falhar
  • PJFTestcaseServer - O servidor de testcase é usado em conjunto com o PJFProcessMonitor; sempre que um processo falha, o servidor de testcase registra e armazena o JSON que causou a falha
  • PJFFactory - É o objeto principal usado para realizar o fuzz real de objetos JSON
  • PJFConfiguration - É o arquivo de configuração para cada um dos objetos disponíveis
  • PJFExternalFuzzer - Usado pelo PJFactory, é uma classe auxiliar que fornece uma interface para outros fuzzers de linha de comando, como radamsa
  • PJFMutation - Usado pelo PJFFactory, fornece todas as mutações usadas durante a sessão de fuzzing
  • PJFExecutor - Fornece uma interface para interagir com processos externos

CLASSES

Exemplos

Abaixo alguns exemplos triviais de como implementar um programa alimentado pelo 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 *

# 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()

Às vezes você pode precisar modificar configurações padrão não personalizáveis, como a porta do servidor HTTPS ou HTTP. Isso pode ser feito da seguinte maneira:

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

Lembre-se: Ao alterar as portas padrão, você deve sempre tratar exceções devido aos privilégios necessários!

Abaixo uma lista abrangente de todas as configurações/personalizações disponíveis do objeto PJFConfiguration:

Tabela de configuração

Tabela de técnicas

Capturas de tela

Abaixo algumas capturas de tela para que você saiba o que esperar do PyJFuzz:

CLI

CLI2

CLI3

Ferramenta embutida

O PyJFuzz é fornecido com uma ferramenta embutida chamada PyJFuzz Web Fuzzer. Esta ferramenta fornecerá um console de fuzzing automático via servidor HTTP e HTTPS, podendo ser usada para fuzzar facilmente quase qualquer navegador web, mesmo quando você não pode controlar o estado do processo!

Existem duas opções usadas para iniciar esta ferramenta (--browser-auto e --fuzz-web). A primeira realiza o reinício automático do navegador quando ocorre uma falha; a outra tenta capturar quando um navegador não faz mais requisições. Ambas sempre salvam os testcases. Abaixo algumas capturas de tela.

FUZZ

FUZZ2

BROWSERAUTO

BROWSERAUTO2

Problemas

Por favor, envie qualquer problema aqui via GitHub. Fornecerei uma correção o mais rápido possível.

Resultado

Abaixo uma lista de problemas conhecidos encontrados pelo PyJFuzz. A lista será atualizada semanalmente.

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

Fim

Obrigado por usar PyJFuzz!

Feliz Fuzzing do mseclab

Baixar ferramenta
NomeTipoDescrição
jsondictObjeto JSON para fuzzar
json_filestrCaminho para um arquivo JSON
parameterslist<str>Lista de parâmetros para fuzzar (extraídos do objeto JSON)
techniquesstr<int>String de ataques habilitados, usada para gerar JSON fuzzado, como XSS, LFI etc. Ex.: "CHPTRSX" (Veja a tabela de técnicas)
levelintNível de fuzzing no intervalo 0-6
utf8boolSe verdadeiro, alterna de codificação unicode para representação pura de bytes
indentboolDefine se deve indentar o objeto resultante
url_encodeboolDefine se deve aplicar URLEncode ao objeto resultante
strong_fuzzboolDefine se deve usar strong fuzzing (strong fuzzing não manterá a estrutura JSON, útil para fuzzing de parsers)
debugboolDefine se deve habilitar impressões de depuração
excludeboolExcluir do fuzzing os parâmetros selecionados pela opção de parâmetros
notifyboolDefine se deve notificar o monitor de processo quando ocorrer uma falha, usado apenas com PJFServer
htmlstrCaminho para um diretório HTML a ser servido dentro do PJFServer
ext_fuzzboolDefine se deve usar o binário de "command" como um fuzzer externo
cmd_fuzzboolDefine se deve usar o binário de "command" como alvo do fuzzer
content_typestrDefine o tipo de conteúdo do resultado do PJFServer (padrão application/json)
commandlist<str>Comando a executar; cada parâmetro é um elemento da lista. Você pode usar shlex.split do Python
ÍndiceDescrição
0Injeção XSS (Polyglot)
1Injeção SQL (Polyglot)
2Ataque LFI
3Injeção SQL polyglot (2)
4Injeção XSS (Polyglot) (2)
5Injeção RCE (Polyglot)
6Ataque LFI (2)
7Ataque Data URI
8Ataque LFI e HREF
9Injeção de cabeçalho
10Injeção RCE (Polyglot) (2)
11Injeção genérica de template
12Injeção de template Flask
13Ataque de caracteres aleatórios