Բովանդակություն
• Ինչպես է աշխատում միջկայքային սցենարը
• Հարձակման տեխնիկան XSS-ի միջոցով
• XSS-ի ընդհանուր դասակարգում
• XSS-ի տեսակները ըստ փոխազդեցության մեթոդի
• Ինչպես ստուգել կայքի խոցելիությունը XSS հարձակման նկատմամբ և պաշտպանել այն
XSS (Cross – Site Scripting)-ը վեբ համակարգերի վրա հարձակումների տեսակներից մեկն է, որը ենթադրում է վնասակար կոդի ներդրում կայքի որոշակի էջում և այդ կոդի փոխազդեցություն հարձակվողների հեռավոր սերվերի հետ, երբ օգտագործողը բացում է էջը: XSS-ը կարող է օգտագործվել նաև վեբ-կայքերի վրա հարձակումներ կատարելու համար: Անգլերենից տերմինը նշանակում է Cross-Site Scripting, բայց այն ստացել է XSS հապավումը, որպեսզի CSS-ի (կասկադային ոճի թերթերի) հետ խառնաշփոթ չլինի:
Ինչպես է աշխատում միջկայքային սցենարը
Միջկայքային սկրիպտինգի հիմնական նպատակը սերվերի վրա ներկառուցված սկրիպտի միջոցով օգտատերերի cookie-ների գողացումն է՝ անհրաժեշտ տվյալների հետագա նմուշառմամբ և հետագա հարձակումների և հաքերների համար դրանք օգտագործելու համար։ Հարձակվողը օգտատերերի վրա հարձակումն իրականացնում է ոչ թե ուղղակիորեն, այլ օգտագործելով այն կայքի խոցելիությունը, որն այցելում են զոհերը և ներկառուցում է հատուկ JavaScript: Օգտատերերի բրաուզերում այս կոդը արտացոլվում է որպես կայքի մեկ մաս ։ Ընդ որում, այցելվող վեբ կայքը ըստ էության դառնում է XSS հարձակման մասնակից։
Եթե համեմատենք SQL- ներարկումների հետ, ապա XSS-ն անվտանգ է սերվերի համար, բայց սպառնալիք է ներկայացնում վարակված ռեսուրսի կամ էջի օգտագործողների համար: Սակայն, եթե հաքերը ստանում է ադմինի cookies-ները, նա կարող է մուտք գործել կայքի կառավարման վահանակի և տնօրինել դրա բովանդակությանը:
Հարձակման տեխնիկան XSS-ի միջոցով
JavaScript-ի վնասակար կոդի գործարկումը հնարավոր է միայն զոհի բրաուզերում, ուստի այն կայքը, որտեղ օգտագործողը մուտք է գործում, պետք է խոցելիություն ունենա XSS-ի նկատմամբ: Հարձակումը կատարելուց առաջ հաքերը սկզբում ստուգում է կայքի խեցելիությունը XSS-ի նկատմամբ՝ օգտագործելով ավտոմատացված սկրիպտեր կամ ձեռքով որոնման ռեժիմ: Դրանք սովորաբար ստանդարտ ֆորմաներ են, որոնք կարող են ուղարկել և ընդունել օգտատիրոջ հարցումներ (մեկնաբանություններ, որոնում, հետադարձ կապ):
Իրականացվում է մուտքագրման ձևերով էջերի ամբողջական հավաքագրում, և յուրաքանչյուրը սկանավորվում է խոցելիության համար: Օրինակ, կայքում մենք ունենք "որոնում" էջ: XSS խոցելիությունը ստուգելու համար բավական է մուտքագրել հարցումը՝
<script>alert("cookie: "+document.cookie)</script>
Եթե էկրանին ծանուցում է հայտնվում, ապա դուք հայտնաբերել եք կայքի խոցելիություն:
Հակառակ դեպքում համակարգը Ձեզ կցուցադրի որոնման արդյունքների էջ: Հիմնական հանրաճանաչ CMS-ները վաղուց ապահովագրվել են նման խնդիրներից: Այդուհանդերձ կողմնակի ծրագրավորողների կողմից ստեղծված մոդուլների և պլագինների պատճառով ֆունկցիոնալությունը ընդլայնելու հնարավորության պատճառով XSS խոցելիությունների հայտնաբերման հնարավորությունները զգալիորեն մեծանում են, հատկապես Joomla, DLE, Bitrix, Wordpress պլատֆորմաների համար: Ամենից հաճախ XSS խոցելիությունները ստուգվում են Internet Explorer-ի համար:
Որոնման մեկ այլ հնարավոր տարբերակ է օգտագործել այն էջերը, որոնք կարգավորում են GET հարցումները: Ենթադրենք՝ մենք ունենք հետևալ ձևի հղում. https://site.ru/catalog?p=8
Հասցեի տողում նույնացուցիչի փոխարեն (8) ավելացնում ենք սկրիպտը ՝
"><script>alert ("cookie: "+document.cookie)< / script>, որի արդյունքում ստանում ենք այսպիսի հղում.
https://site.ru/catalog?p=">< script & gt;alert ("cookie: "+ document.cookie)</script>
Եթե էջն ունի XSS խոցելիություններ, էկրանին կհայտնվի նույն ծանուցումը, ինչ առաջին դեպքում: Կայքում "բացեր" որոնելու համար կան հսկայական քանակությամբ պատրաստի սկրիպտեր և հարցումներ, և եթե դրանցից ոչ մեկը խոցելիություն չի հայտնաբերում, ապա ռեսուրսը հուսալիորեն պաշտպանված է XSS հարձակումներից:
XSS-ի ընդհանուր դասակարգում
Միջկայքային սկրիպտերի համար հստակ դասակարգում գոյություն չունի, բայց աշխարհի փորձագետները առանձնացնում են երեք հիմնական տեսակ:
Պահվող XSS (մշտական): Խոցելիության ամենավտանգավոր տեսակներից մեկը, քանի որ այն թույլ է տալիս հարձակվողին մուտք գործել սերվեր և արդեն այնտեղից կառավարել վնասաբեր կոդը (ջնջել, փոփոխել): Ամեն անգամ կայք մուտք գործելիս գործարկվում է նախապես բեռնված կոդ, որն աշխատում է ավտոմատ ռեժիմով ։ Հիմնականում ֆորումները, պորտալները, բլոգերը ենթակա են նման խոցելիությունների, որտեղ HTML-ում առանց սահմանափակումների մեկնաբանելու հնարավորություն կա: Վնասակար սկրիպտերը հեշտությամբ կարող են տեղադրվել ինչպես տեքստի, այնպես էլ նկարների, նկարների մեջ:
Արտացոլվող XSS (ոչ մշտական): Այս դեպքում վնասակար տողը հանդես է գալիս որպես զոհ հանդիսացող օգտատիրոջ հարցում վարակված կայքին։ Այս սկզբունքը գործում է հետևյալ սխեմայի համաձայն՝
1.Հաքերը նախապես ստեղծում է URL հղում, որը պարունակում է վնասակար կոդ և այն ուղարկում է իր զոհին:
2. Հղումը ուղղորդում է այս URL-ի հարցումը դեպի կայք (անցնում է հղումով):
3. Կայքը ավտոմատ կերպով վերցնում է տվյալները վնասակար տողից և փոխարինում է որպես փոփոխված URL պատասխան զոհին:
4. Արդյունքում զոհի բրաուզերում գործարկվում է վնասակար սկրիպտ, որն էլ պարունակվում է պատասխանում, իսկ հաքերը ստանում է այդ օգտատիրոջ բոլոր քուքիները։
DOM մոդելներ. Այս տարբերակում հնարավոր է օգտագործել ինչպես պահված XSS-ը, այնպես էլ արտացոլված: Էությունը հետևյալն է: Հաքերը ստեղծում է URL, որը նախապես պարունակում է վնասակար կոդ և այն էլեկտրոնային փոստով կամ ցանկացած այլ եղանակով ուղարկում է օգտագործողին: Անձը հետևում է այս հղմանը, վարակված կայքը ընդունում է հարցումը՝ բացառելով վնասակար տողը: Էջում օգտատիրոջ մոտ գործարկվում է սկրիպտ, որի արդյունքում բեռնվում է վնասակար սկրիպտը և հաքերը ստանում է քուքիներ:
XSS-ի տեսակները ըստ փոխազդեցության մեթոդի
Քանի որ հարձակվողի հիմնական նպատակը զոհի համակարգչում վնասակար սկրիպտ գործարկելն է, փոխգործակցության եղանակով գոյություն ունեն նաև XSS հարձակումների երկու հիմնական տեսակ՝
Պասիվ. Տուժողից պահանջվում է որոշակի գործողություն ՝ իրադարձությունների կառավարիչ կանչելու և չարամիտ սկրիպտը սահմանված ձևով գործարկելու համար: Դրա համար օգտագործվում է սոցիալական ճարտարագիտություն, ինչպիսին է էլ-նամակ ուղարկելը, որը կոչ է անում հետևել հղմանը և սեղմել կայքի որոշակի տարածք: Հենց որ օգտագործողը մկնիկով անցում է ցանկալի օբյեկտին և սեղմում մկնիկի վրա, գործարկվում է վնասակար սկրիպտը: Եթե զոհը գործողություն չի կատարում, կոդը չի ակտիվանում։
Ակտիվ. Հաքերը կարիք չունի զոհին գայթակղելու հատուկ հղումների միջոցով, քանի որ կոդը ներկառուցված է տվյալների բազաներում կամ սերվերի վրա ինչ-որ գործարկվող ֆայլում: Օգտագործողից որևէ գործողություն չի պահանջվում: Մուտքի ձևերը, որպես կանոն, ունեն հատուկ իրադարձությունների կառավարիչ, որն ավտոմատ կերպով ակտիվանում է, երբ հայտնվում է այս էջում: Արդյունքում, բոլոր օգտվողները, ովքեր հետևել են այս հղմանը, կդառնան հաքերի զոհ:
Ինչպես ստուգել կայքի XSS հարձակման նկատմամբ և պաշտպանել այն
XSS-ի խոցելիությունների նկատմամբ կայքը արագ ստուգելու համար կարող եք օգտագործել մասնագիտացված ծառայություններ, որոնք ավտոմատ կերպով սկանավորելու են էջը: Այս ծառայությունները ներառում են. Անհրաժեշտ է ստուգել բոլոր URL-ները, որտեղ հնարավոր է տվյալներ ուղարկել օգտագործողի կողմից (մեկնաբանությունների ֆորմաներ, հետադարձ կապ, որոնում): Որպես օրինակ կարող եք օգտագործել https://xss-scanner.com, բայց մի սահմանափակվեք միայն մեկ գործիքով:
Նման ծառայությունները հաջողության լիարժեք երաշխիք չեն տալիս, ուստի խորհուրդ ենք տալիս ձեռքով ստուգել հայտնաբերված էջերը և անպայման բացառել բոլոր վտանգավոր հատուկ նիշերը ՝ դրանք փոխարինելով անվտանգով: Խոսքը < և > փակագծերի մասին է, որոնցում գրված են HTML լեզվով վերապահված բոլոր հարցումները և պիտակները։
Օրինակ ՝ < և > հատուկ նիշերը արագ զտելու և ավտոմատ կերպով փոխարինելու համար կայքում կարող եք օգտագործել հետևյալ կոդը:
$filter = array("<", ">"); $_GET['q']=str_replace ($filter, "|", $_GET['q']).
Մի քանի խորհուրդ Ձեր կայքում XSS-ի օգտագործումը կանխելու համար.
1. Եթե ձեր կայքում օգտագործողի մուտքագրումը միացված է, պետք է իրականացվի կոդավորում:
2.Եթե որոշ իրավիճակներում կոդավորումը հնարավոր չէ կամ անտեղի է, փոխարինեք այն կամ լրացրեք վավերացմամբ (վալիդացիայով):
3. Եթե օգտագործում եք տարածված CMS, ինչպիսիք են Wordpress-ը, Bitrix-ը, Joomla-ն, պարբերաբար Թարմացրեք շարժիչի տարբերակները և տեղադրված բոլոր մոդուլներն ու պլագինները: Լռելյայն, կայքերի կառավարման ամենատարածված համակարգերի մեծ մասը պաշտպանված են XSS-ի օգտագործումից, բայց չստուգված աղբյուրներից երրորդ կողմի պլագինները կարող են պարունակել խոցելիություններ:
|