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

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

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

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

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

Категории

Все категории
Loading categories
smugglefuzz — Быстрый сканер для обнаружения HTTP-атак типа downgrade smuggling, написанный на Go. | Kitploit
Инструменты/GitHubGitHub/moopinger/smugglefuzz
Сканеры уязвимостейЭксплуатация веб-приложенийТестирование безопасности APIВеб-безопасностьФаззингТестирование на Проникновение
GitHubmoopinger/smugglefuzz

smugglefuzz

Быстрый сканер для обнаружения HTTP-атак типа downgrade smuggling, написанный на Go.

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

Популярное

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

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

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

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

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

made-with-Go go-report license

SmuggleFuzz

SmuggleFuzz — настраиваемый и быстрый сканер для поиска уязвимостей типа HTTP downgrade smuggling. Благодаря возможности настройки списков гаджетов он позволяет глубже понять причины неудачных атак с использованием smuggling. Я уверен, что множество уязвимостей, основанных на HTTP downgrade smuggling, остаются необнаруженными. К сожалению, многие прекращают исследование после поверхностного сканирования. Используя SmuggleFuzz, вы сможете находить уязвимости smuggling, которые другие упускают.

Дополнительная информация: https://moopinger.github.io/blog/smugglefuzz/fuzzing/smuggling/2024/01/31/SmuggleFuzz.html

Установка

Скачайте копию со страницы релизов: https://github.com/Moopinger/smugglefuzz/releases

Или соберите самостоятельно:

root@kitploit:~
go install github.com/moopinger/smugglefuzz@latest

Другой способ:

root@kitploit:~
git clone https://github.com/moopinger/smugglefuzz.git
cd smugglefuzz
go build .
./smugglefuzz

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

У SmuggleFuzz три команды:

  • scan
root@kitploit:~

Usage:
  smugglefuzz scan [flags]

Examples:
	smugglefuzz scan -u https://example.com/ --confirm
	smugglefuzz scan -u https://example.com/ --filter TIMEOUT --confirm
	smugglefuzz scan -u https://example.com/ -w wordlist.txt -t 10 --confirm --filter TIMEOUT
	smugglefuzz scan --dc -u https://example.com/ -w wordlist.txt -x PUT --confirm

	//Multiple targets? just use -f instead of -u and provide a file with the targets in it:

	smugglefuzz scan -f multiple_targets.txt --confirm -t 10 
	smugglefuzz scan -f multiple_targets.txt -w wordlist.txt --confirm -s ./save-success.txt --filter TIMEOUT
	smugglefuzz scan -f multiple_targets.txt -w wordlist.txt -H "Cookie: date=...; session=...;" -s ./save-success.txt -x PUT --filter TIMEOUT

Flags:
  -c, --confirm               Enable this flag to send a confirmation to the target when a timeout is encountered. Helps confirm if the target is vulnerable.
  -d, --data string           HTTP/2 Data frame to send. eg: 99\r\n (default "99\r\n")
      --dc                    Disable colour in the output. This is useful when you want to save the output to a file.
  -f, --file string           A file containing multiple targets in url format. One target per line.
      --filter string         Filter responses by string or frame type, etc. For example: 405, 200, 502, TIMEOUT, RST, GOAWAY, etc.
  -H, --header string         Insert a custom header. It should be provided in the regular header format: "Cookie: date=...; session=...;"
  -h, --help                  help for scan
  -i, --interval int          The timeout interval in seconds. (default 5)
  -x, --method string         The HTTP request method to be used. (default "POST")
  -s, --save-success string   If a request is confirmed to be successful (via the --confirm flag), it will be saved to a file. This is useful when dealing with lots of targets.
  -t, --threads int           The number of threads to run. Smugglefuzz can go fast, so set the desired number. However, too many may upset any WAFs. (default 4)
  -u, --url string            The target URL to be scanned.
  -w, --wordlist string       Provide a custom list of gadgets to use. If not provided, the default list will be used.

  • request
root@kitploit:~

Usage:
  smugglefuzz request [flags]

Examples:
	smugglefuzz request -u https://www.example.com/ -a "content-length\t; 13"
	smugglefuzz request -u https://www.example.com/ -a "content-length\t; 13" -x PUT
	smugglefuzz request -u https://www.example.com/ -a "content-length\t; 13" -H "Cookie: date=...; session=...;" --data "223\r\n"

Flags:
  -a, --attack string   Attack Header, separated by (; ) like the wordlist in 'scan' mode.
  -d, --data string     HTTP/2 Data frame content to send. (default "99\r\n")
      --dc              Disable colour in the output.
  -H, --header string   Insert custom header. eg "Cookie: values"
  -h, --help            help for request
  -i, --interval int    Detection timeout interval in seconds. (default 5)
  -x, --method string   The method to use. (default "POST")
  -u, --url string      The target URL to submit the request to.

  • output

Эта команда просто выводит список стандартных гаджетов smuggle. Встроенное подтверждение пока работает только для H2.CL и H2.TE. Однако по-прежнему можно обнаруживать атаки H2.0 через тайм-ауты (–filter TIMEOUT) или OAST на вашем домене. (См. раздел о псевдозаголовках ниже)

Список слов (Wordlist)

SmuggleFuzz предоставляет пользователям полный контроль над запросами с помощью пользовательских списков слов. Эти списки имеют базовую структуру, которую следует соблюдать для оптимальной обработки запросов. Например, заголовки и их значения разделяются с помощью точки с запятой и пробела (; ) вместо обычного двоеточия, что упрощает включение значений с двоеточием в smuggling-запросы. Это также открывает возможности для различных мутаций и творческих подходов. Подробное руководство по созданию собственных полезных нагрузок можно найти в: исследовании HTTP/2 Джеймса Кеттла.

Инструмент включает готовый к использованию список из 125 smuggling-гаджетов, однако всегда есть место для расширения. Эти гаджеты можно просмотреть с помощью команды 'output', что даёт представление о структуре запросов. Пользователи могут запускать сканирование с пользовательскими списками слов, используя флаг 'w'. Список поддерживает URL-кодирование (%00) для непечатаемых байтовых значений, таких как возврат каретки и перевод строки, представленных как '%0d%0a' или '\r\n'. Хотя предоставленный список является исчерпывающим, создание собственных гаджетов может значительно повысить вероятность успеха.

H2C

Нужна поддержка h2c? Ознакомьтесь с веткой "experimental-h2c" в SmuggleFuzz.

Псевдозаголовки

Псевдозаголовки полностью поддерживаются и могут быть настроены с помощью синтаксиса ":name":

  • :authority
  • :scheme
  • :method

Эти заголовки особенно полезны при тестировании векторов атак H2.0. Например, при тестировании H2.0 smuggling с использованием методов на основе OAST могут быть эффективны следующие записи в списке слов:

Начиная с v0.1.8 [HOSTNAME] может использоваться в качестве заполнителя. SmuggleFuzz заменит его на имя хоста во время выполнения.

  • :authority; [HOSTNAME]\r\n\r\nGET / HTTP/1.1\r\nHost: uniqid.oastify.com\r\nX-HEADER:%20

или

  • :authority; [HOSTNAME]\r\n\r\nGET https://uniqid.oastify.com/ HTTP/1.1\r\nHost: [HOSTNAME]\r\nX-HEADER:%20

Обнаружение

Метод обнаружения, используемый в SmuggleFuzz, аналогичен тому, который применяли Albinowax в своих исследованиях HTTP/1 smuggling и defparam в инструменте Smuggler, но адаптирован для HTTP/2. К счастью, поскольку эти атаки связаны с понижением версии (downgrade), для обнаружения H2.CL и H2.TE можно использовать одну и ту же полезную нагрузку (тело запроса/DATA).

Важное правило для списков слов: для подтверждающей атаки успешно протащенные заголовки должны содержать следующие значения:

root@kitploit:~
CL: 13
TE: chunked

Каждый запрос включает "Body"/DATA-фрейм со значением "99\r\n". Если протащен заголовок TE, он интерпретируется сервером как chunked длина содержимого 153 (0x99) (если протащить удалось), что приводит к тайм-ауту. Аналогично, протаскивание заголовка CL с длиной содержимого 13 также приводит к тайм-ауту из-за невыполненной длины.

Подтверждающий запрос повторяет тот же запрос, который привёл к тайм-ауту, но с Data: "3\r\nABC\r\n0\r\n\r\n". Это удовлетворяет как chunked TE, так и CL=13, вызывая успешный ответ и потенциально указывая на уязвимость smuggling.

Благодарности (Без этих людей и проектов этого бы не существовало)

  • James Kettle
  • Emile Lerner
  • golang.org/x/net/http2
  • golang.org/x/net/http2/hpack
  • github.com/spf13/cobra
  • GoReleaser
Скачать инструмент