Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/mseclab/pyjfuzz
Динамический анализ (песочница)Анализ уязвимостейТестирование безопасности APIВеб-безопасностьФаззинг
GitHubmseclab/pyjfuzz

PyJFuzz

PyJFuzz - фаззер JSON на Python

Репозиторий
3776743 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

LOGO

PyJFuzz — это небольшая, расширяемая и готовая к использованию среда для фаззинга JSON-входных данных, таких как REST API мобильных конечных точек, реализации JSON, браузеры, CLI-исполняемые файлы и многое другое.

Скачать инструмент
Версия 1.1.0
Домашняя страницаhttp://www.mseclab.com/
GitHubhttps://github.com/mseclab/PyJFuzz
АвторDaniele Linguaglossa (@dzonerzy)
ЛицензияMIT — (см. файл LICENSE)

Установка

Зависимости

Для своей работы PyJFuzz требует некоторые зависимости: bottle, netifaces, GitPython и gramfuzz. Вы можете установить их автоматически с помощью setup.py.

Установка

Вы можете установить PyJFuzz следующей командой:

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

Документация и примеры

CLI-инструмент

После установки PyJFuzz создаст как библиотеку Python, так и утилиту командной строки с именем pjf (скриншот ниже)

MENU

PJF

Библиотека

PyJFuzz также может работать как библиотека; вы можете импортировать её в свой проект следующим образом:

root@kitploit:~
from pyjfuzz.lib import *

Классы

Доступны следующие объекты/классы:

  • PJFServer — используется для запуска и остановки встроенных HTTP- и HTTPS-серверов.
  • PJFProcessMonitor — используется для мониторинга сбоев процессов; автоматически перезапускает процесс при каждом сбое.
  • PJFTestcaseServer — тестовый сервер используется совместно с PJFProcessMonitor; при сбое процесса тестовый сервер регистрирует и сохраняет JSON, вызвавший сбой.
  • PJFFactory — основной объект для выполнения реального фаззинга JSON-объектов.
  • PJFConfiguration — файл конфигурации для каждого из доступных объектов.
  • PJFExternalFuzzer — используется PJFactory, вспомогательный класс, предоставляющий интерфейс к другим фаззерам командной строки, таким как radamsa.
  • PJFMutation — используется PJFFactory, предоставляет все мутации, используемые во время сеанса фаззинга.
  • PJFExecutor — предоставляет интерфейс для взаимодействия с внешними процессами.

CLASSES

Примеры

Ниже приведены несколько тривиальных примеров реализации программы на базе 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()

Иногда вам может понадобиться изменить стандартные ненастраиваемые параметры, такие как порт HTTPS или HTTP-сервера; это можно сделать следующим образом:

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

Помните: При изменении портов по умолчанию всегда следует обрабатывать исключения, связанные с необходимыми привилегиями!

Ниже представлен полный список всех доступных настроек/параметров объекта PJFConfiguration:

Таблица конфигурации

ИмяТипОписание
jsondictJSON-объект для фаззинга
json_filestrПуть к JSON-файлу
parameterslist<str>Список параметров для фаззинга (взяты из JSON-объекта)
techniquesstr<int>Строка включённых атак: XSS, LFI и т.д. Например, "CHPTRSX" (см. таблицу техник)
levelintУровень фаззинга в диапазоне 0–6
utf8boolЕсли true, переключает кодировку с Unicode на чистое байтовое представление
indentboolУказывает, нужно ли делать отступы в результирующем объекте
url_encodeboolУказывает, нужно ли URL-кодировать результирующий объект
strong_fuzzboolУказывает, использовать ли сильный фаззинг (сильный фаззинг не сохраняет структуру JSON; полезен для фаззинга парсеров)
debugboolУказывает, нужно ли включать отладочный вывод
excludeboolИсключает из фаззинга параметры, выбранные параметром parameters
notifyboolУказывает, нужно ли уведомлять монитор процессов о сбое; используется только с PJFServer
htmlstrПуть к HTML-каталогу для обслуживания в PJFServer
ext_fuzzboolУказывает, использовать ли бинарный файл из “command” в качестве внешнего фаззера
cmd_fuzzboolУказывает, использовать ли бинарный файл из “command” как цель фаззинга
content_typestrУстанавливает тип содержимого результата PJFServer (по умолчанию application/json)
commandlist<str>Команда для выполнения; каждый параметр — элемент списка; можно использовать shlex.split из Python

Таблица техник

ИндексОписание
0XSS-инъекция (Polyglot)
1SQL-инъекция (Polyglot)
2LFI-атака
3SQL-инъекция polyglot (2)
4XSS-инъекция (Polyglot) (2)
5RCE-инъекция (Polyglot)
6LFI-атака (2)
7Data URI-атака
8LFI и HREF-атака
9Header-инъекция
10RCE-инъекция (Polyglot) (2)
11Общая инъекция шаблонов
12Инъекция шаблонов Flask
13Атака случайными символами

Скриншоты

Ниже несколько скриншотов, чтобы вы могли представить, чего ожидать от PyJFuzz.

CLI

CLI2

CLI3

Встроенный инструмент

PyJFuzz поставляется со встроенным инструментом под названием PyJFuzz Web Fuzzer. Этот инструмент предоставляет автоматическую консоль фаззинга через HTTP- и HTTPS-серверы и может использоваться для лёгкого фаззинга практически любого веб-браузера, даже если вы не можете контролировать состояние процесса!

Существует два переключателя для запуска этого инструмента (--browser-auto и --fuzz-web). Первый выполняет автоматический перезапуск браузера при сбое, второй пытается определить, когда браузер перестаёт отправлять запросы. Оба сохраняют тестовые случаи. Ниже несколько скриншотов.

FUZZ

FUZZ2

BROWSERAUTO

BROWSERAUTO2

Вопросы

Пожалуйста, сообщайте о любых проблемах здесь, через GitHub; я исправлю их как можно скорее.

Результаты

Ниже приведён список известных проблем, найденных с помощью PyJFuzz. Список будет обновляться еженедельно.

  • Double free в cJSON (https://github.com/DaveGamble/cJSON/issues/105)
  • Необработанное исключение в picojson (https://github.com/kazuho/picojson/issues/94)
  • Утечка памяти в simpleJSON (https://github.com/nbsdx/SimpleJSON/issues/8)
  • Переполнение буфера на стеке в frozen (https://github.com/cesanta/frozen/issues/14)
  • Повреждение памяти с произвольным EIP (https://github.com/cesanta/frozen/issues/15)

Конец

Спасибо за использование PyJFuzz!

Счастливого фаззинга от mseclab