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

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

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

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

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

Категории

Все категории
Loading categories
smuggler — Инструмент для тестирования контрабанды HTTP-запросов и десинхронизации на Python, который обнаруживает уязвимости CL.TE и TE.CL с помощью настраиваемых мутационных полезных нагрузок и автоматического сканирования. | Kitploit
Инструменты/GitHubGitHub/defparam/smuggler
Сканеры уязвимостейЭксплуатация веб-приложенийВеб-безопасностьТестирование на Проникновение
GitHubdefparam/smuggler

smuggler

Инструмент для тестирования контрабанды HTTP-запросов и десинхронизации на Python, который обнаруживает уязвимости CL.TE и TE.CL с помощью настраиваемых мутационных полезных нагрузок и автоматического сканирования.

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

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
root@kitploit:~
  ______                         _              
 / _____)                       | |             
( (____  ____  _   _  ____  ____| | _____  ____ 
 \____ \|    \| | | |/ _  |/ _  | || ___ |/ ___)
 _____) ) | | | |_| ( (_| ( (_| | || ____| |    
(______/|_|_|_|____/ \___ |\___ |\_)_____)_|    
                    (_____(_____|               

     @defparam

Smuggler

Инструмент для тестирования манипуляции HTTP-запросами (HTTP Request Smuggling / Desync), написанный на Python 3

Благодарности

Особая благодарность James Kettle за его исследования и методы работы с HTTP-десинхронизациями

И особая благодарность Ben Sadeghipour за бета-тестирование Smuggler и за возможность обсудить мою работу на Nahamcon 2020

ВАЖНО

Этот инструмент не гарантирует отсутствие ложноположительных или ложноотрицательных результатов. Тот факт, что мутация может сообщать об отсутствии проблем, не означает, что нет проблемы десинхронизации, и, что более важно, сам факт, что инструмент указывает на потенциальную проблему, не означает, что она действительно существует. Скрипт может взаимодействовать с обработчиками запросов крупных организаций (например, Google/AWS/Yahoo/Akamai и т.д.), что может приводить к ложноположительным результатам.

Установка

  1. git clone https://github.com/defparam/smuggler.git
  2. cd smuggler
  3. python3 smuggler.py -h

Примеры использования

Один хост:

root@kitploit:~
python3 smuggler.py -u <URL>

Список хостов:

root@kitploit:~
cat list_of_hosts.txt | python3 smuggler.py

Параметры

root@kitploit:~
usage: smuggler.py [-h] [-u URL] [-v VHOST] [-x] [-m METHOD] [-l LOG] [-q]
                   [-t TIMEOUT] [--no-color] [-c CONFIGFILE]

optional arguments:
  -h, --help            show this help message and exit
  -u URL, --url URL     Target URL with Endpoint
  -v VHOST, --vhost VHOST
                        Specify a virtual host
  -x, --exit_early      Exit scan on first finding
  -m METHOD, --method METHOD
                        HTTP method to use (e.g GET, POST) Default: POST
  -l LOG, --log LOG     Specify a log file
  -q, --quiet           Quiet mode will only log issues found
  -t TIMEOUT, --timeout TIMEOUT
                        Socket timeout value Default: 5
  --no-color            Suppress color codes
  -c CONFIGFILE, --configfile CONFIGFILE
                        Filepath to the configuration file of payloads

Smuggler требует как минимум либо URL через аргумент -u/--url, либо список URL, переданный через stdin. Если в URL указано https://, Smuggler будет подключаться к хосту:порту с использованием SSL/TLS. Если указано http://, SSL/TLS не используется. Если указан только хост, скрипт по умолчанию использует https://

Используйте -v/--vhost <хост> для указания заголовка Host, отличного от адреса сервера

Используйте -x/--exit_early для завершения сканирования данного сервера при обнаружении потенциальной проблемы. В режиме pipe Smuggler просто перейдёт к следующему хосту в списке

Используйте -m/--method <метод> для указания отличного от POST HTTP-глагола (например GET/PUT/PATCH/OPTIONS/CONNECT/TRACE/DELETE/HEAD и т.д.)

Используйте -l/--log <файл> для записи вывода в файл помимо stdout

Используйте -q/--quiet для уменьшения подробности вывода — логируются только найденные проблемы

Используйте -t/--timeout <значение> для указания таймаута сокета. Значение должно быть достаточно большим, чтобы убедиться, что сокет завис, но достаточно маленьким для ускорения тестирования (по умолчанию: 5)

Используйте --no-color для подавления цветовых кодов в выводе stdout (логи по умолчанию не содержат цветовых кодов)

Используйте -c/--configfile <файл_конфигурации> для указания вашего файла конфигурации мутаций smuggler (по умолчанию: default.py)

Файлы конфигурации

Файлы конфигурации — это Python-файлы, расположенные в каталоге ./config внутри smuggler. Они описывают содержимое HTTP-запросов и мутации transfer-encoding для тестирования.

Вот пример содержимого default.py:

root@kitploit:~
def render_template(gadget):
	RN = "\r\n"
	p = Payload()
	p.header  = "__METHOD__ __ENDPOINT__?cb=__RANDOM__ HTTP/1.1" + RN
	# p.header += "Transfer-Encoding: chunked" +RN	
	p.header += gadget + RN
	p.header += "Host: __HOST__" + RN
	p.header += "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36" + RN
	p.header += "Content-type: application/x-www-form-urlencoded; charset=UTF-8" + RN
	p.header += "Content-Length: __REPLACE_CL__" + RN
	return p


mutations["nameprefix1"] = render_template(" Transfer-Encoding: chunked")
mutations["tabprefix1"] = render_template("Transfer-Encoding:\tchunked")
mutations["tabprefix2"] = render_template("Transfer-Encoding\t:\tchunked")
mutations["space1"] = render_template("Transfer-Encoding : chunked")

for i in [0x1,0x4,0x8,0x9,0xa,0xb,0xc,0xd,0x1F,0x20,0x7f,0xA0,0xFF]:
	mutations["midspace-%02x"%i] = render_template("Transfer-Encoding:%cchunked"%(i))
	mutations["postspace-%02x"%i] = render_template("Transfer-Encoding%c: chunked"%(i))
	mutations["prespace-%02x"%i] = render_template("%cTransfer-Encoding: chunked"%(i))
	mutations["endspace-%02x"%i] = render_template("Transfer-Encoding: chunked%c"%(i))
	mutations["xprespace-%02x"%i] = render_template("X: X%cTransfer-Encoding: chunked"%(i))
	mutations["endspacex-%02x"%i] = render_template("Transfer-Encoding: chunked%cX: X"%(i))
	mutations["rxprespace-%02x"%i] = render_template("X: X\r%cTransfer-Encoding: chunked"%(i))
	mutations["xnprespace-%02x"%i] = render_template("X: X%c\nTransfer-Encoding: chunked"%(i))
	mutations["endspacerx-%02x"%i] = render_template("Transfer-Encoding: chunked\r%cX: X"%(i))
	mutations["endspacexn-%02x"%i] = render_template("Transfer-Encoding: chunked%c\nX: X"%(i))

На данный момент нет аргументов для указания собственных пользовательских заголовков и user-agent. Рекомендуется создать собственный файл конфигурации на основе default.py и изменить его по своему усмотрению.

Smuggler поставляется с 3 файлами конфигурации: default.py (быстрый), doubles.py (нишевый, медленный), exhaustive.py (очень медленный) default.py самый быстрый, так как содержит меньше мутаций.

Указывайте файлы конфигурации с помощью опции командной строки -c/--configfile <файл_конфигурации>

Каталог полезных нагрузок (payloads)

Внутри каталога Smuggler находится каталог payloads. Когда Smuggler обнаруживает потенциальную проблему десинхронизации CLTE или TECL, он автоматически сохраняет двоичный текстовый файл проблемной полезной нагрузки в каталог payloads. Все имена файлов payload аннотированы именем хоста, типом десинхронизации и типом мутации. Используйте эти payload для отправки напрямую на сервер через netcat или для импорта в другие инструменты анализа.

Вспомогательные скрипты

После обнаружения проблемы десинхронизации вы можете воспользоваться моими скриптами для Turbo Intruder, которые находятся здесь: https://github.com/defparam/tiscripts DesyncAttack_CLTE.py и DesyncAttack_TECL.py — отличные скрипты для подготовки атаки на десинхронизацию.

Лицензия

Данные скрипты распространяются под лицензией MIT. См. LICENSE.

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