Görev ve Zafiyet Senaryosu
Kullanıcı profil sayfası tema ayarlarını URL hash parametresinden JSON olarak okumakta ve doğrudan display.innerHTML içerisine yazmaktadır. Saldırgan #{"theme":""} ile DOM XSS tetikler.
Hedef (Objective)
🎯 Görev: URL sonundaki hash (#) alanına JSON formatında zararlı bir SVG/IMG payloadı yerleştirerek tarayıcıda DOM tabanlı JavaScript çalıştırın.
Adım Adım Çözüm Metodolojisi
DOM Kaynağını (Source) Keşfetme
JavaScript kodunda window.location.hash veya document.URL okunan satırları inceleyin.
Güvensiz Sink Noktasını Bulma
JSON verisinin innerHTML veya eval() fonksiyonuna aktarıldığı yeri tespit edin.
Payloadı Enjekte Etme
JSON sözdizimini bozmadan HTML tagi içeren JSON objesini URL hash kısmına ekleyin.
Örnek Payload ve İstismar Kalıpları
#{"theme":"<img src=x onerror=alert(1)>"}#{"role":"<svg onload=alert(document.domain)>"}#{"display":"<iframe src=javascript:alert(1)></iframe>"}
Güvenli Kodlama ve Savunma Mekanizmaları
Zafiyet Nasıl Kapatılır?
- innerHTML yerine textContent veya innerText kullanarak girdiyi salt metin olarak işleyin.
- İstemci tarafında DOMPurify gibi güvenilir sanitization kütüphanelerinden yararlanın.
- Kullanıcı kontrolündeki verileri doğrudan script ve event handler bağlamına yazmayın.
Uygulamaya Başlamaya Hazır mısınız?
SiberAdam interaktif arenasında hedef tarayıcı, DevTools ve CyberTerminal ile bayrağı hemen yakalayın.
Şimdi Çözmeye Başla ⚡