javascript injection tutorial
Шта је Јавасцрипт Ињецтион?
Јавасцрипт је једна од најпопуларнијих технологија и најчешће се користи за веб странице и веб апликације.
Може се користити за остваривање различитих функционалности веб страница. Међутим, ова технологија може донети неке безбедносне проблеме којих програмер и тестер треба да буду свесни.
Јавасцрипт се може користити не само у добре сврхе већ и за неке злонамерне нападе. Једно од њих је Јавасцрипт Ињецтион. Суштина ЈС Ињецтион-а је убризгавање Јавасцрипт кода који ће се покретати са стране клијента.
У овом упутству ћемо научити више о томе како да проверимо да ли је могуће убризгавање Јавасцрипта, како се може извршити ЈС убризгавање и које су последице које ЈС убризгавање може донети.
Шта ћете научити:
- Ризици убризгавања ЈаваСцрипт-а
- Зашто је важно тестирати ЈС ињекцију?
- Поређење са другим нападима
- Провера ЈаваСцрипт убризгавања
- Модификација параметара
- Измена дизајна веб странице
- Како тестирати против убризгавања ЈаваСцрипт-а
- Могућа заштита од овог напада
- Закључак
- Препоручено читање
Ризици убризгавања ЈаваСцрипт-а
ЈС Ињецтион доноси пуно могућности злонамерном кориснику да модификује дизајн веб странице, добије информације о веб локацији, промени приказане информације о веб локацији и манипулише параметрима (на пример, колачићи). Стога ово може донети озбиљну штету на веб локацији, цурење информација, па чак и хаковање.
Главна сврха ЈС Ињецтион је да промени изглед веб странице и манипулише параметрима. Последице ЈС Ињецтион-а могу бити веома различите - од оштећења дизајна веб странице до приступа туђем налогу.
Зашто је важно тестирати ЈС ињекцију?
Многи би се питали да ли је тестирање за ЈС Ињецтион заиста неопходно.
Провера рањивости ЈС Ињецтион је део сигурносног тестирања. Испитивање сигурности се обично изводи само ако је било укључено у планирање пројекта, јер захтева време, много пажње и проверу више детаља.
Приметио сам да је током реализације пројекта прилично често прескочити тестирање против било каквих могућих напада - укључујући ЈС Ињецтион. На овај начин тимови покушавају да уштеде време пројекта. Међутим, ова пракса се врло често завршава жалбама купаца.
Треба знати да се сигурносно тестирање топло препоручује чак и ако није укључено у пројектне планове. Требало би извршити проверу главних могућих напада - истовремено мора се проверити могуће рањивости ЈС Ињецтион.
Остављајући једноставан Јавасцрипт Рањивости убризгавања у производу може коштати квалитет производа и репутацију компаније. Кад год научим да тестирам против могућих напада и у општем безбедносном тестирању, никада не прескачем овај део тестирања. На овај начин сам само сигурнији у квалитет производа.
Поређење са другим нападима
Треба напоменути, да ЈС Ињецтион није толико ризичан као СКЛ Ињецтион , јер се изводи на клијентској страни и не долази до базе података система као што се то догађа током напада СКЛ Ињецтион. Такође, није толико ризичан као КССС напад.
Током овог напада на тренутке може се променити само изглед веб странице, док је главна сврха КССС напада хаковање других података за пријаву.
Међутим, ЈС Ињецтион такође може проузроковати озбиљну штету на веб локацији. То може не само да уништи изглед веб странице, већ и да постане добра основа за хакирање података за пријаву других људи.
Провера ЈаваСцрипт убризгавања
Када започињете тестирање против ЈС Ињецтион, прво што треба да урадите је да проверите да ли је ЈС Ињецтион могуће или не. Провера ове врсте могућности убризгавања је врло једноставна - када се преусмерите на веб локацију, морате да укуцате траку адресе у прегледач овако:
јавасцрипт: алерт („Извршено!“);
Ако се појави искачући прозор са поруком „Извршено!“, Тада је веб локација рањива на ЈС Ињецтион.
Тада у траци за адресу веб странице можете испробати разне Јавасцрипт команде.
Треба напоменути да ЈС Ињецтион није могуће само на траци за адресу веб странице. Постоје разни други елементи веб странице који су можда осетљиви на ЈС Ињецтион. Најважније је тачно знати делове веб странице на које Јавасцрипт Ињецтион може утицати и како то проверити.
Типични ЈС циљеви за убризгавање су:
- Разни форуми
- Поља за коментаре чланка
- Књига гостију
- Било који други обрасци у које се може уметнути текст.
Да бисте тестирали да ли је овај напад могућ за образац за чување текста, упркос томе што пружате нормалан текст, откуцајте Јавасцрипт код као што је поменуто у наставку и сачувајте текст у обрасцу и освежите страницу.
јавасцрипт: алерт („Извршено!“);
Ако на новоотвореној страници постоји текстуални оквир са поруком „Извршено!“, Тада је овај тип убризгавања могућ за тестирани образац.
Ако се на оба начина појављује текстуални оквир са поруком, можете покушати да разбијете веб страницу са сложенијим методама ЈС убризгавања. Тада можете испробати различите врсте убризгавања - модификацију параметара или модификацију дизајна.
Наравно, модификација параметара се сматра ризичнијом од модификације дизајна. Због тога би током тестирања више пажње требало посветити модификацији параметара.
Такође, треба имати на уму да су рањивији делови веб локације за Јавасцрипт Ињецтион поља за унос у којима се чува било која врста података.
Модификација параметара
Као што је раније поменуто, једно од могућих оштећења Јавасцрипт Ињецтион-а је модификација параметара.
Током овог напада убризгавањем злонамерни корисник може добити информације о параметрима или променити било коју вредност параметара( Пример ,подешавања колачића). То може изазвати прилично озбиљне ризике јер злонамерни корисник може добити осетљив садржај. Таква врста убризгавања може се извршити помоћу неких Јавасцрипт наредби.
Сетимо се да је Јавасцрипт наредба која враћа тренутни колачић сесије написана у складу с тим:
јавасцрипт: упозорење (доцумент.цоокие);
Унет у траку за УРЛ прегледача, враћа се искачући прозор са тренутним колачићима сесије.
Ако веб локација користи колачиће, можемо прочитати такве информације као ИД сесије сервера или друге корисничке податке ускладиштене у колачићима.
Треба напоменути да се уместо алерт () може користити било која друга Јавасцрипт функција.
На пример ,ако смо пронашли осетљиву веб локацију, која чува ИД сесије у параметру колачића „сессион_ид“. Тада можемо написати функцију која мења тренутни ИД сесије:
јавасцрипт: воид (доцумент.цоокие = “сессион_ид =<>');
На овај начин ће се променити вредност ид сесије. Такође су могући и било који други начини промене параметара.
На пример, злонамерни корисник жели да се пријави као други људи. Да би извршио пријаву, злонамерни корисник ће прво променити подешавања колачића за ауторизацију на истинита. Ако поставке колачића нису постављене као „тачно“, тада се вредност колачића може вратити као „недефинисано“.
Питања и одговори за интервју са селеном вебдривер-ом за трогодишње искуство
Да би променио те вредности колачића, злонамерни корисник ће извршити у складу са Јавасцрипт наредбом са траке УРЛ у прегледачу:
јавасцрипт: воид (доцумент.цоокие = „ауторизација = тачно“);
Резултат тога је да ће тренутни параметар колачића ауторизација = нетачно бити промењен у ауторизација = тачно. На овај начин ће злонамерни корисник моћи да добије приступ осетљивом садржају.
Такође, мора се напоменути да понекад Јавасцрипт код враћа прилично осетљиве информације.
јавасцрипт: упозорење (доцумент.цоокие);
На пример, ако програмер веб странице није био довољно опрезан, може такође да врати имена и вредности параметара корисничког имена и лозинке. Тада се такве информације могу користити за хаковање веб локације или само за промену вредности осетљивог параметра.
На пример, помоћу доњег кода можемо променити вредност корисничког имена:
јавасцрипт: воид (доцумент.цоокие = ”корисничко име = другикорисник”);
На овај начин се могу променити и било које друге вредности параметара.
Измена дизајна веб странице
Јавасцрипт се такође може користити за модификовање било ког облика веб локације и уопште дизајна веб странице.
На пример, помоћу Јавасцрипта можете да промените све информације приказане на веб локацији:
- Приказани текст.
- Позадина веб странице.
- Изглед обрасца веб странице.
- Изглед искачућег прозора.
- Изглед било ког другог елемента веб странице.
На пример, да бисте променили приказану адресу е-поште на веб локацији, треба користити одговарајућу Јавасцрипт наредбу:
јавасцрипт: воид (доцумент.формс (0) .емаил.валуе = ”Тест@тест.цом”) ;
Могуће је и неколико других компликованих манипулација дизајном веб странице. Овим нападом такође можемо приступити и променити ЦСС класу веб странице.
На пример, ако бисмо желели да променимо позадинску слику веб странице помоћу ЈС Ињецтион, онда би наредба требало да се изврши у складу с тим:
јавасцрипт: воид (документ. слика позадине: урл („отхер-имаге.јпг“);
Такође, злонамерни корисник може да напише Јавасцрипт Ињецтион код који је доле споменут у обрасцу за уметање текста и да га сачува.
јавасцрипт: воид (упозорење („Здраво!“));
Тада ће се сваки пут када се страница отвори појавити текстуално поље са поруком „Здраво!“.
Промењени дизајн веб странице помоћу Јавасцрипт Ињецтион-а мање је ризичан од промене параметара. Међутим, ако се дизајн веб странице промени на злонамерни начин, то може коштати репутације компаније.
Како тестирати против убризгавања ЈаваСцрипт-а
Може се тестирати на следеће начине:
- Ручно
- Са алатима за тестирање
- Са додацима за прегледач
Могуће Јавасцрипт рањивости могу се ручно проверити ако добро знате како то треба извршити. Такође, може се тестирати са различитим алатима за аутоматизацију.
На пример, ако сте аутоматизовали своје тестове на нивоу АПИ-ја помоћу алата СОАП УИ, тада је могуће покренути и тестове за убризгавање Јавасцрипт-а са СОАП УИ .
Међутим, могу да коментаришем само из сопственог искуства, да сте заиста требали имати добро знање о СОАП УИ алату да бисте њиме тестирали ЈС Ињецтион, јер би сви кораци теста требали бити написани без грешака. Ако је било који тест корак написан погрешно, то такође може проузроковати погрешне резултате испитивања безбедности.
Такође, можете пронаћи разне додатке прегледача за проверу од могућег напада. Међутим, препоручује се да не заборавите да ручно проверите овај напад, јер обично даје тачније резултате.
Желео бих да кажем да ручно тестирање против убризгавања Јавасцрипта чини да се осећам сигурније и сигурније у сигурност веб локације. На овај начин можете бити сигурни да ниједан образац није пропуштен током тестирања и да су вам видљиви сви резултати.
Да бисте тестирали Јавасцрипт Ињецтион, требало би да имате опште знање о Јавасцрипту и да знате који су делови веб странице рањивији. Такође, требате имати на уму да веб локација може бити заштићена од ЈС Ињецтион-а и током тестирања покушајте да прекинете ову заштиту.
На овај начин ћете бити сигурни да ли је заштита од овог напада довољно јака или не.
Могућа заштита од овог напада
Прво, да би се спречио овај напад, сваки примљени унос треба бити потврђен. Унос треба потврдити сваки пут, а не само када се подаци првобитно прихвате.
Препоручује се да се не ослањате на проверу на страни клијента. Такође, препоручује се извођење важне логике на страни сервера.
Многи покушавају да се заштите од убризгавања Јавасцрипта променом цитата у двоструке и Јавасцрипт код не би требало изводити на тај начин.
На пример, ако у поље за коментаре напишете било шта са наводницима ..., ти цитати ће бити замењени двоструким -<>...<>. На овај начин унети Јавасцрипт код неће бити извршен.
Приметио сам да је замена наводника двоструким наводницима прилично уобичајена пракса да би се избегли могући напади на ЈС Ињецтион. Међутим, постоји неколико начина за кодирање наводника како би се извршио ЈС Ињецтион цоде. Стога промена цитата у дупло није савршен начин заштите од овог напада.
Закључак
Увек треба имати на уму да је Јавасцрипт Ињецтион један од могућих напада на веб локације, јер је Јавасцрипт једна од најчешће коришћених технологија за веб локације. Због тога, док тестирате веб локације или било које друге веб технологије, не треба заборавити да тестирате против овог напада.
Приликом тестирања безбедности, ЈС Ињецтион не треба заборавити. Неки ово тестирање сматрају мање ризичним нападом јер се изводи на страни клијента.
Међутим, то је погрешан приступ и увек бисмо требали имати на уму да Јавасцрипт Ињецтион може проузроковати озбиљну штету на веб локацији попут цурења осетљивих информација, промене параметара или хаковања корисничких налога.
Због тога бисмо ово требали сматрати важним делом тестирања и делом је улагања у добру репутацију производа и компаније.
Тестирање ЈС ињекције није веома тешко. Прво би требало да имате опште знање о Јавасцрипту и да знате како да проверите да ли је овај напад могућ за тренутно веб решење или не.
Такође током тестирања треба да имате на уму да веб локација може да има заштиту од ове врсте напада, али може бити преслаба - треба је и проверити. Још једна важна ствар коју треба имати на уму је да постоје различите врсте Јавасцрипт Ињецтион напада и ниједан од њих не треба заборавити тестирати.
Да ли сте извршили Јавасцрипт ињекционо тестирање ?? Било би нам драго да се чујете, слободно поделите своја искуства у одељку за коментаре испод.
Препоручено читање
- Дубински водичи за помрачење за почетнике
- Како поставити Ноде.јс оквир за тестирање: Водич за Ноде.јс
- Водич за ХТМЛ ињекције: Врсте и превенција са примерима
- Водич за тестирање СКЛ убризгавања (пример и спречавање напада СКЛ убризгавањем)
- Водич за Јава рефлексију са примерима
- Водич за СВН: Управљање изворним кодом помоћу Субверзије
- Водич за Питхон ДатеТиме са примерима
- Водич за корњаче СВН: Ревизије у спремишту кода