
Extension Burp Suite qui intercepte les requêtes et les envoie via HTTP/3, en convertissant les réponses pour Burp, avec prise en charge des requêtes kettled et des vérifications de capacité HTTP/3.
Une extension Burp Suite qui envoie des requêtes via HTTP/3.
Burp ne prend pas en charge HTTP/3 nativement. Cette extension implémente une pile HTTP/3, intercepte toutes les requêtes, les convertit et les envoie via HTTP/3, puis reconvertit la réponse en une version HTTP que Burp peut comprendre.
Disponible dans le BAPP Store.
Compilez-le vous-même :
./gradlew jar # -> build/libs/HTTP3-Adapter-0.0.1.jar
En mode Explicit HTTP/3 only, ajoutez un en-tête X-Http3 :
GET /admin HTTP/1.1
Host: example.com
X-Http3: 1
En mode Always HTTP/3 where possible, tout le trafic sera adapté si l'application prend en charge HTTP/3.
Si vous voulez savoir si plusieurs hôtes de votre historique de proxy prennent en charge HTTP/3, vous pouvez les sélectionner et utiliser l'option de menu contextuel Check HTTP/3 Support qui rapporte dans l'organizer.
Settings -> Extensions -> HTTP/3 Adapter
| Paramètre | Valeur par défaut | Remarques |
|---|---|---|
| Mode | Explicit HTTP/3 only | Bascule entre les deux modes mentionnés ci-dessus |
| Handshake timeout (ms) | 10000 | |
| Request timeout (ms) | 15000 | |
| Reuse connections | on | |
| Log exchanges to Output | off | Écrit chaque requête et réponse adaptée dans le panneau Output. |
| Show unsupported origins tab | off | Voir ci-dessous. |
Strip Connection, Keep-Alive, Proxy-Connection, Transfer-Encoding, Upgrade | on | HTTP/3 interdit ces en-têtes, décochez pour les envoyer délibérément. |
| Verify TLS certificates | off | Correspond au comportement amont par défaut de Burp. |
Cet onglet vous montre quels hôtes ont échoué au handshake HTTP/3 QUIC. Vous pouvez vider cette liste pour réessayer si votre connexion est instable. L'onglet est masqué par défaut, mais peut être activé dans le panneau des paramètres.
Comme en HTTP/2, les requêtes peuvent être kettled.
Ajoutez un en-tête X-Kettled: 1 à côté de l'en-tête X-Http3: 1 et le bloc d'en-têtes est envoyé exactement tel qu'écrit. Les noms conservent leur casse, rien n'est supprimé, Host n'est pas replié dans :authority, et ces échappements sont décodés
en premier :
| Échappement | Octet |
|---|---|
^~ | CR LF |
^r | CR |
^n | LF |
^0 | NULL |
^s | espace |
^xNN | n'importe quel octet, deux chiffres hexadécimaux |
^^ | un ^ littéral |
POST /x HTTP/1.1
X-Http3: 1
X-Kettled: 1
:method: BREW
content-length: 10
foo: bar^~transfer-encoding:^schunked
0
hello