
Сканер HTTP-смугглинга запросов на базе Rust.
Сканер HTTP Request Smuggling на базе Rust.
Smugglex — это инструмент для тестирования безопасности, который обнаруживает уязвимости HTTP Request Smuggling в веб-приложениях. Он проверяет атаки CL.TE, TE.CL, TE.TE, H2C и H2, а на HTTPS-целях использует настоящий HTTP/2 (ALPN h2) для обнаружения понижения версии HTTP/2→HTTP/1.1 (H2.CL / H2.TE) с помощью проверки h2-downgrade.
Подробную документацию см. на smugglex.hahwul.com.
brew install hahwul/smugglex/smugglex
Требуется Rust 1.70 или новее:
git clone https://github.com/hahwul/smugglex
cd smugglex
cargo install --path .
Другие способы установки см. в Руководстве по установке.
Базовое сканирование:
smugglex https://target.com
Чтение URL из stdin:
cat urls.txt | smugglex
Воспроизведение перехваченного запроса (например, экспортированного из Burp Suite) в качестве шаблона запроса:
smugglex --raw-request request.txt # target taken from the Host header
smugglex --raw-request request.txt --raw-request-proto http
smugglex --raw-request request.txt -H "X-Collab: abcd.oastify.com" # -H is additive
Перехваченный request-target отправляется без изменений — dot-сегменты, матричные параметры и # сохраняются, а не нормализуются — как для строк запроса в origin-form (POST /path ...), так и в absolute-form (GET http://...), поэтому полезные нагрузки, основанные на пути, сохраняются. Любые заголовки -H добавляются поверх перехваченных.
Подробное использование и параметры см. в Руководстве по использованию.
smugglex https://target.com -v -o results.json
cat urls.txt | smugglex --exit-first
smugglex спроектирован для удобства автоматизированного использования:
# Clean JSON output (only JSON on stdout) + proper exit code
smugglex --json https://target.com
echo $? # 0 = clean, 1 = vulnerable found
# Batch + structured output (single valid JSON document)
cat urls.txt | smugglex -f json -o report.json
# Quiet + JSON for pipelines
smugglex -q --json https://target.com | jq '.summary.vulnerable_targets'
Коды выхода:
0 — Уязвимостей не найдено1 — Найдена хотя бы одна уязвимость2 — Ошибка использования / вводаСм. Руководство по конвейеру и Форматы вывода для получения дополнительной информации.
Частые проблемы и решения доступны в Руководстве по устранению неполадок.