
Расширение Burp Suite, которое перехватывает запросы и отправляет их по HTTP/3, преобразуя ответы обратно для Burp, с поддержкой kettled-запросов и проверок поддержки HTTP/3.
Расширение для Burp Suite, отправляющее запросы по HTTP/3.
Burp не поддерживает HTTP/3 нативно. Это расширение реализует стек HTTP/3, перехватывает все запросы, преобразует и отправляет их по HTTP/3, а затем преобразует ответ обратно в версию HTTP, понятную Burp.
Доступно в 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
| 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 при обращении к upstream. |
Эта вкладка показывает, какие хосты не прошли QUIC-рукопожатие HTTP/3. Вы можете очистить этот список, чтобы повторить попытку при нестабильном соединении. Вкладка скрыта по умолчанию, но её можно включить на панели настроек.
Как и в HTTP/2, запросы могут быть kettled.
Добавьте заголовок X-Kettled: 1 вместе с заголовком X-Http3: 1, и блок заголовков будет отправлен точно как написано. Имена сохраняют регистр, ничего не удаляется, Host не сворачивается в :authority, а следующие escape-последовательности декодируются
первыми:
| Escape | Байт |
|---|---|
^~ | CR LF |
^r | CR |
^n | LF |
^0 | NULL |
^s | пробел |
^xNN | любой байт, две шестнадцатеричные цифры |
^^ | литеральный ^ |
POST /x HTTP/1.1
X-Http3: 1
X-Kettled: 1
:method: BREW
content-length: 10
foo: bar^~transfer-encoding:^schunked
0
hello