Напад на преден-заден систем кој ни овозможува да се вклопиме во барањата од трети страни

Откриено детали за нов напад на сајтови што користат преден-заден модел, како што се оние што работат преку мрежи за испорака на содржина, балансери на оптоварување или прокси. Нападот овозможува, со испраќање одредени барања, да се вклопи во содржината на други барања обработени во истата нишка помеѓу предниот дел и задниот дел. Предложениот метод беше успешно искористен за организирање напад што овозможи да се пресретнат параметрите за автентикација на корисниците на услугата PayPal, која на истражувачите им плати околу 40 илјади долари како дел од програмата за информирање за присуството на незакрпени пропусти. Нападот е применлив и на сајтови кои користат мрежа за испорака на содржина Akamai.

Суштината на проблемот е во тоа што предните делови и заднините често обезбедуваат различни нивоа на поддршка за протоколот HTTP, но во исто време ги инкапсулираат барањата од различни корисници во заеднички канал. За да се поврзат барањата за примање на предниот дел и барањата за обработка на заднината, се воспоставува долготрајна TCP врска, преку која се пренесуваат барањата на корисниците, кои се пренесуваат по синџирот еден по друг, разделени со помош на протоколот HTTP. За да се одделат барањата, насловите „Содржина-должина“ (ја одредува вкупната големина на податоците во барањето) и „Трансфер-енкодирање: распарчено"(ви овозможува да пренесувате податоци во делови, наведувајќи блокови со различни големини во формат "{size}\r\n{block}\r\n{size}\r\n{block}\r\n0").

Проблемот се јавува ако предниот дел поддржува само „Content-Length“, но го игнорира „Transfer-Encoding: chunked“ (на пример, Akamai CDN го направи ова) или обратно. Ако Transfer-Encoding: chunked е поддржан на двете страни, карактеристиките за имплементација на HTTP-парсерите за заглавија може да се користат за напад (на пример, кога предниот дел игнорира линии како „Transfer-Encoding: xchunked“, „Transfer-Encoding: chunked ”, „Transfer-Encoding“ :[tab]dunked“, „X: X[\n]Transfer-Encoding: chunked“, „Transfer-Encoding[\n]: фрагментиран“ или „Transfer-Encoding : chunked“ и backend-от успешно ги обработува).

Во овој случај, напаѓачот може да испрати барање што ги содржи и заглавијата „Content-Length“ и „Transfer-Encoding: chunked“, но големината во „Content-Length“ не одговара на големината на отсечениот синџир, кој е помала од вистинската вредност. Ако предниот дел го обработува и го препраќа барањето според „Должина на содржина“ и задниот дел чека блокот да се заврши врз основа на „Пренесување-енкодирање: разделено“, тогаш крајот на податоците засновани на „Пренесување-кодирање: разделено“ ќе да се утврди порано и преостанатата опашка од барањето напаѓачот ќе се појави на почетокот на следното барање, т.е. напаѓачот ќе може да прикачи произволни податоци на почетокот на туѓото барање пренесено следно.

Напад на преден-заден систем кој ни овозможува да се вклопиме во барањата од трети страни

За да го одредите проблемот во користената комбинација преден-заден дел, можете да испратите вакво барање преку предниот дел:

POST /за HTTP/1.1
Домаќин: example.com
Трансфер-енкодирање: распарчено
Должина на содржина: 4

1
Z
Q

Проблемот е присутен ако задниот дел веднаш не го обработи барањето и го чека пристигнувањето на конечниот нулта граничен блок од здробени податоци. За поцелосна проверка подготвени специјална алатка која исто така ги тестира можните методи за криење на заглавието „Transfer-Encoding: chunked“ од предниот дел.

Извршувањето вистински напад зависи од можностите на нападнатата локација, на пример, кога ја напаѓате веб апликацијата Trello, можете да го замените почетокот на барањето (заменете ги податоците како „PUT /1/members/1234... x=x&csrf =1234&username=testzzz&bio=cake“) и испратете порака со оригиналното барање на трет корисник и колачето за автентикација наведено во него. За напад на saas-app.com, се покажа дека е можно да се замени кодот JavaScript во одговорот со замена на еден од параметрите за барање. За нападот на redhat.com, се користеше внатрешен управувач за пренасочување на веб-страницата на напаѓачот (барање од формуларот „POST /search?dest=../assets/idx?redir=//[заштитена по е-пошта]/ HTTP/1.1").

Користењето на методот за мрежи за испорака на содржина овозможи едноставно да се замени бараната локација со замена на заглавието „Домаќин:“. Нападот може да се користи и за труење на содржината на системите за кеширање на содржина и извлекување на кеширани доверливи податоци. Врвот на методот беше организацијата на напад на PayPal, што овозможи да се пресретнат лозинките испратени од корисниците за време на автентикацијата (барањето iframe беше изменето за да се изврши JavaScript во контекст на страницата paypal.com/us/gifts, за која CSP (Политика за безбедност на содржината) не беше применета).

Интересно, во 2005 година имаше предложено суштински слична техника за измама на барања која ви овозможува да ги измамите податоците во кеширањето на прокси (Tomcat, squid, mod_proxy) или да го заобиколите блокирањето на заштитниот ѕид со наведување на неколку „GET“ или „POST“ барања во рамките на една HTTP сесија.

Извор: opennet.ru

Додадете коментар