PostMessage
PostMessages wildcards
PostMessage mesaj göndərmək üçün aşağıdakı funksiyadan istifadə edir:
Beləliklə mesajlar yalnız həmin istifadəçiyə göndərilə bilər (təhlükəsiz). Və ya bulud "*" işarəsi ola bilər. Joker işarədən istifadə edildiyi təqdirdə mesajlar istənilən domenə göndərilə bilər.
Hücum
Bu hesabatda siz hansısa məqamda targetOrigin kimi joker işarədən istifadə edərək poçt mesajı göndərə bilən səhifəni necə iframe edə biləcəyinizi oxuya və məlumatların ixtiyari domenə göndərilməsi üçün onun yerini dəyişdirə bilərsiniz. Bu hücumu həyata keçirmək üçün X-Frame başlığı vuln səhifəsində olmamalıdır.
addEventListener exploit-i
Mesajları analiz etmək üçün aşağıdakılara bənzər bir kod istifadə ediləcək:
Bu vəziyyətdə kodun etdiyi ilk şey mənşəyi yoxlamaqdır. Bu, əsasən, səhifə qəbul edilmiş məlumatla (parolun dəyişdirilməsi kimi) həssas hər hansı bir iş görəcəksə, çox vacibdir. Mənşəyi yoxlamazsa, təcavüzkarlar qurbanları bu son nöqtələrə ixtiyari məlumat göndərməyə və qurbanların parollarını dəyişdirməyə məcbur edə bilərlər (bu nümunədə).
Mənşəyi yoxlamaq vacibdir və onu düzgün yoxlamaq da eyni dərəcədə vacibdir:
PostMessage zəifliyini Bypass etmək
PostMessage hadisəsinin mənşəyini yoxlamaq üçün indexOf() istifadə olunursa, unutmayın ki, mənbə The Bypass-da göründüyü kimi sətirdə olarsa, onu keçmək olar.
Mənşəyi təsdiqləmək üçün search() funksiyasından istifadə etibarsız ola bilər. String.prototype.search() sənədlərinə əsasən, metod sətir əvəzinə müntəzəm repressiya obyekti götürür. Əgər regexp-dən başqa bir şey ötürülürsə, o, dolayısı ilə regexp-ə çevriləcək.
Normal ifadədə nöqtə (.) joker simvol kimi qəbul edilir. Başqa sözlə, mənşəyin istənilən simvolu nöqtə ilə əvəz edilə bilər. Təcavüzkar bundan faydalana və www.s.afedomain.com kimi təsdiqləməni keçmək üçün rəsmi domen əvəzinə xüsusi domendən istifadə edə bilər.
escapeHtml funksiyasından istifadə edilərsə, funksiya yeni qaçmış obyekt yaratmır, bunun əvəzinə mövcud obyektin xassələrinin üzərinə yazır. Bu o deməkdir ki, əgər biz hasOwnProperty-ə cavab verməyən, idarə olunan xassə ilə obyekt yarada bilsək, o, xilas olmayacaq.
Fayl
obyekti bu istismar üçün mükəmməldir, çünki o, şablonumuz tərəfindən istifadə edilən və escapeHtml
funksiyasını yan keçəcək yalnız oxumaq üçün olan name
xüsusiyyətinə malikdir.
Last updated