Treballar amb HTTP/2 en Burp Suite: proves, ajustos i atacs d'alt nivell

Darrera actualització: 11/11/2025
  • HTTP/2 en Burp permet vistes de camps a l'Inspector i edició estil H1 amb normalització per explotar vectors exclusius.
  • Els downgrades H2→H1 reintrodueixen H2.CL/H2.TE, sol·liciten tunneling i cache poisoning amb alt impacte.
  • El control fino (protocolo per petició, ALPN override, connexió H2) i ajustos del projecte marcan hallazgos.
  • Pràctiques com CRLF en noms de capçalera i HEAD per confirmar túneles descobertes capçaleres internes crítiques.

HTTP/2 i Burp Suite

HTTP/2 ha obert una superfície de proves que abans era gairebé intocable amb eines centrades en HTTP/1. Burp Suite, des del seu Inspector i el seu editor de missatges, permet manipular i analitzar les sol·licituds H2 amb un control que no pots trobar en altres productes. Si ja fa pentesting web, dominar com Burp treballa amb HTTP/2 és clau per descobrir falls moderns com a dessincronitzacions, sol·liciteu contrabans i baixes de nivell o injeccions impossibles en HTTP/1.

A més, els ajustos fins de Burp (protocolo per defecto, opcions de Repeater, listeners del Proxy i tractament de respostes especials) marquen la diferència entre un fals negatiu i explotar una bretxa crítica. Aquí té una guia pràctica, de nivell professional, que integra l'essencial del protocol, les funcions úniques de Burp i les tècniques d'atac més actuals , tot explicat en un espanyol natural i directe.

Per què HTTP/2 canvien les regles del joc en Burp Suite

Molts servidors ja parlen HTTP/2 , i amb ell apareixen fallos impossibles de detectar si us limiten a HTTP/1. Burp Suite us deixeu triar entre dos modes de treball amb peticions H2: una representació estil HTTP/1 en l'editor (Burp normaliza i envia l'equivalent en HTTP/2) o la vista del camp de HTTP/2 en el Inspector , que mostra capçaleres i pseudo-cabeceras reals i us permet construir atacs exclusius de HTTP/2.

Amb aquesta combinació, podeu explorar vectors que només han estat auditats per falta d'eines adequades fins a poc. La capacitat de Burp per veure i editar pseudo-cabeceras, injectar nous caràcters en capçaleres i manipular el format binari de H2 es traduirà en hallazgos molt jugosos, com a variants modernes de request smuggling.

Per defecto, Burp negocia HTTP/2 quan el servidor l'anunciï via ALPN durant el handshake TLS . Encara que no busqui fallos de protocol, t'aprofites el rendiment de H2; i quan sí els busqueu, podeu forçar la versió en cada sol·licitud des de l'Inspector.

Quan estàs buscant vulnerabilitats a nivell de protocol, és imprescindible saber quina versió utilitza en cada cop. Burp lo deixa clar en diversos punts: línia de petició i d'estat en el editor , etiqueta de protocol en Repeater (zona superior dreta) i Request Attributes en el Inspector . En contextos no editables, és informatiu; en Proxy/Repetidor, pots alternar la versió i reenviar.

També pots canviar protocol a mano per petició . Burp transforma automàticament el missatge per al mar vàlid en el nou format. Si vols provar HTTP/2, encara que el servidor no ho anunciï per ALPN, activa Allow HTTP/2 ALPN override al menú de Repeater i podràs tantear el suport H2 ocult.

Inspector d'HTTP/2

Conceptes clau de HTTP/2 que necessites dominar

HTTP/2 és binari . En HTTP/1 tot és text i els servidors separats camps amb operacions de cadena (dos punts, salts de línia, etc.). En H2 els dades estan a offsets definits, així que els delimitadors perden el significat . Això obre la porta a metre noves seqüències en nombres i valors de capçaleres que en H1 van trencar el missatge, i alguns servidors toleren pes a la que dicta l'especificació.

En la red, los mensajes H2 viajan en frames : un de cabeceras (equivalent a línea de petición + capçaleres de H1) i, si toca, diversos de dades amb el cos. Burp per simplicidad no te mostra els frames per separat ; us ofereix una vista unificada per treballar còmode sense perdre la fidelitat del contingut.

La longitud del missatge en H2 és explícita: cada frame porta el seu propi camp de longitud i el servidor suma. Això evita ambigüedades típiques de Content-Length o Transfer-Encoding en H1. Aun així, aquest choque entre els móns es torna arma quan hi hagi front-ends que degradan H2 a H1 per parlar amb el back-end.

Introducció a HTTP/2 pseudocapçaleres que substituïxen a la línia de petició i la línia d'estat: :method, :path, :authority, :scheme y :status (esta última sol en respostes). Segons la RFC, han de ser abans que les capçaleres normals, y Burp las envía en orden fijo a menos que lo cambies en el Inspector.

Ojo amb la compatibilitat: els nombres de cabecera en H2 haurien d'estar en minúscules . És tècnicament possible usar mayúsculas, pero alguns servidors rebutgen la petició per incumplir la especificació. Per això, la normalització de Burp evita que conviertes sense querer un missatge vàlid en H1 en un invàlid en H2.

Pseudocapçaleres HTTP/2

Dos formes de treballar amb peticions a Burp: editor vs Inspector

A l'editor de missatges podeu utilitzar una representació estil HTTP/1 per a peticions HTTP/2. Burp normaliza els vostres canvis i envia un equivalent H2 al servidor. És ideal quan el protocol et dóna igual i vols ir ràpid provant l'aplicació.

En el Inspector, en canvi, té una vista nativa d'HTTP/2 amb les pseudo-cabeceras i cada capçalera en camps de Nombre/Valor. Com no depèn de la sintaxi H1, pots construir càrregues útils H2 exclusives: inyectar dos punts en nombres de capçalera, espais o salts de línea en mètode i path, o CRLF dins de capçaleres. Moltes d'aquestes edicions son tan simples com doble clic i teclat, i per inserir CRLF podeu obrir el detall de la capçalera i utilitzar Maj + Tornada per introduir \r\n.

Al fer edicions que no es poden representar en H1 sense perdre informació, Burp marca la solicitud com kettled . En aquest cas, l'editor deixa d'intentar mostrar un equivalent H1 i veràs una notificació explicant per què està kettled ; el cuerpo sigue visible, pero cualquier cambio en cabeceras lo harás desde el Inspector.

Rastrear i canviar el protocol en cada petició

Burp usa HTTP/2 per defecto si el servidor ho anuncia per ALPN . Si necessites centrar-te en fallos que requereixen H1 (per exemple, CL.TE o TE.CL clàssics), pots canviar el protocol per defecto del projecte a Configuració > Xarxa > HTTP , marcant l'opció de preferir H2. Siempre podrás sobrescribirlo per petició amb el modificador del protocolo de l'Inspector.

Per identificar la versió a l'ús, Burp lo expone en diversos llocs: línia de petició/estado del editor , l'indicador en Repeater junt a l'host de destinació, i en el Inspector > Request Attributes . En contextos editables, aquest selector us permet actualitzar o rebaixar la sol·licitud al vol.

Si vols provar el suport H2 no anunciat (HTTP/2 oculto), activa en Repeater Allow HTTP/2 ALPN override . Amb això, podràs forçar HTTP/2 fins i tot quan el servidor no sigui públic per ALPN i descobriràs superfícies d'atac escondides.

En escenaris raros en els que el client que navega a través del Proxy té problemes amb la seva implementació H2, podeu desactivar HTTP/2 en un listener del Proxy : Configuració > Eines > Proxy > Proxy listeners > Editar > pestaña HTTP/2 i desmarcar el suport HTTP/2. Esto afecta solo la conexión cliente-Burp; no canvia la connexió Burp-servidor.

Peticiones kettled: què son, cómo se producen y cómo revertirlas

Una petició es torna kettled quan introdueix modificacions que no es poden representar amb sintaxis HTTP/1 sense perdre informació. Exemples: afegir una lletra mayúscula o dos punts al nombre d'una capçalera, CRLF en el nom o valor , espais en :path o :method , modificar :scheme , duplicar pseudo-cabeceras o insertar ; i espai en un valor de cookie.

Si has passat de frenada, pots deshacer amb Ctrl/Cmd + Z , revertir manualment des de l'Inspector els canvis que causaven l'estat kettled (la notificació de l'editor te lo chiva) o forçar el downgrade a HTTP/1 acceptant que se perderan canvis incompatibles: Burp normalizarà la sol·licitud i descartarà lo il·legible en H1.

Les extensions poden crear i emetre noves peticions kettled , per això podeu desenvolupar els vostres propis complements per a proves en H2. Sense embargo, de moment no poden modificar les sol·licituds kettled que hagi creat Burp, perquè només accedeix a la representació normalitzada estil H1.

Com a millora en el roadmap de Burp, es treballa en ampliar el suport de kettled en més eines , amb especial focus en que Intruder pugui manejar la forma nativa.

Opcions i ajustos HTTP/2 en Burp

El repetidor incorpora opcions específiques per a H2. Pots mantenir el protocol en redireccions entre dominis (aplicar l'elecció del protocol) per a que els salts entre dominis s'iniciïn amb la versió seleccionada, crucial quan les vulnerabilitats H2 disparin peticions a altres hosts . També pots habilitar o deshabilitar la reutilització de connexions H2: alguns servidors tracten diferents la primera petició o deixen connexions en estat corrupte, provocant intermitències; si lo desactivas, tu solicitud será siempre la primera del socket.

Otra opció de Repeater: per defecto Burp elimina la capçalera Connection en sol·licituds H2 , perquè molts servidors H2 les rechazan. Si us apeteixi experimentar, podeu canviar aquesta conducta i enviar Connection igualment. I, com ja hem vist, Allow HTTP/2 ALPN override et permet forçar H2 sense anunci ALPN.

Més allá de H2, Burp permet configurar tipus de redirecció permesos (3xx amb Location, Refresh header, meta refresh, JavaScript, qualsevol estat amb Location), i tractar respostes en streaming per a no trencar aplicacions de sortida continua (com les interfícies amb LLMs o SSE). El Proxy pot passar el stream en temps real , Repeater actualitza la resposta al vol i el resta d'eines que ignoren. Podeu decidir si emmagatzemar fluxos complets , eliminar metadades de chunked o tractar text/event-stream com a transmissió automàtica.

En respostes amb Status 100 , Burp puede entendre 100-Continue (saltant la resposta intermedia i analitzant la real) i retirar les capçaleres 100 abans de passar al resto d'eines. En HTTP/1, Burp pot utilitzar keep-alive si el servidor el suporta i cerra les connexions TCP desactivades durant 5 segons . Todos estos son ajustes de proyecto , aplican solo al proyecto actual.

HTTP/2 ocult: detecció i mitigació

Es habitual trobar servidors que suporten H2 però no ho anuncian per ALPN . Això oculta la superfície d'atac i pot derivar en request smuggling per downgrade . La recepta és sencilla: ignora ALPN i prova a mandar H2 . Amb Burp (ALPN override en Repeater) o amb utilitats com curl using prior-knowledge , podeu detectar aquest patró ràpidament.

En cuanto a defensa, si quieres usar H2, asegúrate de anunciarlo bien . Y si no lo necesitas, desactívalo del todo para no exponer superficie innecesaria. En entorns amb downgrades H2->H1, la recomanació és evitarlos i parlar H2 extrem a extrem.

Ataques i vectors exclusius de HTTP/2

La gran família de fallos en H2 arriba amb el downgrade H2 a H1 en el front-end . El front entiende la longitud per frames de H2, però el back-end degradat torna a Content-Length/Transfer-Encoding . Ese desacuerdo reintroduce desincronizaciones con nuevas variantes: H2.CL (el front no valida CL) y H2.TE (accepta capçaleres de connexió prohibides com TE).

Un cas cel·lebre de H2.CL va afectar a un gran lloc de streaming. Al mandar una petició HTTP/2 amb Content-Length erróneo i un payload dissenyat, el back-end cortava abans de temps i tractava el resto com a nova petició , permetent prefixar la sol·licitud d'un altre usuari . Amb un prefix que provocava redireccions controlades, l'impacte escalava un robot de comptes i dades sensibles.

En la veritable H2.TE , alguns equilibradors accepten indebidament Transfer-Encoding: chunked en el downgrade i ho prioritzaran davant un Content-Length injectat pel front-end. Resultat: col·lapses el cos abans i cuelas una segona petició , amb impactes des de fugues de codis OAuth fins a l'execució de JS via redireccions en recursos estàtics.

Un altre patró potent és la injecció de capçaleres durant el downgrade usant CRLF dins del valor d'una capçalera H2 . En certs CDN, això permetia introduir Transfer-Encoding: chunked al volcarlo a H1 i desencadenar H2.TE amb cache poisoning persistente, aconseguint el control de les pàgines servides des de la caché.

La variant H2.X per request splitting apareix quan, al degradar, el front-end inserit el \r\n\r\n de tancament de capçaleres i converteix el vostre prefix en una petició completa . Es va observar un efecte dominat: cada usuari va rebre la resposta destinada a l'anterior, amb exposició de PII i cookies de sessió . Alguns intents de parcheo incomplets han deixat vies com a injecció en pseudo-cabeceras o bloquejar CRLF però no LF solt , que segueix sent explotable.

Túneles de petición (request tunnelling): confirmar y explotar

Hi ha front-ends que no reutilitzen connexions al back-end o aplicacions polítiques 1:1 amb el client. En aquests escenaris, no pots influir en la següent petició i les tècniques clàssiques de confirmació fallen. Lo que sí queda és el túnel de petición : colar una segona sol·licitud en el mateix viatge i obtenir dos respostes del back-end.

La confirmació amb H1 és ambigua perquè concatenar respostes és normal en keep-alive . Amb H2, si ves capçaleres HTTP/1 incrustades en el cos de la resposta H2 , té la prova del cotó. Un problema addicional: alguns front-ends lien només tants bytes com a indicació del Content-Length de la primera resposta, ocultant la segona.

La solució pràctica que millor funciona és canviar a HEAD en la sol·licitud visible, de forma que la primera resposta traiga només capçaleres . Això fa que el front-end sobre-lea i t'entreguem l'inici de la segona resposta . Si a més tunes una segona sol·licitud invàlida , la seva resposta d'error sol arribar abans i facilitar la detecció. Ten paciencia: per sensibilitat temporal , pot requerir diversos intents.

Per explotar de veritat, centrar en capçaleres internes que el front-end injecta (identitat de l'usuari, claus internes, routing). Amb la sol·licitud de túnel, podeu bypassar la reescriptura/protecció i collar sense filtres. Si no coneix els seus noms, utilitzeu eines com Param Miner, que poden adivinar capçaleres internes per diferències en la resposta quan viatgen pel túnel.

Incluso sin conocerlas, puedes provocar desacuerdo sobre dónde empieza el cuerpo : si el front cree que parte de tu payload es cabecera, insertará sus internas en medio ; el back pot tractar-les com a part del vostre paràmetre i reflectir aquests valors . Esta tècnica és útil inclòs quan el túnel és ciego i sol recupera una resposta.

En condicions favorables, el túnel permet un enverinament a la memòria cau avançat : utilitzant HEAD, mescles de capçaleres d'una resposta amb Location reflectant d'una altra i aconsegueix que els navegadors interpretin el contingut com a HTML/JS, controlant persistentment les rutes cacheades.

Primitives extra: duplicats, :scheme y división de nombres

HTTP/2 permet escenaris impensables en H1: he vist servidors que accepten múltiples :path i utilitza un o altre de forma inconsistent, obrint vies de desví de ruta . També existeix la coexistència de :authority y Host ; al poder faltar un o un altre, emergen ataques de Host header canviant com una capa u otra resuelve el destí.

La pseudo-cabecera :scheme merece atención. Alguns sistemes usats per construir URL de forma ingenua; si pots escriure bytes arbitraris, injectes prefixos d'URL , canvis de camins i en ocasions envenenes cachés o provocacions SSRF si s'utilitza per rutear la petició aigües avall.

Otra tècnica és la divisió del nombre de capçalera permetent dos punts en el nom. No sempre genera desync perquè el downgrade añade otro : final, però sí que afavoreix atacs d'Host quan els servidors ignoren el que segueix al port. Si el back tolera rarezas, podeu forçar línies de petició vàlides injectant espais en :method (observat en combinacions amb mod_proxy) per saltar bloquejos de rutes.

Per últim, hi ha back-ends que encara suporten la línia de plegat a H1. Si el front-end accepta noms de capçalera que empieza a l'espai i no ordena capçaleres, pots contaminar capçaleres posteriors (incloses internes). S'han vist exemples on el Request-Id reflectit acabat mostrant dades inserides mitjançant una capçalera amb l'espai inicial.

Herramientas, flux de treball i trucs de productivitat

Per automatitzar, existeix un stack HTTP/2 simplificat en Turbo Intruder que transforma les sol·licituds H1 a H2 i aplica mapes de caràcters útils per a les explotacions: ^ → \r, ~ → \n, ` → : . Incluso pots sobrescribir pseudo-cabeceras declarant com a capçaleres H1 fictícies i controlar així el downgrade en servidors vulnerables. Per a proves amb trucades i detecció avançada d'interaccions, podeu utilitzar Burp Collaborator en fluxos automatitzats.

Si el stack H2 minimalista no es porta bé amb algun objectiu, podeu invocar el stack nativo de Burp des de Turbo Intruder (Engine.BURP2), que és més tolerant amb comportaments rars. Burp Scanner i extensions com a HTTP Request Smuggler i integren les deteccions d'aquestes variants (inclou el túnel amb HEAD ), i Param Miner ajuda a descobrir capçaleres internes per diferències de resposta.

En quant a estabilidad, vigila la reutilización de conexiones : alguns targets tractan la primera petició de forma diferent o es queden amb sockets corruptes. En Burp Repeater podeu desactivar la reutilització H2 i en Turbo Intruder ajustar requestsPerConnection per evitar que els efectes residuals distorsionen les vostres proves.

A la interfície actual de Burp (nous Inspectores), el control de la versió HTTP està en Request attributes arriba a la dreta. Canviar el mètode dins del cos i no té efecte com a ocorregut en versions antigues; ara se maneja tot des de la vista de l'Inspector i la lògica de protocol.

Ejercicio práctico con Burp: CRLF en nombres de cabecera y túnel a /admin

Comença amb un ACONSEGUIR / Repetidor, subjecció a H2 Atributs de sol·licitud y añade una cabecera arbitraria. En el Nom, injecta un CRLF per col·locar-ne un Amfitrió addicional, per exemple: foo: bar\r\nHost: abc i com Valor pon algo inocu. Si la resposta reacció al teu Host injectat, n'ha confirmat una inyección de CRLF via noms de capçalera.

Localitza un endpoint que reflecteix paràmetres (com un cerca). Canvia el mètode amb clic dret (Change request method) i confirma la cerca funciona amb POST enviant cerca al cos. Ara, a la capçalera arbitraria, inyecta un Content-Length grande i un cerca del segon paràmetre tras un doble CRLF, per exemple: foo: bar\r\nContent-Length: 500\r\n\r\nsearch=x.

Rellena el cos principal amb dades de relleno fins a superar el Content-Length smuggleado . Al enviar, l'aplicació reflectirà capçaleres añadidas pel front-end (cookies de sessió, flags SSL i, lo important, una clau única de front-end ) dins de la resposta.

Canvia el mètode visible a CAP i al capçal maliciós contrabandejar una petició GET al panel de administración con las cabeceras internas que has aprendido: \r\n\r\nGET /admin HTTP/1.1\r\nX-SSL-VERIFIED: 1\r\nX-SSL-CLIENT-CN: administrator\r\nX-FRONTEND-KEY: TU-CLAVE\r\n\r\nSi reps un error de bytes insuficients, apunta a un recurs amb cos més curt (Per exemple, /login) per a la part frontal sobre-lea i et muestre l'inici de la segona resposta en el cos H2.

En aquesta resposta anitat podràs localitzar l'URL administrativa sensible (per exemple, /admin/delete?username=carlos) I actualitzar la ruta de la petició smuggleada. Encara que la resposta visible pot ser d'error, l'acció s'executa perquè ha viatjat pel túnel fins al back-end amb les credencials internes correctes.

Aquest exemple agrupa diverses idees: CRLF en nombre de capçalera en H2 , abuso de Content-Length en downgrade, confirmació amb HEAD i ús de capçaleres internes injectades per al front per aconseguir un panell restringit.

La combinación de conocimientos de protocolo, Inspector de Burp para H2 , y técnicas de desync et permeten cobrir vectors que van des del smuggling clàssic reimaginat fins a la poisoning de caché persistente , passant per fugas de PII i execució de JavaScript en llocs d'alt perfil. Amb ajustaments béns mitjans (protocolo per defecto, reutilització de connexions, overrides d'ALPN) i pràctica amb Repeater e Inspector, tindràs control real sobre com viatjaran les teves peticions i sobre com trencaran les accions entre les capes quan s'enfrontaria a HTTP/2 i HTTP/1.

usos típics de Burp Collaborator
Article relacionat:
Usos típics de Burp Col·laborador: guía completa y práctica
Articles Relacionats: