Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/moopinger/smugglefuzz
漏洞扫描器Web应用程序漏洞利用API安全测试Web安全模糊测试渗透测试
GitHubmoopinger/smugglefuzz

smugglefuzz

用 Go 编写的快速 HTTP 降级走私扫描器。

查看仓库
31328542年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

made-with-Go go-report license

SmuggleFuzz

SmuggleFuzz,一个可配置且快速的 HTTP 降级走私扫描器。它允许用户自定义 gadget 列表,并提供关于走私攻击失败原因的深入洞察。我相信许多基于 HTTP 降级的走私漏洞尚未被发现。不幸的是,许多人在粗略扫描后就停止了探索。通过使用 SmuggleFuzz,你可以发现他人可能忽略的走私漏洞。

更多信息请参见 https://moopinger.github.io/blog/smugglefuzz/fuzzing/smuggling/2024/01/31/SmuggleFuzz.html

安装

从发布页面下载副本:https://github.com/Moopinger/smugglefuzz/releases

或者,自行构建:

go install github.com/moopinger/smugglefuzz@latest

另一种方式:

git clone https://github.com/moopinger/smugglefuzz.git
cd smugglefuzz
go build .
./smugglefuzz

用法

SmuggleFuzz 有三个命令:

  • scan

Usage:
  smugglefuzz scan [flags]

示例:
	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

	//多个目标?只需使用 -f 代替 -u,并提供一个包含目标的文件:

	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               启用此标志以在遇到超时时间时向目标发送确认。有助于确认目标是否存在漏洞。
  -d, --data string           要发送的 HTTP/2 Data 帧。例如:99\r\n (默认 "99\r\n")
      --dc                    在输出中禁用颜色。当你想将输出保存到文件时,这很有用。
  -f, --file string           一个包含多个目标的文件,格式为 URL。每行一个目标。
      --filter string         通过字符串或帧类型等过滤响应。例如:405, 200, 502, TIMEOUT, RST, GOAWAY 等。
  -H, --header string         插入自定义标头。应以常规标头格式提供:"Cookie: date=...; session=...;"
  -h, --help                  scan 的帮助信息
  -i, --interval int          超时间隔(秒)。(默认 5)
  -x, --method string         要使用的 HTTP 请求方法。(默认 "POST")
  -s, --save-success string   如果请求被确认为成功(通过 --confirm 标志),它将被保存到文件中。处理大量目标时很有用。
  -t, --threads int           要运行的线程数。Smugglefuzz 可以很快,因此设置所需的数字。但过多可能会触发任何 WAF。(默认 4)
  -u, --url string            要扫描的目标 URL。
  -w, --wordlist string       提供自定义的 gadget 列表。如果未提供,将使用默认列表。

  • request

Usage:
  smugglefuzz request [flags]

示例:
	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   攻击标头,使用(; )分隔,就像扫描模式中的 wordlist 一样。
  -d, --data string     要发送的 HTTP/2 Data 帧内容。(默认 "99\r\n")
      --dc              在输出中禁用颜色。
  -H, --header string   插入自定义标头。例如:"Cookie: values"
  -h, --help            request 的帮助信息
  -i, --interval int    检测超时时间间隔(秒)。(默认 5)
  -x, --method string   要使用的方法。(默认 "POST")
  -u, --url string      要提交请求的目标 URL。

  • output

这将输出默认的 smuggle gadget。目前内置确认仅适用于 H2.CL 和 H2.TE。但仍然可以通过超时(–filter TIMEOUT)或在你自己的域上使用 OAST 来检测 H2.0 攻击。(参见下面的伪标头部分)

词表

SmuggleFuzz 允许用户通过自定义词表完全控制请求。这些列表具有基本结构,应遵循该结构以实现最佳请求处理。例如,标头和它们的值使用“分号和空格(; )”进行分割,而不是通常的冒号,这样便于在走私请求中包含冒号值。这也为各种变体和创造性方法开辟了可能性。有关创建自己的有效负载的详细指导,请参阅:James Kettle 的 HTTP/2 研究。

该工具包含一个包含 125 个走私 gadget 的即用型列表,但总有扩展的空间。这些 gadget 可以使用“output”命令显示,从而深入了解查询的结构。用户可以使用“w”标志使用自定义词表运行扫描。该列表支持 URL 编码(%00)来表示不可打印的字节值,例如回车和换行表示为 '%0d%0a' 或 '\r\n'。虽然提供的列表很全面,但自己制作 gadget 可以显著提高成功率。

H2C

需要 h2c 支持?请查看 SmuggleFuzz 的 "experimental-h2c" 分支。

伪标头

伪标头完全受支持,可以使用 ":name" 语法进行自定义:

  • :authority
  • :scheme
  • :method

这些标头在测试 H2.0 攻击向量时特别有用。例如,在使用基于 OAST 的方法测试 H2.0 走私时,像下面这样的词表条目可能很有效:

从 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 走私的研究以及 defparam 的 Smuggler 中使用的方法类似,但针对 HTTP/2 进行了调整。幸运的是,由于这些攻击涉及降级,因此相同的请求正文 / DATA 有效负载可以同时用于 H2.CL 和 H2.TE 检测。

词表的一个重要指导原则是,成功走私的标头应包含以下值以进行确认攻击:

CL: 13
TE: chunked

每个请求都包含一个值为 "99\r\n" 的 "Body"/DATA-Frame。如果走私了 TE 标头,则服务器会将其解释为长度为 153(0x99)的分块内容长度(如果成功走私),从而导致超时。类似地,走私一个内容长度为 13 的 CL 标头也会因为未满足长度而导致超时。

确认请求会重新提交导致超时的相同查询,但 Data 为:"3\r\nABC\r\n0\r\n\r\n"。这同时满足分块 TE 和 CL 13,从而获得成功响应,并可能表明存在走私漏洞。

致谢(没有这些人和项目,这个工具就不会存在)

  • James Kettle
  • Emile Lerner
  • golang.org/x/net/http2
  • golang.org/x/net/http2/hpack
  • github.com/spf13/cobra
  • GoReleaser
下载工具