DVWA Reflected Cross Site Scripting (XSS) ÇÖZÜMLERİ

Sefa Ozan
4 min readApr 10, 2021

--

Herkese merhaba, DVWA lablarını çözdüğümüz serinin ikincisine hoş geldiniz. XSS ile ilgi daha daha çok bilgi için daha önceden yazdığım blog’a şuradan ulaşabilirsiniz.

Vakit kaybetmeden çözümlere geçelim.

#KOLAY

Ben her zaman XSS aramaya testdeneme'">< ile başlarım. Bunu yapmamın sebebi hangi karakterlerin html encodlandığını görmektir.

Sayfanın kaynağını görüntülediğimizde input olarak girdiğimiz büyüktür, küçüktür karakterleri HTML içerisinde tag olarak kullanılıyor.

HTML context’te olduğumuz için herhangi bir atribute’tan çıkmamıza ya da herhangi bir tag’i kapatmamıza gerek yok. Direkt payload’ımızı yazıyoruz.

Başarılı bir şekilde HTML kodları arasına kendi javascript kodumuzu yazabildik ve sayfada bir pop-up çıkarabildik.

proof of concept

#ORTA

Aynı taktikle XSS aramaya devam ediyoruz.

Sayfanın kaynağını incelediğimizde, yine input olarak girdiğimiz büyüktür, küçüktür karakterleri HTML içerisinde tag olarak kullanıldığını görüyoruz.

Javascript kodumuzu yazıp submite basıyoruz.

Bir önceki örnekte hatırlayın,<script>alert(1)</script> yazıp submit’e bastığımızıda bir pop-up çıkmıştı. Ama bu sefer çıkmadı.

Tekrar sayfanın kaynağını inceliyoruz. Görüyoruz ki yazdığımız <script>tagi silinmiş. Bu yüzden de yazdığımız javascript kodu çalıştırılmadı.

Belki tek sefere mahsus siliyordur diye düşünüp payload’ımı <script><script>alert(1)</script> olarak değiştirip tekrar submit’e basıyorum.

Ama sonuç yine aynı.

Eğer site yazdığımız bütün script taglerini siliyorsa bu davranışı kendi yararımza kullanabiliriz. Örneğin payloadımızı <scr<script>ipt>alert(1)</script> olarak değiştirirsek site <script>tagini sildiğinde payloadımız <script>ipt>alert(1)</script>olur.

proof of concept

#ZOR

Aynı taktikle XSS aramaya devam ediyoruz.

Sayfanın kaynağını incelediğimizde, yine input olarak girdiğimiz büyüktür, küçüktür karakterleri HTML içerisinde tag olarak kullanıldığını görüyoruz.

Javascript kodumuzu yazıp submite basıyoruz.

Ctrl+f ile ile yazdığımız <script>alert(1)</script> javascript kodunu arattığımda hiçbir sonuca varamadım. Bir de <script>alert(1)</script> olarak deniyoruz.

Tekrar sayfanın kaynağını inceliyoruz.

Görüyoruz ki yazdığımız javascript kodundan eser kalmamış. O halde biz de payload’ımızı değiştirip tekrar deneriz. Tag ve event’lerin tam listesine buradan ulaşabilirsiniz.

Payload’ımızı <img src=x onerror=alert(1)> olarak değiştiriyoruz.

  • <img> : Resim eklemek için kullanılan bir HTML etiketidir.
  • src=x : Ekleyeceğimiz resimin kaynağını belirtmek için kullanılır. x olarak bir kaynak olmadığı için hata verecek ve onerror event’i çalışacak.
  • onerror : Hata oluştuğunda bu event çalışır.
  • alert(1): Pop-up çıkarmaya yarar.
proof of concept

NOT :

  • XSS’in çözümü taglerin yasaklanması değildir.
  • XSS’i önlemek istiyorsanız HTTP-Response’u browser’a vermeden önce output-encoding yapmanız gerekiyor.

Bir sonraki yazımda görüşmek üzere …

--

--

Sefa Ozan
Sefa Ozan

No responses yet