logo
ProfessionalCommunity Edition

DOM XSS ni test qilish

Oxirgi yangilanish: 23-iyul, 2026O'qish vaqti: 4 daqiqa

DOM XSS'ni sinash zerikarli bo'lishi mumkin, chunki bu ko'pincha kiritmangizning murakkab JavaScript orqali oqimini qo'lda kuzatishni talab qiladi, kod esa minglab qatorga cho'zilishi mumkin. DOM Invader bu jarayonni sezilarli darajada soddalashtiradi: u kiritmangiz qaysi sinklarga oqib borishini atrofdagi kontekst bilan birga darhol ko'rsatib beradi.

DOM Invader yordamida DOM XSS'ni sinash

Tegishli funksiyalarning ko'pchiligiga kengaytmaning DOM ko'rinishidan kirishingiz mumkin.

Canary'ni kiritish

DOM Invader oldindan belgilangan "canary" satrining uchrashuvlarini topish uchun DOM'ni avtomatik tahlil qilish orqali ishlaydi. Bu ixtiyoriy, lekin o'ziga xos alfanumerik belgilar satri bo'lib, siz uni turli manbalarga (sources) kiritib, ular qaysi sinklarga oqib borishini ko'rishingiz mumkin.

DOM Invader kuzatayotgan joriy canary'ni DOM ko'rinishining yuqori chap burchagida ko'rishingiz mumkin. E'tibor bering, xohlasangiz canary'ni o'zingizning satringizga o'zgartirishingiz mumkin.

Canary'ni manbaga qo'lda kiritish uchun:

  1. Brauzerning DevTools panelidagi DOM Invader yorlig'iga o'ting.
  2. DOM ko'rinishida ekanligingizga ishonch hosil qiling.
  3. Copy canary tugmasini bosing. DOM Invader kuzatayotgan canary buferga nusxalanadi.
  4. Canary'ni sinamoqchi bo'lgan har qanday kiritish maydoniga joylashtiring. Bu URL'dagi so'rov parametrlari, forma maydonlari va hokazolar bo'lishi mumkin.

Potensial manbalar haqida batafsil ma'lumot olish uchun Web Security Academy'dagi DOM'ga asoslangan zaifliklar mavzusini ko'rib chiqing.

Web Security Academy

Canary'ni bir nechta manbaga kiritish

Garchi canary'ni bir vaqtning o'zida bir nechta manbaga qo'lda joylashtira olsangiz ham, buni avtomatik bajarish uchun quyidagi imkoniyatlar mavjud:

  • Inject URL params - Canary'ni URL'dagi har bir so'rov parametriga avtomatik kiritadi, har bir parametr uchun alohida yorliqdan foydalanadi.
  • Inject forms - Canary'ni sahifada aniqlangan har qanday HTML forma maydoniga avtomatik kiritadi. E'tibor bering, kiritish kuchga kirishi uchun formani baribir qo'lda yuborishingiz kerak.

Eslatma

Canary'ni barcha URL parametrlari va forma maydonlariga bir vaqtning o'zida kiritish saytning to'g'ri ishlashiga to'sqinlik qilishi mumkin. Eng yaxshi natijaga erishish uchun bir vaqtda bitta manbani sinashni tavsiya qilamiz.

Boshqarilishi mumkin bo'lgan sinklarni aniqlash

Canary'ni kiritganingizdan so'ng, DOM Invader canary'ingiz paydo bo'ladigan sinklarni aniqlash uchun DOM'ni avtomatik tahlil qiladi. So'ngra u bu sinklarni DOM ko'rinishida qanchalik qiziqarli ekanligi bo'yicha tartiblab ko'rsatadi.

XSS kontekstini aniqlash

Boshqarilishi mumkin bo'lgan sinkni aniqlaganingizdan so'ng, keyingi qadam - kiritilgan payload'ingiz paydo bo'lgan kontekstni o'rganish. Bu quyidagi ma'lumotlarni aniqlashni o'z ichiga oladi:

  • Siz HTML bilan ishlayapsizmi yoki JavaScript bajaruvchi sink bilanmi.
  • Kiritmangiz atrofida siz undan chiqib ketishingiz kerak bo'lgan maxsus belgilar bormi. Bularga qo'shtirnoqlar, teglar, atributlar va hokazolar kiradi.
  • Veb-sayt kiritmangiz sinkga yetib borishidan oldin unga qanday tekshiruv, tozalash yoki boshqa qayta ishlovni qo'llaydi.

Bunda sizga yordam berish uchun DOM Invader sinkning mazmunini ko'rsatadi, jumladan canary'ingizni va siz kiritgan atrofdagi belgilarni DOM'da qanday ko'rinishda bo'lsa, shundayligicha aks ettiradi. Ya'ni, siz canary'ingizga maxsus belgilarni qo'shib, ularning escape yoki kodlanayotganini osongina ko'rishingiz mumkin. Quyidagi misolda biz turli foydali belgilarni muvaffaqiyatli kirita olganimizni ko'rishingiz mumkin.

DOM XSS'ni xuddi reflected XSS kabi sinash

DOM Invader aniqlagan sink turiga qarab quyidagi tafsilotlarni ham ko'rishingiz mumkin:

  • Outer HTML - Canary'ingizni o'rab turgan HTML elementi.
  • Frame path - Canary'ingiz sinkga uzatiladigan freym.
  • Event - Canary'ingiz sinkga uzatilganda yuz beradigan JavaScript hodisasi.

Bu ma'lumot XSS kontekstini osongina ko'rish va eksployt yaratish uchun qaysi belgilar va hodisalar kerakligini sinash imkonini beradi. Quyidagi misolda biz XSS proof-of-concept eksploytimizni kiritish uchun qo'shtirnoqli satrdan va uni o'rab turgan dan muvaffaqiyatli chiqib ketdik.

Eksployt yaratish

Mijoz tarafidagi kodni o'rganish

Turli kiritmalar bilan tajriba o'tkazayotganingizda, kiritmangiz to'satdan sinkga oqishni to'xtatganini sezishingiz mumkin. Buning sababi shundaki, siz sinkga faqat muayyan kod yo'li orqali, masalan, shartli operatorning bitta tarmog'i orqali yetib bora olishingiz mumkin.

DOM Invader sizga mijoz tarafidagi kodda kiritmangiz sinkga uzatiladigan nuqtaga to'g'ridan-to'g'ri o'tish imkonini beradi. Keyin oldingi kodni o'rganib, kiritmangiz sinkga yetib borishi uchun qanday shartlarga javob berishi kerakligini aniqlashingiz mumkin.

Koddagi tegishli qatorni ko'rish uchun:

  1. Sinkga yetib borishini bilgan payload'ni kiriting.
  2. DOM Invader'ning DOM ko'rinishida Stack Trace ustunidagi havolani bosing. Bu brauzer konsoliga stek izini chiqaradi.
  3. DevTools panelida Console yorlig'iga o'ting.
  4. Stek izida eng yuqoridagi havolani bosing (u bitta bo'lishi ham mumkin). Bu Sources yorlig'ida mijoz tarafidagi JavaScript'ni ochadi va kiritmangiz sinkga uzatiladigan qatorga e'tiborni qaratadi.

Batafsil o'qing

DOM Invader juda moslashuvchan tarzda sozlanadi. DOM Invader'ning ilg'or funksiyalari va ularning xatti-harakatini muayyan sayt uchun qanday nozik sozlash haqida batafsil ma'lumot olish uchun DOM Invader sozlamalari bo'limiga qarang.

Ushbu maqola foydali bo'ldimi?