Ataka prieš priekinės ir užpakalinės sistemos sistemas, leidžianti mums įsitraukti į trečiųjų šalių užklausas

Atskleista išsami informacija apie naują ataką prieš svetaines, kuriose naudojamas priekinio galo ir atgalinio modelio modelis, pvz., tose, kurios veikia per turinio pristatymo tinklus, apkrovos balansavimo priemones arba tarpinius serverius. Ataka leidžia, siunčiant tam tikras užklausas, įsiterpti į kitų užklausų, apdorojamų toje pačioje gijoje tarp priekinės ir užpakalinės sistemos, turinį. Siūlomas metodas buvo sėkmingai panaudotas organizuojant ataką, kuri leido perimti „PayPal“ paslaugos naudotojų autentifikavimo parametrus, kurie sumokėjo tyrėjams apie 40 tūkst. Ataka taip pat taikoma svetainėms, naudojančioms „Akamai“ turinio pristatymo tinklą.

Problemos esmė ta, kad frontends ir backends dažnai teikia skirtingą HTTP protokolo palaikymo lygį, tačiau tuo pačiu metu skirtingų vartotojų užklausas sujungia į bendrą kanalą. Norint sujungti frontend priėmimo užklausas ir backend apdorojimo užklausas, užmezgamas ilgalaikis TCP ryšys, per kurį perduodamos vartotojų užklausos, perduodamos grandine viena po kitos, atskirtos HTTP protokolu. Norėdami atskirti užklausas, antraštės „Turinys-ilgis“ (nustato bendrą užklausoje esančių duomenų dydį) ir „Perdavimo kodavimas: suskaidytas"(leidžia duomenis perkelti dalimis, nurodant skirtingų dydžių blokus formatu "{dydis}\r\n{block}\r\n{dydis}\r\n{blokas}\r\n0").

Problema kyla, jei sąsaja palaiko tik „Content-Length“, bet nepaiso „Transfer-Encoding: chunked“ (pavyzdžiui, Akamai CDN tai padarė) arba atvirkščiai. Jei Transfer-Encoding: chunked palaikoma abiejose pusėse, HTTP antraštės analizatorių diegimo ypatybės gali būti naudojamos atakai (pavyzdžiui, kai priekinė dalis nepaiso tokių eilučių kaip „Transfer-Encoding: xchunked“, „Transfer-Encoding: chunked“ ”, „Perdavimo kodavimas“ :[skirtukas], „X: X[\n]Perdavimo kodavimas: suskirstytas“, „Perdavimo kodavimas[\n]: suskirstytas“ arba „Perdavimo kodavimas : suskirstytas“ ir backend sėkmingai juos apdoroja).

Tokiu atveju užpuolikas gali išsiųsti užklausą, kurioje yra ir antraštės „Content-Length“ ir „Transfer-Encoding: chunked“, tačiau dydis lauke „Content-Length“ neatitinka suskirstytos grandinės dydžio. yra mažesnė už tikrąją vertę. Jei sąsaja apdoroja ir persiunčia užklausą pagal „Content-Length“, o užpakalinė programa laukia, kol blokas bus baigtas pagal „Transfer-Encoding: chunked“, tada duomenų, pagrįstų „Transfer-Encoding: chunked“, pabaiga bus būti nustatytas anksčiau ir likusi užklausos uodega užpuolikas bus kitos užklausos pradžioje, t.y. užpuolikas galės pridėti savavališkus duomenis prie kito perduodamos užklausos pradžios.

Ataka prieš priekinės ir užpakalinės sistemos sistemas, leidžianti mums įsitraukti į trečiųjų šalių užklausas

Norėdami nustatyti naudojamo sąsajos ir užpakalinės sistemos derinio problemą, galite išsiųsti tokią užklausą per sąsają:

POST /apie HTTP/1.1
Priegloba: example.com
Perdavimo kodavimas: suskaidytas
Patenkintas ilgis: 4

1
Z
Q

Problema kyla, jei užpakalinė programa iš karto neapdoroja užklausos ir laukia galutinio nulinio ribojimo suskirstytų duomenų bloko. Norėdami atlikti išsamesnį patikrinimą paruoštas speciali programa, kuri taip pat išbando galimus metodus, kaip paslėpti antraštę „Transfer-Encoding: chunked“ iš priekinės dalies.

Tikros atakos vykdymas priklauso nuo užpultos svetainės galimybių, pavyzdžiui, atakuodami „Trello“ žiniatinklio programą galite pakeisti užklausos pradžią (pakaitiniai duomenys, pvz., „PUT /1/members/1234... x=x&csrf“ =1234&username=testzzz&bio=cake“) ir išsiųskite pranešimą, kuriame yra originali trečiosios šalies vartotojo užklausa ir jame nurodytas autentifikavimo slapukas. Paaiškėjo, kad dėl atakos saas-app.com atsakyme galima pakeisti JavaScript kodą, pakeičiant jį viename iš užklausos parametrų. Atakuojant redhat.com, buvo naudojamas vidinis tvarkytojas, nukreipiantis į užpuoliko svetainę (formos „POST /search?dest=../assets/idx?redir=//“ užklausa[apsaugotas el. paštu]/ HTTP/1.1").

Naudojant turinio pristatymo tinklų metodą, buvo galima paprasčiausiai pakeisti prašomą svetainę, pakeičiant antraštę „Host:“. Ataka taip pat gali būti naudojama norint apnuodyti turinio talpyklos sistemų turinį ir išgauti talpykloje saugomus konfidencialius duomenis. Metodo viršūnė buvo atakos prieš PayPal organizavimas, leidžiantis perimti vartotojų autentifikavimo metu siunčiamus slaptažodžius (iframe užklausa buvo pakeista, kad būtų vykdoma JavaScript puslapio paypal.com/us/gifts kontekste, kuris CSP (turinio saugumo politika) nebuvo pritaikytas).

Įdomu tai, kad 2005 m pasiūlė iš esmės panaši užklausų klaidinimo technika, leidžianti klaidinti duomenis talpykloje saugomuose tarpiniuose serveriuose (Tomcat, squid, mod_proxy) arba apeiti ugniasienės blokavimą, nurodant kelias „GET“ arba „POST“ užklausas per vieną HTTP seansą.

Šaltinis: opennet.ru

Добавить комментарий