Հարձակում առջևի և հետևի համակարգերի վրա, որը թույլ է տալիս մեզ սեպ մտնել երրորդ կողմի հարցումների մեջ

Բացահայտվել է նոր հարձակման մանրամասներ կայքերի վրա, որոնք օգտագործում են front-end-back-end մոդել, ինչպիսիք են բովանդակության առաքման ցանցերի, բեռների հավասարակշռիչների կամ վստահված անձանց միջոցով: Հարձակումը թույլ է տալիս, ուղարկելով որոշակի հարցումներ, խրվել այլ հարցումների բովանդակության մեջ, որոնք մշակվում են նույն շղթայում ճակատի և հետին մասի միջև: Առաջարկվող մեթոդը հաջողությամբ կիրառվել է հարձակում կազմակերպելու համար, որը հնարավորություն է տվել կալանավորել PayPal ծառայության օգտատերերի նույնականացման պարամետրերը, որոնք հետազոտողներին վճարել են մոտ 40 հազար դոլար՝ չփակված խոցելիության առկայության մասին տեղեկացնելու ծրագրի շրջանակներում: Հարձակումը կիրառելի է նաև Akamai բովանդակության առաքման ցանցն օգտագործող կայքերի վրա:

Խնդիրի էությունը կայանում է նրանում, որ frontend-ները և backend-երը հաճախ ապահովում են HTTP արձանագրության տարբեր մակարդակների աջակցություն, բայց միևնույն ժամանակ տարբեր օգտվողների հարցումները ներառում են ընդհանուր ալիքի մեջ: Frontend ստացող հարցումները և հետին պլանի մշակման հարցումները միացնելու համար ստեղծվում է երկարատև TCP կապ, որի միջոցով օգտվողի հարցումները փոխանցվում են, փոխանցվում շղթայի երկայնքով մեկը մյուսի հետևից, առանձնացված HTTP արձանագրության միջոցով: Հարցումները առանձնացնելու համար վերնագրերը «Բովանդակություն-երկարություն» (որոշում է հարցումի տվյալների ընդհանուր չափը) և «Փոխանցում-կոդավորում՝ կտրված«(թույլ է տալիս փոխանցել տվյալները մասերով՝ նշելով տարբեր չափերի բլոկներ «{size}\r\n{block}\r\n{size}\r\n{block}\r\n0» ձևաչափով):

Խնդիրն առաջանում է, եթե ճակատը աջակցում է միայն «Բովանդակության երկարությունը», բայց անտեսում է «Փոխանցում-կոդավորումը. կտրված» (օրինակ, Akamai CDN-ն դա արեց) կամ հակառակը։ Եթե ​​«Transfer-Encoding. », «Transfer-Encoding» :[tab]chunked», «X: X[\n]Transfer-Encoding. chunked», «Transfer-Encoding[\n]: chunked» կամ «Transfer-Encoding: chunked» և backend-ը հաջողությամբ մշակում է դրանք):

Այս դեպքում հարձակվողը կարող է հարցում ուղարկել, որը պարունակում է և՛ «Բովանդակության երկարություն», և՛ «Փոխանցում-կոդավորում. կտոր» վերնագրերը, սակայն «Բովանդակության երկարությունը» չափը չի համապատասխանում կտրված շղթայի չափին, որը։ իրական արժեքից փոքր է: Եթե ​​ֆրոնտենդը մշակում և ուղարկում է հարցումը ըստ «Բովանդակության երկարություն», իսկ հետնամասը սպասում է, որ բլոկը ավարտվի «Փոխանցում-կոդավորում. կտոր» հիման վրա, ապա «Փոխանցում-կոդավորում. կտոր» հիման վրա տվյալների ավարտը կլինի: պետք է որոշվի ավելի վաղ, և հարձակվողի խնդրանքի մնացած պոչը կլինի հաջորդ հարցման սկզբում, այսինքն. հարձակվողը կկարողանա կամայական տվյալներ կցել ուրիշի խնդրանքի սկզբին, որը փոխանցվում է հաջորդ անգամ:

Հարձակում առջևի և հետևի համակարգերի վրա, որը թույլ է տալիս մեզ սեպ մտնել երրորդ կողմի հարցումների մեջ

Օգտագործված frontend-backend համակցության մեջ խնդիրը որոշելու համար դուք կարող եք ուղարկել այսպիսի հարցում ճակատային մասի միջոցով.

POST / HTTP/1.1-ի մասին
Հաղորդավար՝ example.com
Փոխանցում-կոդավորում՝ կտրված
Բովանդակություն - Length: 4

1
Z
Q

Խնդիրն առկա է, եթե հետնամասը անմիջապես չի մշակում հարցումը և սպասում է վերջնական զրոյական սահմանափակող բլոկի՝ մասնատված տվյալների ժամանմանը: Ավելի ամբողջական ստուգման համար պատրաստված հատուկ օգտակար ծրագիր, որը նաև փորձարկում է «Transfer-Encoding. chunked» վերնագիրը ճակատից թաքցնելու հնարավոր մեթոդները:

Իրական գրոհի իրականացումը կախված է հարձակման ենթարկված կայքի հնարավորություններից, օրինակ՝ Trello վեբ հավելվածի վրա հարձակվելիս կարող եք փոխարինել հարցման սկիզբը (փոխարինող տվյալներ, ինչպիսիք են «PUT /1/members/1234... x=x&csrf» =1234&username=testzzz&bio=cake») և ուղարկեք հաղորդագրություն, ներառյալ երրորդ կողմի օգտատիրոջ սկզբնական հարցումը և դրանում նշված նույնականացման «Cookie»-ը: 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) կամ շրջանցել firewall-ի արգելափակումը` նշելով մի քանի «GET» կամ «POST» հարցումներ մեկ HTTP սեանսի ընթացքում:

Source: opennet.ru

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