Ana Sayfa / Laboratuvarlar / DOM-Based XSS & Güvensiz JSON Ayrıştırma Zafiyeti
XSS (Cross-Site Scripting) Orta Seviye (Practitioner) ⏱️ 15 Dakika 🛡️ OWASP Top 10 - A03: Injection

DOM-Based XSS & Güvensiz JSON Ayrıştırma Zafiyeti

Sunucuya hiç gitmeden, tamamen istemci tarafında JavaScript kodunun URL fragment (#) veya document.location kaynağından aldığı veriyi innerHTML gibi güvensiz bir alıcıya (sink) yazması zafiyetidir.

Laboratuvarı Tarayıcınızda Canlı Deneyin

Kurulumsuz, sanal hedef tarayıcı ve web terminali ile doğrudan zafiyeti istismar edin.

Laboratuvara Gir ⚡

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

1

DOM Kaynağını (Source) Keşfetme

JavaScript kodunda window.location.hash veya document.URL okunan satırları inceleyin.

2

Güvensiz Sink Noktasını Bulma

JSON verisinin innerHTML veya eval() fonksiyonuna aktarıldığı yeri tespit edin.

3

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 ⚡