Hem kurulumu, hem kullanımı kolay, üstelik oldukça eğitici bir uygulama olan Damn Vulnerable Web Application(DVWA), üzerinde 3 seviyede sizin bilginizi ölçecek şekilde güvenlik açıklıkları bulunan bir PHP/MySQL Web uygulamasıdır. Bu uygulama aracılığı ile XSS, SQLi, CSRF… bilginizi ölçebilir, kendinizi geliştirebilirsiniz. Bugün anlatacağımız uygulamada DVWA üzerindeki düşük ve orta düzeydeki XSS açığının nasıl sömürülebileceğini göstereceğiz.
Öncelikle XSS’in ne olduğunu konuşacak olursak: HTML kodlarının arasına istemci tabanlı kod gömülmesi yoluyla kullanıcının tarayıcısında istenen istemci tabanlı kodun çalıştırılabilmesi olarak tanımlanır. XSS saldırgan tarafından same-origin-policy gibi erişim kontrollerini baypas’lamak için kullanılabilir.
Kısaca yaptığımız açıklamalardan sonra uygulamayı kullanmaya başlayalım. Öncelikle DVWA’nın sistemine login olduktan sonra, güvenlik düzeyini düşüğe çekip, Reflected XSS menüsünü seçiyoruz.
Düşük Düzey
Yukarıda gördüğümüz formdaki textbox’ın isminin name olduğunu biliyoruz. Kodlarını aşağıda görebilirsiniz, bir ufak inceleyecek olursak; ekrana “Hello name’in_içindeki_değer” olarak değer bastığını biliyoruz. name textbox’ı için yapılan kontrollerin yetersiz olduğunu hep birlikte gördük; bu durumda rahatlıkla script tag’i içerine yazacağımız bir alert fonksiyonu ile güvenlik açığını kullanabiliriz..
Yukarıdaki resimde gördüğümüz bizim saldırı vektörümüzü oluşturan metin kutumuza xss dendiğinde ilk aklımıza gelen şeyi giriyoruz:
Script tagleri istemci tabanlı kodları ifade ederler. İçerisine yazılan alert() bir fonksiyon olup, ekrana içerisinde merhaba yazan bir messagebox gönderilmesini sağlar.
Orta Düzey
Güvenlik seviyesini orta düzeye getirdiğimizde yine aynı sayfayla karşılaşıyoruz. Html sayfası bizim gözümüze aynı görünse de aslında arka planda değişen bazı şeyler var. Bunları inceleyecek olursak, bir öncekinden tek farkının tag’ini kaldırmak olduğunu görebilirsiniz. Ancak bu bölüm, bana kalırsa orta düzey olamayacak kadar kolay çünkü string’i birebir olarak arıyor. Yani yerine ScRipT gibi bir şey yazarsak algılayamayacak.
Bu defa direkt bir string yazmak yerine textbox’ın içerisine:
yazıyorum, oturumdaki kullanıcının cookie değerini almak istiyorum. Ve sonuç: