
Сканер HTTP-смугглинга запросов на базе Rust.
Сканер HTTP Request Smuggling на Rust.
Smugglex — это инструмент тестирования безопасности, который обнаруживает уязвимости HTTP Request Smuggling в веб-приложениях. Он проверяет атаки CL.TE, TE.CL, TE.TE, H2C и H2, предлагает опциональные аудиты parser-discrepancy, CL.0 и 0.CL, а на HTTPS-целях — использует настоящий HTTP/2 (ALPN h2) для обнаружения smuggling при понижении HTTP/2→HTTP/1.1 (H2.CL / H2.TE) с помощью проверки h2-downgrade.
Подробная документация доступна на smugglex.hahwul.com.
brew install hahwul/smugglex/smugglex
Требуется Rust 1.88 или новее:
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-segments, matrix params и #
сохраняются, а не нормализуются — как для строк запроса в origin-form (POST /path ...), так и в
absolute-form (GET http://...), поэтому payload'ы на основе пути сохраняются.
Любые заголовки -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 — ошибка использования / вводаДополнительную информацию см. в руководстве по пайплайнам и форматах вывода.
Типичные проблемы и их решения описаны в руководстве по устранению неполадок.