Ori Segal
Xakerlar saytlararo skript hujumidan qanday foydalanishi, u nimaga zarar etkazishi (va nima emas), uni qanday aniqlash va veb-saytingiz va unga tashrif buyuruvchilarni bunday zararli maxfiylik va xavfsizlik buzilishidan qanday himoya qilishni bilib oling.
Saytlararo skript (qisqacha XSS) xakerlar veb-ilovalarni buzish uchun foydalanadigan eng keng tarqalgan dastur qatlami hujumlaridan biridir. XSS - bu ma'lum bir veb-sayt mijozlari ma'lumotlarining maxfiyligiga hujum. Mijozning ma'lumotlari o'g'irlanganda va kelajakda har qanday maqsadda foydalanilganda 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 mijoz qurboni. Biroq, XSS hujumida uchta tomon ishtirok etadi: tajovuzkor, mijoz va veb-sayt.
XSS hujumining maqsadi mijozning kompyuteridan yoki boshqa yo'l bilan cookie-fayllarni o'g'irlashdir maxfiy ma'lumotlar bu veb-saytda mijozni aniqlashi mumkin. O'zini qonuniy foydalanuvchi sifatida tanishtirish uchun ma'lumotlarga ega bo'lgan tajovuzkor saytda bunday foydalanuvchi sifatida harakat qilishi mumkin, ya'ni. o'zini ulardek ko'rsat. Masalan, yirik kompaniyada o'tkazilgan bitta auditda foydalanuvchining shaxsiy ma'lumotlari va uning raqamini olish uchun XSS hujumidan foydalanish mumkin edi. kredit kartasi... Bunga maxsus JavaScript kodini ishga tushirish orqali erishildi. Ushbu kod veb-saytga kirish huquqiga ega bo'lgan jabrlanuvchining (mijozning) brauzerida ishga tushirildi. Skriptning saytga tegishli ma'lumotlardan boshqa narsaga kirishiga to'sqinlik qiluvchi juda cheklangan miqdordagi JavaScript imtiyozlari mavjud. Shuni ta'kidlash kerakki, zaiflik veb-saytda mavjud bo'lsa-da, uning 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.
Keling, hujumga uchragan saytni quyidagicha nomlaylik: www.vulnerable.site... An'anaviy XSS hujumi zaif saytda joylashgan zaif skriptga asoslangan. Ushbu skript HTTP so'rovining bir qismini (odatda parametrlar, lekin ba'zan HTTP sarlavhalari yoki yo'lini) o'qiydi va javob sahifasi uchun uni to'liq yoki qisman takrorlaydi. Bu so'rovni tozalamaydi (ya'ni, so'rovda JavaScript yoki HTML teglari yo'qligini tekshirmaydi). Aytaylik, bu skript Welcome.cgi deb ataladi va uning parametri nomdir. U shunday ishlatilishi mumkin:
Buni qanday qilib noto'g'ri ishlatish mumkin? Buzg'unchi mijozni (jabrlanuvchini) tajovuzkor unga taqdim etgan havolani bosishga jalb qila olishi kerak. Bu ehtiyotkorlik bilan ishlab chiqilgan va zararli maqsadda yaratilgan havola bo'lib, u qurbonning veb-brauzerini saytga (www.vulnerable.site) kirishiga va zaif skriptni bajarishiga olib keladi. Ushbu skript uchun ma'lumotlar www.vulnerable.site uchun mijoz brauzeri tomonidan saqlangan cookie-fayllarga kirish uchun JavaScript kodini o'z ichiga oladi. Bunga ruxsat berilgan, chunki mijozning brauzeri JavaScript-ni 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.
Ta'sir qilingan saytning javobi quyidagicha bo'ladi:
Tizimimizga xush kelibsiz... |
Jabrlanuvchining brauzeri ushbu so'rovni JavaScript-ning bir qismini o'z ichiga olgan HTML sahifasi sifatida izohlaydi. Ushbu kod bajarilganda www.vulnerable.site ga tegishli barcha cookie-fayllarga kirish huquqiga ega bo'ladi. Shunday qilib, u www.vulnerable.site bilan bog'liq barcha mijoz cookie-fayllarini ko'rsatadigan brauzerda qalqib chiquvchi oynani keltirib chiqaradi.
Albatta, haqiqiy hujum bu fayllarni tajovuzkorga yuborishni o'z ichiga oladi. Buning uchun tajovuzkor veb-sayt yaratishi mumkin (www.attacker.site) va cookie fayllarini olish uchun skriptdan foydalanishi mumkin. Qalqib chiquvchi oynani chaqirish o'rniga, tajovuzkor www.attacker.site URL manziliga kiradigan kod yozadi. Shu munosabat bilan cookie-fayllarni qabul qilish 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 allaqachon mavjud bo'lgan www.vulnerable.site cookie-fayllarining qiymatini yo'naltiradi. . Bu mijozning www.vulnerable.site veb-saytidagi cookie-fayllarning xavfsizligini buzadi. Bu tajovuzkorga o'zini qurbon qilib ko'rsatishga imkon beradi. Mijozning maxfiyligi to'liq buziladi.
Eslatma.
Odatda qalqib chiquvchi oynaga qo'ng'iroq qilish JavaScript yordamida saytning XSS hujumiga nisbatan zaifligini ko'rsatish uchun etarli. Agar siz JavaScript-dan Alert funksiyasini chaqira olsangiz, odatda qo'ng'iroq muvaffaqiyatsiz bo'lishi uchun hech qanday sabab yo'q. Shuning uchun XSS hujumlari misollarining aksariyati Alert xususiyatidan foydalanadi, bu esa hujumning muvaffaqiyatini aniqlashni juda oson qiladi.
Hujum faqat jabrlanuvchining saytga kirish uchun ishlatilgan brauzerida (www.vulnerable.site) sodir bo'lishi mumkin. Buzg'unchi mijozni zararli havolaga kirishga majbur qilishi kerak. Bunga bir necha usul bilan erishish mumkin.
- Buzg'unchi brauzerni havolani ochishga majbur qiladigan HTML sahifani o'z ichiga olgan 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, unda rasm yoki boshqa faol havola mavjud HTML elementi brauzerni havolani ochishga majbur qiladi. Shunga qaramay, bu holatda ham ushbu saytga, ham 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 fayllari (www.vulnerable.site);
- xotiradagi (www.vulnerable.site sayti) cookie-fayllari, ular faqat www.vulnerable.site saytini ko'rib chiqishda brauzer nusxasi tomonidan qo'llab-quvvatlanadi;
- www.vulnerable.site uchun ochilgan boshqa oynalarning nomlari.
- joriy DOM orqali kirish mumkin bo'lgan har qanday ma'lumot (qiymatlar, HTML kodlari va boshqalar).
Identifikatsiya, avtorizatsiya va autentifikatsiya ma'lumotlari odatda cookie fayllari shaklida saqlanadi. Agar bu cookie-fayllar doimiy bo'lsa, jabrlanuvchi hatto www.vulnerable.site saytiga kirish vaqtida brauzerdan foydalanmayotgan bo'lsa 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 (sizga kerakli URL parametrlari bilan sahifa nomi foobar deb faraz qilinsa):
Bundan tashqari, JavaScript skriptini ishga tushirish uchun ko'plab HTML teglaridan foydalanish mumkin xakerlar qurilishdan foydalanishlari mumkin ... Bu HTML tegini filtrlaydigan saytlar uchun javob beradi qurilishdan foydalanishingiz mumkin">
Hozirgacha biz skript javob beradigan GET so'rovi parametrida XSS hujumi sodir bo'lishi mumkinligini ko'rdik. Biroq, hujum POST so'rovi yoki HTTP so'rovi yo'li komponenti va hatto ba'zi HTTP sarlavhalari (masalan, Referer) yordamida ham amalga oshirilishi mumkin.
Xususan, yo'l komponenti xato sahifasi xato yo'lini qaytarganda foydalidir. Bunday holda, yo'lda zararli skriptning kiritilishi ko'pincha uning bajarilishiga olib keladi. Ko'pgina veb-serverlar ushbu hujumga qarshi himoyasiz.
Shuni tushunish kerakki, veb-sayt ushbu hujumdan to'g'ridan-to'g'ri ta'sir qilmasa ham (u odatdagidek ishlashda davom etadi, unda hech qanday zararli kod bajarilmaydi, DoS hujumi sodir bo'lmaydi va saytdagi ma'lumotlar to'g'ridan-to'g'ri o'qilmaydi yoki o'zgartirilmaydi), bu hali ham sayt o'z mijozlari yoki tashrif buyuruvchilarga taqdim etadigan xavfsizlik tizimidagi buzilishdir. Bu zaif xavfsizlik yorliqlari bo'lgan ilovani joylashtirish uchun ishlatiladigan saytga o'xshaydi. Shu sababli, tajovuzkor mijozning xavfsizlik yorlig'ini taxmin qilishi va o'zini (yoki uning) deb ko'rsatishi mumkin.
Ilovadagi zaif nuqta uning qiymatidan qat'i nazar, o'z parametrini qaytaradigan skriptdir. Yaxshi skript parametrning to'g'ri formatga ega ekanligiga ishonch hosil qilishi kerak, unda maqbul belgilar mavjud va hokazo. Yaroqli 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.
Saytingizni XSS hujumlaridan himoya qilishning uchta usuli mavjud.
- Kirishda o'zingizning filtrlashni amalga oshirish orqali (ba'zan kirish sanitariyasi deb ataladi). Har bir foydalanuvchi kiritishi uchun (u parametr yoki HTML sarlavhasi boʻladimi), har bir maxsus skript HTML teglariga, jumladan JavaScript kodiga nisbatan kengaytirilgan filtrlashni qoʻllashi kerak. Misol uchun, oldingi misoldagi Welcome.cgi skripti tegni filtrlashi kerak
Har bir skriptning har bir parametri uchun (eng oddiy turdagi XSS zaifligini aniqlash uchun JavaScript imkoniyatlariga ega brauzer orqali), agar matn JavaScript sifatida talqin qilinsa, brauzer JavaScript Alert oynasini ishga tushiradi. Albatta, bir nechta variant mavjud. Shuning uchun, bu variantni sinab ko'rishning o'zi 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 hujumni amalga oshirish noqulay.
Saytlar o'rtasida skript yaratish xakerlar veb-ilovalarni buzish uchun foydalanadigan eng keng tarqalgan dastur qatlami hujumlaridan biridir. U ham eng xavfli hisoblanadi. Bu ma'lum bir veb-sayt mijozlari ma'lumotlarining maxfiyligiga hujumdir. Mijoz ma'lumotlari o'g'irlanganda va kelajakda qandaydir maqsadlarda foydalanilganda xavfsizlik tizimining to'liq yo'q qilinishiga olib kelishi mumkin. Afsuski, ushbu maqolada aytib o'tilganidek, bu ko'pincha maqsadli mijoz yoki tashkilot haqida bilmagan holda amalga oshiriladi.
Veb-saytlar ushbu zararli harakatlardan himoyasiz bo'lishining oldini olish uchun tashkilot onlayn va oflayn himoya strategiyasini amalga oshirishi muhimdir. Bunga veb-saytlardagi barcha ma'lum zaifliklarni 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.
Har bir inson uzoq vaqtdan beri XSS-dan foydalangan holda tajovuzkor qurbonga cookie faylini yuborishga, CSRF tokenlarini o'qishga, fishing hujumini amalga oshirishga (soxta login formasini yaratish orqali) urinishlarini biladi. foydalanuvchi va shunga o'xshash boshqa hujumlar (ehtimol bu barcha imkoniyatlar emas, lekin bularning barchasi menga ma'lum bo'lgan eng mashhurlari. bu daqiqa).
Ushbu usulning maqsadi foydalanuvchi nomidan hujum qilingan saytga kiradigan sahifalarni kuzatish, shuningdek uning tugmachalarini bosishlarini kuzatish (siz ham harakat qilishingiz va sichqonchani bosishingiz mumkin, lekin men uchun bu keraksiz bo'ladi, ayniqsa foydali emas. ma'lumot, ko'p hollarda aniq) ...
Endi maksimal foyda uchun - men algoritm quyidagicha bo'lishiga ishonaman:- cookie-fayllarni o'qish va yuborish;
- qolgan ma'lumotlarni o'qing va yuboring (IP-manzil, o'rnatilgan plaginlar, brauzer versiyasi va turi, flesh-quvvatlash, silverlight-ni qo'llab-quvvatlash va boshqalar) [ixtiyoriy]
- biz ichki tarmoq haqida ma'lumot olamiz, biz yo'riqnoma orqali o'tamiz [ixtiyoriy]
- turli tokenlarni o'qish va yuborish [ixtiyoriy];
- biz fishingni amalga oshiramiz [ixtiyoriy];
- foydalanuvchi tomonidan "qo'l bilan" "biror narsa qilish [ixtiyoriy];
- biz unga josuslik qilishni davom ettiramiz va u yorliqni yopmaguncha yoki saytni tark etmaguncha ma'lumotlarni chiqarib tashlaymiz;
Ro'yxatdagi barcha ixtiyoriy elementlar vaziyatga va XSS yordamida erishiladigan maqsadlar uchun aniq ustuvorliklarga qarab bajarilishi kerak, ular ba'zan bir-biriga xalaqit berishi mumkin (agar siz ularni birlashtirishga harakat qilsangiz, aniqrog'i, birma-bir) va oshirish XSS ekspluatatsiyasining muvaffaqiyatsiz bo'lish ehtimoli.
Lekin birinchi va oxirgi nuqtalarga har doim amal qilish kerak, har holda, maqolaning asosiy qismi ushbu ro'yxatdagi oxirgi nuqta haqida bo'ladi.Maqsadga yaqinlashamiz.
Men uzoqdan boshlayman: JavaScript orqali yo'lni o'zgartirish mumkin manzil satri sahifani qayta yuklamasdan. Misol uchun, agar foydalanuvchi sahifani yuklagan bo'lsa
Keyin manzil satrida tarkib quyidagicha bo'ladi (sahifani qayta yuklamasdan):http: //site.com/new-url/
Aytgancha, bu xususiyat ba'zan foydalanuvchilardan (yoki foydalanuvchilarning ko'proq ehtiyotkor toifasi - administratorlardan) Reflected XSS-ni o'z ichiga olgan havolani bosgandan so'ng URLni yashirish kerak bo'lganda juda foydali bo'ladi, shunda keyinroq sahifa yuklangandan so'ng, manzil satriga qarab, hech narsa topilmadi.http: //site.com/search.php?q=123
http: //site.com/search.php?q=123
biz uni bu imkoniyatdan mahrum qilamiz.Ammo bu texnika yanada qiziqarli va kuchli foydalanishga ega. Biz havolani bosgandan so'ng foydalanuvchining saytda qolishini taqlid qilamiz, aslida u doimo bir xil sahifada qoladi va bu vaqtda uchinchi tomon skripti ishlaydi, ma'lumotni tajovuzkorga chiqaradi va yuboradi. Shunday qilib, XSS foydalanuvchi ushbu domendagi havolani bosgancha ishlaydi .
Biz fikrni aniqlaymiz.
Umumiy ishlash printsipi quyidagilardan iborat: foydalanuvchi XSS bilan sahifaga tashrif buyurganida, skript ushbu sahifa bilan bir xil manzilga ega iframe-ni yaratadi va uni oldingi planga "yopishadi", foydalanuvchi sahifa normal yuklangan degan taassurotga ega bo'ladi, chunki iframe faqat kod sahifalarida ko'rish mumkin.
Va yordamchi skript ayg'oqchi botning mantig'ini boshqaradi, ya'ni u manzil satrida uni o'zgartirish uchun freymdagi manzil o'zgarganda nazorat qiladi, lekin agar freymning yangi o'zgartirilgan manzilida boshqa domen bo'lsa, keyin uni yangi vlkadkada ochishingiz mumkin yoki kuyib ketmaslik uchun sahifani qayta yuklashingiz kerak bo'ladi.
Shunday qilib, XSS hozirda ishlashni to'xtatishi uchun foydalanuvchi sahifani qo'lda yangilashi kerak (agar XSS aks ettirilgan bo'lsa va POST usuli bilan uzatilgan bo'lsa, boshqa hollarda yangilanish saqlanmaydi va aytmoqchi, ba'zi brauzerlar endi sahifani yangilayotganda, POST so'rovini yana yuborishingiz mumkin) yoki yorliqni yoping yoki boshqa domenga o'ting (garchi bu holda siz hali ham nazoratni yo'qotishdan qochishingiz mumkin).Agar u hujum qilingan domenning subdomeniga kirsa, u holda tajovuzkorning tanlovi, ya'ni XSS ishlaydi, lekin foydalanuvchi manzil o'rtasidagi nomuvofiqlikni ko'rish ehtimoli kichik. O'ylaymanki, bu erda vaziyatga ko'ra, masalan, agar google.ru domeni hujumga uchragan bo'lsa, foydalanuvchi odatda drive.google.ru subdomenida joylashgan Google-ning bulutli fayl xizmatiga o'tdi, keyin u buni sezishi ehtimoli bor. manzil satriga qaraganingizda tuting ancha yuqori, agar u bu xizmatdan tez-tez foydalansa... Aks holda, siz xavf tug'dirishingiz mumkin. Ammo shuni hisobga olishimiz kerakki, biz endi subdomenli kadrdan uning ma'lumotlarini o'qiy olmaymiz, chunki Cross Origin siyosati bunga ruxsat bermaydi. Ammo biz uning nomidan asosiy domenga xotirjamlik bilan ko'tarilishimiz mumkin yashirin rejim(quyida bu haqda batafsilroq ma'lumot beriladi).
Faqat soat bu usul cheklovlar mavjud, ya'ni - saytning veb-server javoblarida sarlavha mavjud bo'lsa, u ishlamaydi. X-Frame-Options ma'nosi bilan INDOR QILING... Ammo shaxsan men bunday saytlarni tom ma'noda bir necha marta uchratganman, hozir hatto yarmi SAMEORIGIN orqali to'liq cheklash u yoqda tursin, fosh emas INDOR QILING.
Fikrni tahlil qilish.
Endi ko'pchilik BeEF kabi ajoyib narsani eslagan bo'lishi mumkin, unda juda ko'p qiziqarli narsalar mavjud. Aytgancha, freymda foydalanuvchini majburiy qayta yo'naltirish imkoniyati ham mavjud, ammo manzillar panelidagi manzil o'zgarmaydi, bu stolni tezda yoqishi mumkin va bu parametr biroz boshqa maqsadlar uchun xizmat qiladi.
Umuman olganda, BeEF'e sizga kerak bo'lgan deyarli hamma narsaga va hatto juda ko'p narsaga ega qo'shimcha funktsiyalar, lekin shaxsan men qo'shimcha funktsiyalarni xohlardim, xususan:- real vaqtda hujumga uchragan foydalanuvchi uchun mavjud bo'lgan sahifalar kodini kuzatish imkoniyati;
- o'sha saytda yozgan hamma narsani (login va paroldan tortib, tezkor tugmalar va xabarlargacha), ya'ni JS-da keyloggerni ko'rish imkoniyati;
- olingan sahifalar kodini ko'rgandan so'ng real vaqt rejimida botingizga JS buyruqlarini berish imkoniyati;
- buyruqlarni mahalliy botga qoldirish imkoniyati, shundan so'ng u ularni "olib oladi" va bizning bevosita ishtirokimizsiz bajaradi;
- botning yonib ketish ehtimolining pastligi yoki botning qiziquvchan ko'zlardan "yashirish" qobiliyati;
Yuqorida aytib o'tilganidek - men BeEF'dan buyruqni bajarish navbatining ajoyib g'oyasini olishga qaror qildim. Misol uchun, biz imtiyozli foydalanuvchi o'zining boshqaruv panelida saqlangan XSS bilan ko'tarilganda bot tashlab ketgan sahifalarni tahlil qildik, biz buyruqni botga qoldiramiz - JS kodi, foydalanuvchi keyingi safar kirganda, ushbu tugmani bosing, buni yozing. bu yerda qiymat va h.k., bu foydalanuvchi keyingi sahifaga tashrif buyurganida, bot buyruqlarni o‘qiydi va ularni bajaradi va biz uning boshqaruvida umuman bo‘lishimiz shart emas – bu juda qulay.
Asosan, bunday bot, albatta, kontentni boshqarishning qo'shimcha "tutqichlari" bo'lgan ba'zi saytlarning status foydalanuvchilari, boshqa foydalanuvchilar va boshqalar uchun mo'ljallangan. Funktsionallik so'rovlaridan ma'lum bo'lishicha, siz server tomonisiz qilolmaysiz.
Keling, fikrni amalga oshiraylik.
Asosan, siz maqolaning ushbu qismini o'tkazib yuborishingiz mumkin, chunki u shunchaki kerakli botni amalga oshirish jarayonini va uning ba'zi tafsilotlarini tavsiflaydi, agar kimdir uni qayta tiklamoqchi yoki o'zi uchun tugatishni xohlasa. Kodning boshida bot o'zgaruvchilarga ega bo'lsa-da, ular orqali siz ba'zi sozlamalarni o'rnatishingiz mumkin.
Birinchidan, yuklangan paytdan boshlab bot harakatlarining algoritmi:1) Sarlavha mavjudligini tekshirish X-Frame-opsiyalari: RED ET(agar mavjud bo'lsa, baliq ovlash tayoqlarini o'rang);
2) ramkani o'rnatish va botning barcha komponentlarini sozlash;
3) HTML kodidagi skript va barcha izlarni olib tashlash;
4) Server tomoni bilan aloqa o'rnatish va ma'lumotlarni jo'natishning boshlanishi, javoblarga munosabat bildirish (serverdan buyruqlar olish);Men birinchi fikrni to'liq aytmadim, ya'ni bot faqat birinchi sahifani va ildiz sarlavhasini tekshiradi. Gap shundaki, odatda bu sarlavhalar veb-server tomonidan bir vaqtning o'zida barcha sahifalar uchun va juda kamdan-kam hollarda o'rnatiladi. alohida sahifa hamma narsa "qo'lda" amalga oshiriladi. Va bu nomning o'zi juda kam uchraydi. Xo'sh, ikkinchi va uchinchi haqida aytish uchun alohida narsa yo'q, hamma narsa pastroq bo'ladi.
Nisbatan muhim jihat borki, kodingizga bot skript kodini qo'shishdan oldin manzil satridagi XSS belgilaridan darhol (JS kodidan) xalos bo'lishingiz kerak, chunki bu aniqlash imkoniyatini kamaytiradi va eng muhimi, bir xil XSS kodi bo'lgan kadrga manzil qo'shganda paydo bo'ladigan rekursiyani oldini oladi, bu esa o'z navbatida o'zi bilan boshqa ramka yaratadi va hokazo.
Biroq, har qanday holatda, bot kodi bunday ramka rekursiyasini aniqlash va uni allaqachon yaratilganiga ramka qo'shishga birinchi urinishda oldini olish imkoniyatini amalga oshiradi, lekin faqat unga tayanmaslik, balki qo'shimcha ravishda o'chirish yaxshiroqdir. bot kodini yuklashdan oldin kod. Garchi men hali hech qanday muammoga duch kelmagan bo'lsam ham.
Ramka yangilanishini tekshirish funksiyasi. Voqealar boshqaruvchilarini osib qo'yish orqali bu muammoni iqtisodiy jihatdan hal qilishning bir qancha usullarini sinab ko'rdim contentWindow yoki kontent hujjati, lekin hech narsa muvaffaqiyatga erishmadi, shuning uchun men freymning manzilini tekshiradigan va uni avval saqlangan bilan solishtiradigan funktsiyani yozishim kerak edi va shunga asoslanib, ramka yangilanganmi yoki yo'qmi (manzil o'zgarganmi) va keyin rekursiv ravishda qaror qabul qilishim kerak edi. o'zini chaqirdi.
Bunday tekshiruvlarning soniyada chastotasi o'zgaruvchi tomonidan boshqariladi kechikish, bu bot kod faylining boshida ko'rsatilgan. Ammo keyinroq, allaqachon yozganimdan so'ng, men samaraliroq echim topdim - oddiy echimdan foydalaning va osib qo'ying yuklash har bir kvadrat uchun, shuning uchun men bu funktsiyani tark etdim, lekin keyinchalik talab ko'proq bo'lib qolsa, uni izohlab berdim.Sahifaning HTML kodini yuborish.
Bu erda sxema juda oddiy - freymning har bir qayta yuklanishidan so'ng (birinchi yuklashni o'z ichiga olgan holda) bot serverga sahifaning butun HTML kodini joriy manzili bilan birga yuboradi, shunda keyinchalik kod tegishli yoki tegishli emasligini farqlay olasiz. kerakli sahifalar.
Server sahifalarni saqlash mantiqini amalga oshiradi - har bir domen uchun server ushbu domen nomi bilan papka yaratadi va u erda biz barcha ma'lumotlarni saqlaymiz. Sahifa kodlari saqlanadi va doimiy ravishda yangilanadi joriy versiyalar, lekin shu bilan birga, agar kerak bo'lsa, versiyalar tarixini boshqarishingiz uchun har bir yangi kunda sahifaning yangi nusxasi yaratiladi. Ya'ni, uchun /news.php 1-sentabrda status yangilanadi va 2-sentabrda uning nusxasi yaratiladi, faqat o'sha kun uchun tegishli va shuning uchun har kuni yana (agar foydalanuvchi ushbu sahifaga har kuni tashrif buyursa). Sahifa nomi sayt ildiziga (ya'ni domensiz) nisbatan sana va ushbu sahifaga yo'ldan iborat.
JavaScript-dagi Keylogger.
Bu g'oya allaqachon ba'zi ishqibozlar tomonidan amalga oshirilgan, ammo men uchun ularning ishlanmalari mos kelmadi, chunki ularning aksariyati juda oddiy edi, ya'ni ular bosilgan tugmachaning kodini aniqladilar. String.fromCharCode belgilarga tarjima qilingan. Ammo bu usulning bir qator kamchiliklari bor - shift, boshqarish, bo'sh joy va boshqalar kabi boshqaruv tugmachalari hech qanday shaklga tarjima qilinmaydi (ko'pincha bo'sh belgi), alfanumerik tugmachalarning shift tugmasi bilan o'zaro ta'siri noto'g'ri qayd etilgan, chunki bu dasturiy tarzda amalga oshirilishi kerak, shuningdek, barcha bosilgan tugmalar katta harflar bilan ko'rsatiladi, ular dasturiy jihatdan ham tuzatilishi mumkin.
Natijada, biz raqamlar, harflar va asosiy belgilarning barcha tugmachalarini to'g'ri aniqlagan, ikkala tartibda ishlaydigan, smenaga javob beradigan va barcha asosiy maxsus kalitlarni jurnalga yozadigan keyloggerga ega bo'ldik. To'g'ri, ba'zi belgilar (raqamli qatorning yuqori qismida, smena va raqam bosilganda chop etiladi) ba'zi mashinalarda farq qilishi mumkin, chunki ular asosiy standartga muvofiq amalga oshirilgan, ba'zi kompaniyalar ba'zilari uchun o'zgartiradilar.
Bosilgan belgilarning har bir qismi matn elementi diqqatni yo'qotmaguncha mijoz tomonidan saqlanadi. Bundan tashqari, ushbu qism serverga yuboriladi, u erda u matn faylida saqlanadi, u har kuni yangi nusxasi bilan yaratiladi, shunda katta o'lchamlarga o'sish bo'lmaydi va siz foydalanuvchi yozgan narsani tezda topishingiz mumkin. shunday vaqtda.
Kalitlarning o'ziga qo'shimcha ravishda, matn terilgan element haqidagi ma'lumotlar har bir qism bilan serverga yuboriladi (ya'ni u bo'lganmi? , yoki ba'zilari foydalanuvchi tezkor tugmalardan foydalanganda), element nomidan tashqari, uning asosiy ma'lumotlari (id, nom, sinf - mavjud bo'lsa) yuboriladi, shunda uni kodda osongina topish mumkin. Va, albatta, to'plam mavjud bo'lgan sahifaning manzili va ushbu to'plamning taxminiy vaqti qayd etiladi. V Umumiy ma'lumot klaviaturani taqillatgan foydalanuvchi haqida keyingi tahlil qilish uchun etarli darajada yuboriladi.Botingizga buyruq bering.
Bu jarayon tajovuzkor tomonidan yoki botning server qismi ishga tushirilgan tomonda yoki hatto masofadan turib amalga oshirilishi mumkin. Server skriptini ishga tushirgandan so'ng, veb-interfeys orqali ishlaydigan bot va uning boshqaruvchisi so'rovlariga xizmat qiluvchi o'z-o'zidan yozilgan miniatyura veb-server ishga tushadi. Ya'ni, ishga tushirilgandan so'ng, veb-server havola chiqaradi, uni bosish orqali siz botga buyruqlar berishni boshlashingiz mumkin.
Ushbu boshqaruv paneli haqida. Birinchidan, uni parol bilan cheklash kerak edi (yo'l va falon portda ishlaydigan xizmat haqida yoki ushbu xizmatdan foydalanish uchun tizimga kirishingiz kerak bo'lgan manzil haqida kam odam biladi), shunda siz avval serverga kiring, u manzil satrida ko'rsatilgan parolni so'raydi (misol keltiriladi), asl parol saqlanadi. password.txt bu o'zgartirilishi mumkin. Birinchi tashrifdan so'ng, veb-server brauzerga parolni cookie-faylda saqlashni buyuradi, shuning uchun endi bu haqda tashvishlanishingiz shart emas.
Botning o'ziga buyruqlar yuborish sahifasida, shuningdek, botning holati haqida ma'lumot mavjud - u hozir onlayn yoki oflaynmi, va bir nechta sozlamalar, birinchisi xost, ya'ni Botga buyruqlar yuboriladigan saytning IP manzili yoki domeni. Bu bir nechta saytlarda ushbu botni o'z ichiga olgan bo'lsa, ularni aniqlash uchun mo'ljallangan. Serverda, shuningdek, bu holatda, barcha ma'lumotlar domen nomlari bo'lgan papkalarga bo'linadi.
Keyinchalik JS-da botga buyruqlar yozishingiz mumkin bo'lgan oyna va ushbu JS kodining qayerda bajarilishini belgilovchi parametr bot o'tirgan asosiy oynada yoki ramkada - bu qulaylik uchun amalga oshiriladi. .Agar bot onlayn bo'lmasa, server shunchaki buyruqlarni saqlaydi va keyinroq, bot onlayn rejimiga o'tganda, ya'ni foydalanuvchi u bilan sahifaga yana tashrif buyuradi yoki tajovuzkorning havolasiga amal qiladi - bu buyruqlar bajariladi.
Agar birinchi razvedka paytida bot foydalanuvchi tashrif buyurgan barcha sahifalarni tashlab yuborsa, bu juda qulaydir (masalan, shaxsiy hisob), kodni o'rganib chiqqandan so'ng, biz JS-da buyruqlarni tuzdik, shunda bot bizga kerak bo'lgan havolalarni bosadi, kerakli ma'lumotlarni kiritadi, kerakli rasmlarni ko'rsatadi va hokazo, bu esa belgilangan maqsadga erishishga yordam beradi.Yoki siz bevosita real vaqtda, kod orqali sahifalar mazmunini tezda ko'rib chiqishingiz va botga boshqa sahifalar kodini yuborish, boshqa manzilga o'tish va hokazo buyruqlarini berishingiz mumkin. Va bularning barchasi "ekran ortida" amalga oshiriladi. ramka orqali saytni xotirjam kezadigan foydalanuvchi tomonidan.
Qulaylik uchun siz eng ko'p ishlatiladigan ko'rsatmalarni JS-dagi barcha funktsiyalarga shakllantirishingiz mumkin, so'ngra botlarni manba faylga kiriting ( xsb.js, fayl tuzilishi quyida muhokama qilinadi) va foydalanish. Yoki botga o'rnatilgan funksiyalardan foydalaning, garchi faqat asos bo'lsa va hech qanday yangi narsa yo'q, lekin, masalan, sahifa kodini yuborish funksiyasidan freym qayta yuklanganda emas, balki istalgan vaqtda foydalanishingiz mumkin. . Siz foydalanuvchi nomidan bir nechta sahifalar mazmunini ko'rish (va bu tarkibni virtual qo'llari bilan boshqarish) uchun fonda yangi ramkalarda unga uzatilgan havolalarni ochadigan funktsiyani yozishingiz mumkin.
O'z kodingizni olib tashlash.
Xo'sh, oxirgi xususiyat juda sodda tarzda amalga oshiriladi (uni faylga kerakli o'zgaruvchini o'rnatish orqali o'chirib qo'yish mumkin, ular sharhlanadi). Skript, barcha hodisa ishlov beruvchilarini o'rnatgandan va osib qo'ygandan so'ng, barcha o'zgaruvchilar va funktsiyalarni yaratgandan so'ng, o'zini o'zi o'chiradi.
Axir, barcha ma'lumotlar allaqachon yuklangan Ram brauzer orqali, shuning uchun tashvishlanadigan hech narsa yo'q, lekin bu nazariy jihatdan, ehtimol keyinroq men hisobga olmagan ba'zi muammolar bo'ladi, shuning uchun kerak bo'lganda o'chirib qo'yilishi mumkin bo'lgan o'zgaruvchini mukofotladim.
Barcha skriptlarni olib tashlaganingizdan so'ng, XSS-ni payqash juda qiyin bo'ladi, chunki ramka mavjudligi bu haqda bilvosita gapirmaydi va kodning o'zini faqat brauzerning tarmoq trafik tarixi jurnallarida topish mumkin (ular saqlanmaydi). Agar ishlab chiquvchi paneli ochiq bo'lmasa, ko'pgina brauzerlarda sukut bo'yicha) ...
Server qismi.
Botni ishga tushirishning osonroq va qulay usuli uchun o'zimning kichik veb-serverimni botga xizmat qiladigan, yuborilgan ma'lumotlarni qabul qilish va joylashtirish bo'yicha barcha operatsiyalarni ta'minlaydigan, tajovuzkor va bot o'rtasida xabarlarni uzatadigan rozetkalarga yozishga qaror qilindi. va tajovuzkorga buyruq berish uchun veb-interfeys yarating. ...
Server python tilida yozilgan, men uni ishga tushirishdan oldin hech narsa o'rnatmasligim uchun faqat standart kutubxonalardan foydalanishga harakat qildim. Bundan tashqari, serverning o'zi skriptlardagi ba'zi ma'lumotlarni tahrir qiladi, ya'ni botning JS skriptida siz buyruq serverining manzilini belgilashingiz shart emas, veb-server ishga tushganda kerakli ma'lumotlarni o'sha joyga qo'yadi. Server konfiguratsiyasida faqat bitta parametr mavjud - u ishga tushadigan port (sukut bo'yicha 8000).
Ishga tushgandan so'ng, server barcha kerakli ma'lumotlarni ko'rsatadi - qulaylik uchun JS skriptiga havola, uni o'tkazish kerak bo'ladi, buyruqlar paneliga havola yoki, aniqrog'i, tashqi va mahalliy manzillarga havolalar.Bot bilan ishlash sxemasi.
Biz serverni talab qilinmagan portda ishga tushiramiz va siz bot skripti bilan havolani yuborishingiz mumkin, keyin unga ergashgan har bir kishi sizga kunning istalgan vaqtida server saqlaydigan ma'lumotlarni yuboradi. Agar jamoani botga qoldirish va o'z biznesini davom ettirish zarurati tug'ilsa, ularni shunchaki ko'rishingiz mumkin.
Fayl tuzilishi.
Jildda quyidagi fayllar mavjud:
- xsb.py- server tomonini amalga oshiradigan asosiy fayl, bot uni ishga tushirishi uchun, so'ngra u taklif qilgan havoladan foydalaning;
- xsb.js- bu erda botning JS kodi saqlanadi, unga havola server tomonidan beriladi, uning boshida sizning xohishingizga ko'ra o'zgartirilishi mumkin bo'lgan konfiguratsiya o'zgaruvchilari e'lon qilinadi (ba'zilari, xususan, xost va port, server keyinroq ochiladi, tashvishlanishingizga hojat yo'q);
- panel.html- bu yerdan server bot boshqaruv paneli kodini oladi, siz o'zingizning xohishingizga ko'ra interfeysni sozlashingiz mumkin;
- password.txt- boshqaruv panelidagi parol bu erda saqlanadi, uni o'zgartirish mumkin;
- saqlangan ma'lumotlar- bu sayt domenlari bo'lgan papkalar yaratiladigan katalog bo'lib, unda barcha ma'lumotlar saqlanadi.
Faylda yana bir bor ta'kidlayman xsb.js siz kodning katta qismlarini yozmasdan panel orqali chaqiriladigan o'z funktsiyalaringizni qo'shishingiz mumkin;
Natijalarning kichik tahlili.
Foydalanuvchini XSS-li sahifada ramkalar orqali saqlashning o'zimning ixtiro qilingan usulini yozganimdan so'ng (yaxshi, ixtiro sifatida - men buni shaxsan o'zim uchun kashf qildim, bu texnikani kimdir o'zi uchun "ixtiro qilgan" bo'lishi mumkin yoki bu Umuman olganda, ommaning bir joyida porladi, chunki endi haqiqatan ham yangi narsani ishlab chiqish juda qiyin va qoida tariqasida, bir muncha vaqt o'tgach, siz "bu Simpsonsda bo'lganligini" bilib olasiz) Men BeEFni batafsilroq o'rganishni boshladim va uning wiki-ni o'qing. Keyin men xuddi shu maqsadga erishish uchun u erda boshqa usul qo'llanilganligini aniqladim - foydalanuvchining sahifadagi vaqtini bajariladigan XSS (u erda chaqirilgan) bilan uzaytirish. brauzerdagi odam). Va u quyidagicha amalga oshirildi: boshlang'ich sahifadagi barcha havolalar shunday o'zgardiki, ularning birortasini bosganda, skript sahifani qayta yuklamadi, balki Ajax orqali serverga so'rov yubordi va olingan ma'lumotlarni kiritdi. javob, ya'ni uni sun'iy ravishda yangilash deyish mumkin, bu ham oddiy yangilanishdan deyarli farq qilmaydi.
Shuning uchun men bu g'oyani birinchi bo'lib amalga oshirmaganman (usullar boshqacha bo'lsa ham). Ammo bu usullarning ikkalasi ham o'zlarining kamchiliklariga ega:
Yuklash usuli orqali
Agar brauzer uni qo'llab-quvvatlasa, ajax usuli har doim ishlaydi (hozirda barcha asosiy brauzerlar uni qo'llab-quvvatlaydi), lekin yangi Web 2.0 standarti bilan JS orqali har qanday elementlarning maxsus hodisalari tufayli ko'proq va ko'proq o'tishlar boshlanadi. Bir marta men Google AdWords-ga bordim va ularning HTML va JS u erda qanday o'zaro ta'sir qilishini ko'rishga qaror qildim, chunki mening barcha o'rgimchaklarim ushbu xizmatning xaritasini yaratishda juda yomon edi. Va men butun oqshomni jimgina o'tkazdim, u erda matn elementlari tugmalar, kalitlar va slayderlar bo'lgan va ular tasvirlanmagan va har birida turli tadbirlar uchun 30 ga yaqin ishlov beruvchilar bo'lganida u qanchalik tanish emas edi.
Ya'ni, chiroyli saytda o'tish tugmasi (sub'ektiv ravishda havola) oddiy teg orqali amalga oshiriladi. , qaysi uslublar bilan yuklangan va qaysi voqea ishlov beruvchilari osilgan, ulardan biri, masalan, onclick foydalanuvchini boshqa sahifaga yo'naltiradi. Bundan tashqari, [i] kabi standart elementlar mavjud. yoki o'zim va hokazo, ular aslida boshqa sahifalarga havolalardir, lekin BeEF javob bermaydi va ko'pchilik tugmalar va boshqa elementlar bosilganda sahifa yangilanmaydi. Bu foydalanuvchini sahifani yangilashga yoki "boshqa tomondan" qayta tashrif buyurishga undashi mumkin, bu bizning faol XSS seansimizni o'ldiradi.
Fayllarni qisqacha nomlash uchun men uni Xss Spy Bot deb nomladim.
P.S.
Vaqti-vaqti bilan vaqt etishmasligi va doimiy chalg'itish tufayli hamma narsa yozish uchun bir oydan sal ko'proq vaqt ketdi. Shu sababli, kodning sifati va qandaydir xatoga yo'l qo'yish ehtimoli juda yuqori. Shuning uchun men sizdan juda ko'p qasam ichmaslikni, balki uni tuzatishingiz uchun kimningdir yomonligini obunani bekor qilishingizni so'rayman.
Men o'zim botni faqat 4 ta mashinada sinab ko'rdim, ularning barchasida Debian bor edi.Ushbu botning uzoq muddatli rejalarida, agar motivatsiya bo'lsa:
- bot serverga yuboradigan sahifalar kodini ko'rsatishni amalga oshiring, shunda u darhol brauzerda ochiladi va "seziladi", tezda sinovdan o'tkaziladi;
- WebRTC texnologiyasidan bulochkalarni ushlashga harakat qiling, ya'ni olish yo'llarini toping yangi ma'lumotlar sof JS bilan tortib bo'lmaydigan;
- HTTP orqali WebSocket protokoli yordamida bot va server o'rtasidagi aloqani amalga oshirish;
- boshqaruv paneliga ba'zi qulayliklar qo'shing;Oxirgi marta 2016-yil 18-noyabrda yangilangan.
XSS orqali tajribali kiberjinoyatchilar ularda ishlaydigan skriptlarni zararlangan resurslarga tashrif buyurish vaqtida bajariladigan qurbonlar saytlari sahifalariga birlashtiradi. XSS zaifliklarining turli darajadagi zo'ravonliklari mavjud.
Passiv va faol zaiflikning xususiyatlari
Siz faol zaiflik bilan juda ehtiyot bo'lishingiz kerak. Agar tajovuzkor o'z SQL kodini kirish mumkin bo'lgan ma'lumotlar bazasiga yoki serverdagi faylga kiritsa, zararlangan manbaga tashrif buyurgan har bir kishi qurbon bo'lishi mumkin. Bunday joylar ko'pincha birlashtiriladi, shuning uchun ma'lumotlar bazasida saqlanadigan himoyangiz tomonidan qayta ishlangan ma'lumotlar ham ma'lum bir xavf tug'dirishi mumkin.
Passiv XSS zaifligini yaratish tajovuzkordan biroz zukkolikni talab qiladi. Yoki ular sizni har xil havolalar bilan soxta resursga jalb qilmoqdalar yoki har qanday yo'l bilan sizni kerakli saytga yo'naltirishga harakat qilmoqdalar. Bu odatda siz tashrif buyurayotgan sahifaning soxta ma'muriyatidan hisob sozlamalarini tekshirish so'rovlari bilan xatlar orqali sodir bo'ladi. Ko'p tashrif buyuradigan forumlardagi turli xil spam-xabarlar yoki xabarlar ham faol qo'llaniladi.
Passiv XSS zaifligi POST va GET parametrlaridan kelib chiqishi mumkin. Birinchisi, bir qator turli xil fokuslar bilan tavsiflanadi, ikkinchisi - url satrini kodlash yoki qo'shimcha qiymatlarni kiritish.
Cookie fayllarini o'g'irlash
Ko'pincha, sizning cookie fayllaringiz XSS hujumining nishoniga aylanadi. Ba'zida ularda qimmatli ma'lumotlar, shu jumladan foydalanuvchilarning foydalanuvchi nomlari va parollari yoki ularning xeshlari qoladi. Ammo siz uchun muhim bo'lgan saytlarning faol seanslarini o'g'irlash ham juda xavflidir, shuning uchun saytlarga tashrif buyurganingizda ham "chiqish" tugmasini bosishni unutmang. uy kompyuteri... Garchi bunday harakatlarning oldini olish uchun resurslarning aksariyati sessiya davomiyligini avtomatik ravishda cheklashdan foydalanadi. XMLHttpRequest domen cheklovlari bunday hujumlardan himoya qilmaydi.
To'ldiriladigan shakllardagi ma'lumotlar
To'ldiriladigan shakllardagi ma'lumotlarni o'qish ham mashhur. Buning uchun voqealar qiziqqan sahifalarda nazorat qilinadi (onsubmit) va barcha taqdim etilgan ma'lumotlar hujumchilar serverlariga ham yuboriladi. Bunday hujumlar ko'p jihatdan fishing hujumlariga o'xshaydi, lekin o'g'irlik soxta saytda emas, balki yaxshi obro'ga ega haqiqiy saytda sodir bo'ladi.
Tarqalgan DDoS hujumlari
XSS hujumlari uchun ko'p tomonlama resurslar ham qo'llaniladi. XSS zaifligi tufayli ularga kelgan so'rovlar buzilgan serverga yo'naltiriladi, buning natijasida uning himoyasi chidamaydi.
Saytlararo so'rovni qalbakilashtirish (CSRF / XSRF)
Ularning XSS bilan aloqasi ham yo'q. Bu XSS bilan birgalikda ishlatiladigan zaiflikning alohida turi. Ularning maqsadi, aldamchi operatsiyalarni amalga oshirish uchun daxlsiz saytdan soxta zaif sahifaga vakolatli foydalanuvchini jalb qilishdir. Masalan, mijoz foydalanmoqda elektron tizim to'lovlar tajovuzkorlarning hisoblariga pul o'tkazadigan zaif saytga jalb qilinadi. Shuning uchun, aksariyat to'lov tizimlari parol yoki operatsiyani tasdiqlovchi kodni qo'shimcha kiritish orqali himoyani ta'minlaydi.
XSS qurtlarni in'ektsiya qilish
Saytga bunday XSS hujumi taniqli ijtimoiy tarmoqlar (Vkontakte, Twitter va boshqalar) rivojlanishi bilan paydo bo'ldi. Ular orqali butun foydalanuvchilar guruhlari o'z nomidan tarmoqlar bo'ylab spam yuboradigan integratsiyalangan skriptlar bilan zaif XSS havolalarini oladi. Shuningdek, shaxsiy ma'lumotlar va fotosuratlarning nusxalarini tajovuzkorlarning resurslariga o'tkazish ham keng qo'llaniladi.
Zararsiz XSS misollar
E'tibor bering, ko'p turdagi hisoblagichlar faol XSS vazifasini ham bajaradi. Ular ro'yxatdan o'tgan tashrif buyuruvchilar to'g'risidagi ma'lumotlarni (ularning IP-manzillari, foydalanilgan uskunalar haqidagi ma'lumotlarni) uzatadilar.
Faqatgina ushbu kod sizning xohishingiz bilan kompyuteringizga kiritilgan. Boshqa shunga o'xshash XSS domenlararo AJAX so'rovlarini o'z ichiga oladi.
Oddiy hujum yordamida uchinchi tomon saytlaridan turli xil ma'lumotlarni olish imkoniyati haqida - Cross Site Scripting Inclusion (XSSI).
Agar siz Easy Hack-ni tizimli ravishda o'qisangiz, ehtimol siz bir xil kelib chiqish siyosati (SOP) bilan tanishsiz, biz unga tez-tez qaytamiz. SOP tufayli ikkita "sayt" o'rtasidagi o'zaro hamkorlik juda cheklangan. Ammo bir saytdan boshqasidan ma'lumot olish va yuborish vazifasi ko'pincha paydo bo'lganligi sababli turli usullar siyosatni "yumshatish" va o'zaro hamkorlikni tashkil qilish. Masalan, CORS yoki crossdomain.xml kabi. Eski usullardan biri teg yordamida JavaScript-ni boshqa domendan yuklashdir
Foydalanuvchi tajovuzkorning veb-saytiga kirganda, brauzer qurbon.com dan JS-ni yuklab oladi va ishga tushiradi, lekin evil.ru SOP kontekstida. Bu shuni anglatadiki, tajovuzkorning JS-dan biz jabrlanuvchi serveridagi ma'lumotlarga (barchasi emas) kirishimiz mumkin bo'ladi.
Masalan, jabrlanuvchi saytidagi JS tarkibi (http://victim.com/any_script_.js):
Var a = "12345";
Keyin, tajovuzkorning veb-saytida biz o'zgaruvchining qiymatini olishimiz mumkin:
Ishning g'oyasi alyuminiy choynak kabi oddiy.
Darhaqiqat, boshqa saytlardan statik JS-ni yuklash qobiliyati jabrlanuvchi sayt uchun rasmni yuklashdan ko'ra ko'proq muammo tug'dirmaydi.
JS dinamik ravishda yaratilganda, ya'ni JS skriptining mazmuni cookie fayli ma'lumotlari asosida, qaysi foydalanuvchi unga kirishiga qarab o'zgarganda muammolar paydo bo'lishi mumkin. Masalan, JSda ba'zi "tanqidiy" ma'lumotlar saqlanadi: shaxsiy ma'lumotlar (elektron pochta, jabrlanuvchi saytidagi foydalanuvchi nomi) yoki texnik ma'lumotlar (CSRFga qarshi tokenlar).
Lekin, biz bilganimizdek, skriptni teg orqali yuklashda