Napad na front-end i back-end sustave, koji omogućuje presretanje vanjskih upita

Otkriveno detalji novog napada na web stranice koje koriste front-end i back-end model, na primjer, one koje rade putem mreža za isporuku sadržaja, ravnoteživača opterećenja ili proxyja. Napad omogućuje umetanje određenih zahtjeva u sadržaj drugih zahtjeva koji se obrađuju u istom toku između front-enda i back-enda. Predložena metoda uspješno je primijenjena za organiziranje napada koji omogućuje presretanje autentifikacijskih parametara korisnika usluge PayPal, koja je isplatila istraživačima oko 40 tisuća dolara u okviru programa za informiranje o prisutnim neispravnim ranjivostima. Napad se također može primijeniti na web stranice koje koriste mrežu za isporuku sadržaja Akamai.

Suština problema je u tome što front-end i back-end često osiguravaju različite razine podrške za HTTP protokol, ali ipak enkapsuliraju zahtjeve različitih korisnika u zajednički kanal. Za komunikaciju između front-enda koji prima zahtjeve i back-enda koji obrađuje zahtjeve uspostavlja se dugoročna TCP veza, preko koje se prenose korisnički zahtjevi, koji se prosljeđuju putem niza jedan nakon drugoga s razdvajanjem pomoću HTTP protokola. Za razdvajanje zahtjeva mogu se koristiti zaglavlja „Content-Length“ (koje određuje ukupnu veličinu podataka u zahtjevu) i „Transfer-Encoding: chunked“ (omogućuje prijenos podataka u dijelovima, navodeći blokove različitih veličina u formatu „{veličina}\r\n{blok}\r\n{veličina}\r\n{blok}\r\n0“).

Problem nastaje ako front-end podržava samo „Content-Length“, ali ignorira „Transfer-Encoding: chunked“ (na primjer, tako je postupao CDN Akamai) ili obrnuto. U slučaju podrške za „Transfer-Encoding: chunked“ na obje strane, za napad se mogu koristiti osobine implementacije HTTP zaglavlja parsera (na primjer, kada front-end ignorira linije poput „Transfer-Encoding: xchunked“, „Transfer-Encoding: chunked“, „Transfer-Encoding:[tab]chunked“, „X: X[\n]Transfer-Encoding: chunked“, „Transfer-Encoding[\n]: chunked“ ili „Transfer-Encoding : chunked“, dok back-end uspješno obrađuje te zahtjeve).

U ovom slučaju, napadač može poslati zahtev u kojem su istovremeno navedeni zaglavlja „Content-Length“ i „Transfer-Encoding: chunked“, ali količina u „Content-Length“ ne odgovara veličini chunked-lanca, koja je manja od stvarne vrednosti. Ako front-end obradi i preusmeri zahtev prema „Content-Length“, a back-end očekuje završetak bloka na osnovu „Transfer-Encoding: chunked“, tada će se kraj podataka na osnovu „Transfer-Encoding: chunked“ odrediti ranije, a preostali deo napadačkog zahteva pronaći će se na početku sledećeg zahteva, tj. napadač će imati mogućnost da prikači proizvoljne podatke na početak tuđeg zahteva koji dolazi nakon toga.

Napad na front-end i back-end sustave, koji omogućuje presretanje vanjskih upita

Da bi se odredio problem u korištenom sklopu front-end-back-end, preko front-enda se može poslati zahtev vrste:

POST /about HTTP/1.1
Host: example.com
Transfer-Encoding: chunked
Content-Length: 4

1
Z
Q

Problem postoji ako back-end odmah ne obradi zahtev i očekuje dolazak finalnog nultog ograničavajućeg bloka chunked-podataka. Za potpuniju proveru pripremio specijalni alat koji takođe testira moguće metode skrivanja zaglavlja „Transfer-Encoding: chunked“ od front-enda.

Sprovođenje stvarnog napada zavisi od mogućnosti napadnutog sajta, na primer, prilikom napada na web-aplikaciju Trello, moguće je zameniti početak zahteva (ubaciti podatke tipa „PUT /1/members/1234… x=x&csrf=1234&username=testzzz&bio=cake“) i poslati poruku koja uključuje originalni zahtev strane korisnika i navedene u njemu Cookie autentičnosti. Za napad na saas-app.com pokazalo se mogućim da se izvrši umetanje JavaScript koda u odgovor, kroz njegovo umetanje u jedan od parametara zahteva. Za napad na redhat.com iskorišćen je unutrašnji obradnik za preusmeravanje na sajt napadača (postavljen je zahtev tipa „POST /search?dest=../assets/idx?redir=//redhat.com@evil.net/ HTTP/1.1“).

Primjena metode za mreže dostave sadržaja omogućila je jednostavnu zamjenu tražene web stranice putem zamjene zaglavlja „Host:”. Napad je također primjenjiv za organizaciju trovanja sadržaja sustava predmemoriranja i vađenje predmemoriranih povjerljivih podataka. Vrhuncem primjene metode bila je organizacija napada na PayPal, koji omogućava presretanje lozinki koje korisnici šalju tijekom autentifikacije (provedena je promjena zahtjeva iframe-a za izvršavanje JavaScript-a u kontekstu stranice paypal.com/us/gifts, za koju nije primijenjena CSP (Politika sigurnosti sadržaja)).

Zanimljivo je da je 2005. godine postojala predložena slična tehnika zamjene zahtjeva, koja omogućava zamjenu podataka u predmemoriranim proxyjima (Tomcat, squid, mod_proxy) ili zaobići blokade vatrozida putem navođenja nekoliko zahtjeva „GET” ili „POST” unutar jedne HTTP sesije.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster