一个通过 HTTP/3 发送请求的 Burp Suite 扩展。
Burp 原生不支持 HTTP/3。此扩展实现了一个 HTTP/3 协议栈,拦截所有请求,将其转换并通过 HTTP/3 发送,然后将响应转换回 Burp 能够理解的 HTTP 版本。
可在 BAPP Store 中获取。
自行构建:
./gradlew jar # -> build/libs/HTTP3-Adapter-0.0.1.jar
在 Explicit HTTP/3 only 模式下添加一个 X-Http3 请求头:
GET /admin HTTP/1.1
Host: example.com
X-Http3: 1
在 Always HTTP/3 where possible 模式下,如果应用程序支持 HTTP/3,则任何流量都会被适配。
如果你想知道代理历史记录中的多个主机是否支持 HTTP/3,可以选中它们并使用 Check HTTP/3 Support 右键菜单选项,结果会报告到 organizer 中。
Settings -> Extensions -> HTTP/3 Adapter
此标签页会显示哪些主机未能通过 HTTP/3 QUIC 握手。如果你的连接不稳定,可以清除此列表以重试。该标签页默认隐藏,但可以在设置面板中启用。
与 HTTP/2 中一样,请求可以被 kettled。
在 X-Http3: 1 请求头旁边添加一个 X-Kettled: 1 请求头,请求头块将完全按所写内容发送。名称保留其大小写,不会剥离任何内容,Host 不会被折叠进 :authority,并且会首先解码以下转义序列:
POST /x HTTP/1.1
X-Http3: 1
X-Kettled: 1
:method: BREW
content-length: 10
foo: bar^~transfer-encoding:^schunked
0
hello
| Setting | Default | Notes |
|---|
| Mode | Explicit HTTP/3 only | 在上述两种模式之间切换 |
| Handshake timeout (ms) | 10000 | |
| Request timeout (ms) | 15000 | |
| Reuse connections | on | |
| Log exchanges to Output | off | 将每个适配后的请求和响应写入 Output 面板。 |
| Show unsupported origins tab | off | 见下文。 |
Strip Connection, Keep-Alive, Proxy-Connection, Transfer-Encoding, Upgrade | on | HTTP/3 禁止这些请求头,取消勾选可故意发送它们。 |
| Verify TLS certificates | off | 默认与 Burp 自身上游行为一致。 |
| Escape | Byte |
|---|
^~ | CR LF |
^r | CR |
^n | LF |
^0 | NULL |
^s | space |
^xNN | any byte, two hex digits |
^^ | a literal ^ |