Herkese merhaba, DVWA lablarını çözdüğümüz serinin üçüncüsüne 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
Bir önceki yazımı okuduysanız fark etmişsinizdir ki ben her zaman XSS aramaya testdeneme'"><
ile başlarım.
Name kısmını doldururken uygulama testdeneme'"><
yazmama izin vermedi. Muhtemelen client side‘ da karakter uzunluğu kontrolü yapıyorlar.
NOT : Client-side‘ da yapılan yasaklamalar, kısıtlamalar çok rahatlıkla Burp Suite aracı ile atlatılabilir.
Hangi karakterlerin HTML encode’landığını görmek için Name alanını ile deneme'"><
değiştirip Sign Guestbook’a basıyorum.
Sayfanın kaynağını görüntülediğimizde input olarak girdiğimiz büyüktür, küçüktür karakterleri HTML içerisinde HTML encode’lanmadığını yani tag olarak kullanıldığını görüyoruz.
O halde, ister Name kısmına ister de Message kısmına <script>alert(1)</script>
yazmamız yeterli olacaktır.
Her şey iyi güzel de, Name kısmına Javascript kodumuz sığmıyor diyebilirsiniz. Haklısınız
O halde Client-side korumaları nasıl atlatabileceğimize geçelim.
Öncelikle Burp Suite aracı sayesinde requestimizi yakalıyoruz.
NOT : Yukarıda gördüğünüz txtName ve mtxMessage’daki değerler; girdiğiniz inputların URL-Encode’lanmış halidir.
Yakaladığımız requesti Repeater’a gönderiyoruz.
NOT : Ctrl+Shift+U
ile URL-Decode yapıp değiştirmek istediğiniz alanı daha rahat görebilirsiniz. Ayrıca Ctrl+U
ile de seçtiğiniz alanı URL-Encode yapabilirsiniz.
Send’e basıp değiştirdiğimiz requestimizi gönderiyoruz.
Gördüğünüz gibi iki farklı pop-up çıktı. Bu da demek oluyor her iki javascript kodumuz da çalıştı.
#ORTA
Aynı taktikle XSS aramaya devam ediyoruz.
Sayfanın kaynağını incelediğimizde, Message kısmına yazdığımız testdeneme'"><
‘deki büyüktür ve tek tırnak sembolleri HTML encode’lanmasına rağmen Name kısmına yazdığımız deneme'"><
hala duruyor.
Bir önceki örnekte görmüştük biz o alanı da kontrol edebiliyoruz. Burp suite ile requesti yakalayıp Repeater’a gönderiyorum.
txtName kısmını <script>alert(1)</script>
ile değiştirdikten sonra Send’e basıyoruz.
#ZOR
Aynı taktikle XSS aramaya devam ediyoruz.
Sayfanın kaynağını incelediğimizde manzaranın bir önceki örnek ile aynı olduğunu anlıyoruz. Message kısmına yazdığımız > < karakterleri HTML-Encodelandığı için o kısma bir müdahale edemeyiz.
Bir önceki örnekte de yaptığımız gibi Burp Suite ile requesti yakalıyoruz ve Repeater’a gönderiyoruz.
Bir önceki örnekte de yaptığımız gibi txtName kısmını <script>alert(1)</script>
ile değiştirip send’e basıyoruz.
Sayfanın kaynağını incelediğimizde 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ı yazıp URL-Encode’ladıktan sonra Send’e basıyoruz.
Bir sonraki yazımda görüşmek üzere …