Bastım payloadı aldım alerti, çaldım cookieleri girdim loginleri.
Konumuz XSS
Xss'i 4 farklı başlık altında işleyeceğim.
Resimde de görüldüğü gibi reflected, stored, dom ve blind xss olmak üzere 4 farklı başlık adı altında işleyeceğiz.
XSS Nedir ?
XSS (Cross-Site Scripting), kötü niyetli kullanıcıların web uygulamalarına, özellikle de tarayıcıların HTML yorumlama özelliklerine kötü amaçlı kodlar (script, iframe vb.) eklemelerine neden olabilen bir web uygulama güvenlik açığıdır. Bu kodlar, web sayfalarında veya kullanıcıların tarayıcılarında çalıştırılabilir ve kullanıcıların çerezleri, oturum açma kimlik bilgileri gibi hassas bilgilerini çalabilir veya kötü amaçlı eylemler gerçekleştirebilir. Reflected XSS, özel olarak hazırlanmış bir bağlantı veya URL'nin kullanıcılara gönderildiği ve kullanıcının bu bağlantıyı tıkladığında kötü amaçlı bir kodun çalıştığı bir saldırı türüdür.
1-Reflected XSS
Reflected xss hackerın xss payloadını sadece kendide gösterilmiş olmasıdır. Yani payload sadece kendisinde gözükür ta ki payloadı koyup linke birinin tıklamasına kadar, zararlı kodu içeren bir url tıkladığımızda yine kötü amaçlı kodlara maruz kalacağız.
Tıpki html injection konumuzdaki gibi bir arama kutusu ve butonumuz var, sistemin nasıl çalıştığını anlamak için bir şeyler test edelim.
ref.php ile bir arama yaptığım zaman
ref_xss.php de aksiyon alıyoruz. Kaynak koduna baktığımızda ise;
Yazdığımız yazının "h1" tagı içine yazıldığını görüyoruz.
Bizde burada verilen inputa "<script>alert(document.domain)</script>" yazarak zafiyeti sömürmeyi deniyoruz.
evet alerti aldık demekki burada reflected xss zafiyeti mevcut.
burada bizim yazdığımız yazının ref_xss.php dosyasına actionu verilmiş POST methodu ile yazdığımız veri gönderilmiş.
burada da kullanıcıdan alınan veri h1 taglarının arasına yansıtılmış. Zafiyet hem kullanıcıdan veriyi alırken hem de yansıtırken bulunuyor ikisinde de htmlspecialchars gibi bir filtreleme yapılabilirdi.
2-Stored XSS
Stored xssin reflected xss den farkı, reflected xss de yazdığımız payloadlar kaybolurken stored xss de ise yazdığımız payloadlar veri tabanında depolanır ve o sayfaya giren herkes bu saldırıya maruz kalır.
sayfayı açtığımızda yorum yapma kısmı önümüze açılıyor.
Test123 yazdığımda ise artık bunun kalıcı olarak buraya yerleştiğini görüyorum.
Kaynak koduna baktığımda ise yazdığım yazının p taglarının arasına yazdığını görüyorum.
Şimdi bir payload ile alert almaya çalışalım.
<svg/onerror=alert(document.domain)> payloadı ile alert almaya çalışıyorum.
Sayfaya her girenin önüne bu mesaj çıkıyor.
Burada zafiyetin kaynaklanmasının sebebi veritabanına filtrelemeden kayıt etmesi veri tabanının dan dosyayı getirirken de filtrelemeden getirmesidir.
3-Dom XSS
Dom xss diğer xsslerden farkı ise yazılan payload javascriptin içindeki dom'un içinde dönmesidir.
yine aynı şekil bir arama kutusu içindeyiz fakat burada aradığımız şeyler sayfaya yansımıyor domun içinde dönüyor.
burada da yazdığımız yazının q ismini aldığını ve dom un içinde kullanıldığını görebilirsiniz, kodu url decode edip kullandığı için url encodelu bir şekilde payloadımızı vermemiz gerekiyor.
şeklinde bir payload verdiğimiz zaman;
Zafiyetimizi tamamlamış oluyoruz.
4-Blind XSS
Blind xss hackerın gönderilen mesajı tespit edemediği lakin adminin panelinde gözüken xss türüdür iletişim forumları örnek verilebilir.
direk bir payload yazarak zafiyetin tespitini göstereceğim.
<img src=x onerror=alert()>admin payloadı ile admin paneline kayıt ettiriyorum.
evet payloadımız çalıştı şimdi kaynak koduna bakalım.
yaptığımız yorumları comments.txt ye kayıt ettiriyor.
admin panelinde ise comments.txt den içinde admin kelimesini geçen tüm yorumları ekrana yansıtıyor.
Yazmış olduğum örnek payload.
Okuduğunuz İçin Teşekkürler.