
Burp Suite拡張機能で、リクエストを傍受してHTTP/3経由で送信し、レスポンスをBurp用に変換します。kettledリクエストとHTTP/3機能チェックをサポートします。
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 | 上記の 2 つのモードを切り替えます |
| 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 ^ |