
Bu konuda #BugBountyGünlüğüm serisine devam ederken size hayatımda bulduğum en kolay stored xssi anlatcam
bug bountye başlamak isteyip de zor iş ben başaramam diye düşünenler için bu açığı anlatmak istedim
bir mesajlaşma uygulamasını kurcalıyordum bi süre endpointleri inceledikten sonra attachment ekleme kısmından hıncımı çıkarmaya karar verdim
ilk olarak bir jpg yükledim mesajlaşma ekranında resim normal şekilde görüntülendi -beklendiği üzere- html kaynak kodunu incelediğimde img tagının src değerinde o resmin yolunu gördüm
"https://cdn.example.com/attachments/568091306513940480.jpg"
tarayıcıda doğrudan urlyi açtığımda dosyanın cdn üzerinden servis edildiğini doğruladım
aklıma şu soru geldi
"acaba sunucu dosya formatına göre frklı response headerları mı döndürüyor yoksa dosyayı olduğu gibi cdne mi koyuyo"
bunu anlamak için farklı dosya türleri yüklemeye bşladım txt dosyası denedim ardından html yüklemeyi denedim ve içine keyfi bi şekilde h1 etiketi ardından şu payloadı bıraktım:
HTML:
<script>alert("XSS")</script>
html yüklediğimde uygulama bana bir indirme butonu gösterdi ilk bakışta muhtemeln güvenli diye düşündüm ama içime bi kurt düştü ve 2dk bi bakim diyip burpten attachmentın cdn pathini alıp tarayıcımda açtım.
"https://cdn.example.com/attachments/568091306513940480.html"

cdn urlsini tarayıcıda açınca dosyanın indirilmeyip html olarak render edildiğini gördüm ve payload çalıştı
sonra bi umut belki rce yakalarım diye php dosyası yükledim fakat maalesef sonuç alamadım -beklendikti- ben de elimdeki xsse geri döndüm
cookielere local storage ve session storagelere baktım ama tahmin edeceğiniz üzere cdn üzerinde hassas veri bulunmuyordu
bunlara rağmen bulduğum hala bi xss açığıydı kolaydı ve kısa sürede bulmuştum
demek istediğim hiç beklemediğiniz yerlerden beklemeyeceğiniz kadar basit zafiyetler fırlayabiliyo