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

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

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

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

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

Категории

Все категории
Loading categories
jdam — Структурно-ориентированный фаззер JSON | Kitploit
Инструменты/GitLabGitLab/michenriksen/jdam
Анализ уязвимостейЭксплуатация веб-приложенийФаззингТестирование на Проникновение
GitLabmichenriksen/jdam

jdam

Структурно-ориентированный фаззер JSON

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

Популярное

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

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

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

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

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

jdam - Структурно-осознанный fuzzing JSON

jdam

jdam — это инструмент, вдохновлённый [Radamsa], для фаззинга произвольных JSON-объектов с учётом структуры, что гарантирует, что результаты фаззинга всегда будут корректным JSON.

Многие существующие инструменты фаззинга слепо изменяют входные данные и часто приводят к получению некорректного JSON. Это означает, что фазз-тестирование будет задействовать только JSON-парсер целевого приложения, а тестирование никогда не достигнет основного кода приложения, потому что запросы невалидны. Jdam — попытка решить эту проблему.

jdam содержит несколько модулей мутации, каждый из которых нацелен на выявление потенциальных проблем и уязвимостей в системах, обрабатывающих фаззированные данные. Некоторые модули выполняют случайные изменения, такие как удаление, замена, перестановка и повторение случайных байтов, инвертирование булевых значений и отрицание чисел, в то время как другие модули заменяют значения полезными нагрузками, которые пытаются вызвать определённые типы уязвимостей, такие как:

  • [SQL-инъекция]
  • [Инъекция команд]
  • [LDAP-инъекция]
  • [NoSQL-инъекция]
  • [Инъекция форматной строки]
  • [Локальное включение файла]
  • [Целочисленное переполнение]
  • и другие

Чтобы увидеть полный список доступных мутаторов, используйте jdam -list.

Примечание

jdam всё ещё довольно сырой, и следует ожидать ошибок. Тем не менее, он достаточно стабилен для выпуска для самых смелых пользователей, но пока относитесь к нему как к альфа-программному обеспечению!

Установка

Загрузите предварительно собранный [релиз] для вашей операционной системы или клонируйте репозиторий и скомпилируйте с помощью go build -o jdam cmd/jdam/*.

Использование

Usage of jdam:
  -count int
    	Number of fuzzed objects to generate (default 1)
  -ignore string
    	Comma-separated list of fields to exclude from fuzzing
  -list
    	List available mutators
  -max-depth int
    	Maximum object depth to fuzz (default 100)
  -mutators string
    	Comma-separated list of mutator IDs to use (default: all)
  -nil-chance float
    	Probability of value being set to nil (between 0 (no nils) and 1 (all nils)) (default 0.75)
  -output string
    	Output file pattern to use for results (e.g. /tmp/jdam-%d.json)
  -rounds int
    	Number of times to fuzz object (default 1)
  -seed int
    	Seed to use for pseudo-random number generator (default: current UNIX timestamp)
  -verbose
    	Print activity information
  -version
    	Print current jdam version

jdam работает путём передачи в него корректного JSON-объекта ({...}) через конвейер. По умолчанию jdam выполняет одну случайную перестановку на случайном поле и выводит результирующий JSON-объект:

$ echo '{"hello":"world"}' | jdam
{"hello":{"id":1}}

Исходный JSON может быть мутирован несколько раз с помощью флага -rounds, но имейте в виду, что предыдущие полезные нагрузки фаззинга также могут быть мутированы:

$ echo '{"hello":"world"}' | jdam -rounds 10
{"hello":{"_constructor":"${42*444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444442}"}}

Несколько фаззированных объектов можно сгенерировать с помощью флага -count:

$ echo '{"hello":"world"}' | jdam -count 10
{"hello":"sorld"}
{"hello":"../../../../../../../../../../../../../../../../../../../../etc/passwd"}
{"hello":"{{42*42}}"}
{"hello":null}
{"hello":"' \u0026\u0026 this.password.match(/.*/)//+\u0000"}
{"hello":{"$where":"1"}}
{"hello":"null"}
{"hello":"\";touch /tmp/jdam.70797.fail'"}
{"hello":null}
{"hello":"|| 1==1"}

Запись результатов в файлы

jdam может записывать результаты фаззинга в отдельные файлы, если вы хотите подготовить тестовые файлы вместо использования STDOUT команды:

$ echo '{"hello":"world"}' | jdam -count 10 -output "/tmp/jdam-%d.json"

Приведённая выше команда создаст 10 файлов в /tmp от jdam-1.json до jdam-10.json. Специальный спецификатор %d будет автоматически заменён на порядковый номер, чтобы результаты можно было записывать в отдельные файлы.

Игнорирование полей

Если вы хотите, чтобы jdam никогда не мутировал определённые поля в исходном JSON-объекте, вы можете указать jdam игнорировать их с помощью флага -ignore:

$ echo '{"id":13,"articleId":37,"comment":"Hello"}' | ./jdam -count 10 -ignore id,articleId
{"id":13,"articleId":37,"comment":"%x%x%x%x"}
{"id":13,"articleId":37,"comment":"search=')] | //user/*[contains(*,'"}
{"id":13,"articleId":37,"comment":"' and count(/comment())=1 and '1'='1"}
{"id":13,"articleId":37,"comment":"\u0016ello"}
{"id":13,"articleId":37,"comment":"/"}
{"id":13,"articleId":37,"comment":null}
{"id":13,"articleId":37,"comment":"{{{42*42}}}"}
{"id":13,"articleId":37,"comment":"@*"}
{"id":13,"articleId":37,"comment":"Helloooooooooooooooo"}
{"id":13,"articleId":37,"comment":"//*"}

Использование jdam с Ffuf

[ffuf] — это отличный веб-фаззер, и jdam легко может использоваться в качестве входных данных для фаззинга:

ffuf -input-cmd 'cat subject.json | jdam -rounds 3' -d FUZZ -u http://localhost/api/todos/1 -X PUT -v -mc 500 -mr 'error|failed|failure|fault|abort|root:|1764|0x|\d{20}' -od /tmp/ffuf_test

Приведённая выше команда укажет ffuf получать свои входные данные для фаззинга от jdam и отправлять их в теле запроса к PUT /api/todos/1. Детали запроса и ответа будут записаны в tmp/ffuf_test/, если ответом является 500 Internal Server Error или тело ответа содержит определённые интересные строки.

Использование jdam в качестве пакета

Если вы знаете [Go] и вам нужен очень специализированный фаззинг, вы можете использовать jdam в своём собственном коде на Go. Примеры использования см. в папке examples/.

На что обращать внимание

Фаззинг полезен только в том случае, если вы можете обнаружить, что конкретная мутация вызвала проблему или спровоцировала уязвимость. Эти признаки будут различаться в зависимости от целевой системы и окружения, но вот несколько хороших общих моментов, на которые стоит обратить внимание:

Скачать инструмент