Exim փոստի սերվերում
Լռելյայն կազմաձևում հարձակումը կարող է իրականացվել առանց ավելորդ բարդությունների տեղական օգտագործողի կողմից, քանի որ օգտագործվում է «verify = ստացող» ACL-ը, որը լրացուցիչ ստուգումներ է կատարում արտաքին հասցեների համար: Հեռակա գրոհի իրականացումը հնարավոր է փոխելով կարգավորումները, օրինակ՝ որպես երկրորդական MX այլ տիրույթի համար, հեռացնելով «verify = recipient» ACL-ը կամ որոշակի փոփոխություններ local_part_suffix-ում): Հեռավոր հարձակումը հնարավոր է նաև, եթե հարձակվողը կարող է սերվերի հետ կապը բաց պահել 7 օր (օրինակ՝ րոպեում մեկ բայթ ուղարկելով ժամանակի ընդմիջումը շրջանցելու համար): Միևնույն ժամանակ, չի բացառվում, որ խնդրի հեռահար շահագործման համար ավելի պարզ հարձակման վեկտորներ կան։
Խոցելիությունը պայմանավորված է /src/deliver.c ֆայլում սահմանված deliver_message() ֆունկցիայում ստացողի հասցեի սխալ վավերացումով։ Հասցեի ձևաչափումը մանիպուլյացիայի ենթարկելով՝ հարձակվողը կարող է հասնել իր տվյալների փոխարինմանը execv() ֆունկցիայի միջոցով արմատային արտոնություններով կանչված հրամանի արգումենտներով: Գործողությունը չի պահանջում բարդ տեխնիկայի կիրառում, որն օգտագործվում է բուֆերային արտահոսքի կամ հիշողության խաթարման համար, բավական է միայն նիշերի փոխարինումը:
Խնդիրը կապված է հասցեների փոխակերպման համար կառուցվածքի օգտագործման հետ.
deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", new->հասցե));
առաքման_տիրույթ = expand_string(
string_sprintf ("${տիրույթ:%s}", new->հասցե));
Expand_string() ֆունկցիան բարդ կոմբինատոր է, որը նաև ճանաչում է «${run{command arguments}» հրամանը, որը հանգեցնում է արտաքին մշակողի գործարկմանը: Այսպիսով, SMTP սեանսի ընթացքում հարձակվելու համար բավական է, որ տեղական օգտատերը ուղարկի այնպիսի հրաման, ինչպիսին է «RCPT TO «username+${run{…}}@localhost», որտեղ localhost-ը local_domains ցուցակի հոսթներից մեկն է, իսկ օգտվողի անունը գոյություն ունեցող տեղական օգտագործողի անունն է:
Եթե սերվերը աշխատում է որպես փոստի ռելե, բավական է հեռակա կարգով ուղարկել «RCPT «${run{…}}@relaydomain.com» հրամանը, որտեղ relaydomain.com-ը relay_to_domains-ի կարգավորումների բաժնում թվարկված հոսթներից մեկն է: . Քանի որ Exim-ը լռելյայն չի օգտագործում անկման արտոնության ռեժիմ (deliver_drop_privilege = false), «${run{...}}»-ի միջոցով փոխանցված հրամանները կկատարվեն որպես արմատ:
Հատկանշական է, որ խոցելիությունը եղել է
Անցյալ տարբերակների ուղղումը, որոնք շարունակում են կիրառվել բաշխումների վրա, ներկայումս հասանելի է միայն որպես
Source: opennet.ru