1. IDOR (Insecure Direct Object Reference)

Türkçe Karşılığı: Güvensiz Doğrudan Nesne Referansı

Giriş & Çalışma Sebebi

Uygulama geliştiricileri, kullanıcıların kendi verilerine erişmesi için genellikle URL veya istek parametrelerinde benzersiz numaralar (ID) kullanırlar. Zafiyetin asıl sebebi, sunucunun gelen isteği işlerken “Bu ID’ye sahip veri var mı?” diye kontrol etmesi ama “Bu ID’ye erişmeye çalışan kullanıcı, gerçekten bu verinin sahibi mi?” kontrolünü (yetkilendirmeyi – authorization) unutmasıdır.

Payload & Mekanizma

Kullanıcı kendi profil faturasını görüntülerken URL şu şekildedir:

https://hedefsite.com/account/invoice?id=1005

Saldırgan parametreyi değiştirerek başka bir kullanıcının faturasına erişir:

https://hedefsite.com/account/invoice?id=1006
  • Çalışma Sebebi: Sunucu, veri tabanından 1006 numaralı faturayı çekerken oturum açmış olan kullanıcının ID’si ile faturanın sahibinin ID’sini eşleştirmemiştir.

2. Command Injection

Türkçe Karşılığı: Komut Enjeksiyonu

Giriş & Çalışma Sebebi

Bazı web uygulamaları, arka planda sunucunun işletim sistemiyle konuşmak zorunda kalır (Örn: Bir IP adresine ping atmak, bir dosyayı sistem komutuyla boyutlandırmak). Zafiyetin asıl sebebi, kullanıcıdan alınan girdinin hiçbir filtreden geçirilmeden, doğrudan sunucunun komut satırına (system(), exec(), shell_exec() gibi fonksiyonlara) gönderilmesidir. Saldırgan girdi alanına bir işletim sistemi komutu iliştirdiğinde, sunucu bunu kendi komutu sanıp çalıştırır.

Payload & Mekanizma

Bir network test aracı sayfasına girilen normal IP girdisi: 8.8.8.8 (Arka planda çalışan kod: ping -c 4 8.8.8.8)

Saldırganın gönderdiği Payload:

8.8.8.8 ; cat /etc/passwd
  • Çalışma Sebebi: Arka plandaki Linux sunucusu ; (noktalı virgül) karakterini gördüğünde ilk komutun bittiğini, ikincisinin başladığını varsayar. ping işleminden hemen sonra sunucunun hassas kullanıcı listesini ekrana basar.

3. LFI (Local File Inclusion)

Türkçe Karşılığı: Yerel Dosya Dahil Etme

Giriş & Çalışma Sebebi

Geliştiriciler, web sitesinin farklı sayfalarını tek bir şablon üzerinden yüklemek için URL parametrelerini kullanabilirler (Örn: index.php?page=about.php). Zafiyetin asıl sebebi, sunucu tarafındaki kodun (genellikle PHP’deki include veya require fonksiyonları), parametre olarak gelen dosya yolunu doğrulamamasıdır. Saldırgan bu boşluktan yararlanarak sunucu üzerinde okuma yetkisi olan herhangi bir sistem dosyasını çağırabilir.

Payload & Mekanizma

Saldırganın URL üzerinden dizin atlayarak hassas dosyalara eriştiği Payload:

https://hedefsite.com/index.php?page=../../../../etc/passwd
  • Çalışma Sebebi: Sunucu, girdiyi temizlemediği için ../../ (bir üst dizine çık) komutlarını harfiyen uygular. Web dizininin dışına çıkarak işletim sisteminin kök dizinine ulaşır ve hedef dosyayı uygulamanın içine dahil ederek ekranda gösterir.

4. SQL Injection (SQLi)

Seri No: #4 | Türkçe Karşılığı: SQL Kod Enjeksiyonu

Giriş & Çalışma Sebebi

SQLi, saldırganın web uygulaması üzerinden veri tabanına doğrudan kendi kötü amaçlı SQL komutlarını gönderebilmesidir. Zafiyetin asıl sebebi, kullanıcıdan alınan verinin (girdi) veri tabanı sorgusu oluşturulurken bir “metin” (string) olarak değil, sorgunun bir parçası (kod) olarak algılanmasıdır. Bu durum genellikle dinamik sorgu oluşturulurken (String Concatenation) yaşanır.

Zafiyetli Arka Plan Kodu (PHP)

Geliştiricinin WP-Admin’de veya özel bir scriptte yazdığı hatalı yapı:

$id = $_GET['id'];
// Girdi temizlenmeden doğrudan SQL sorgusuna ekleniyor
$query = "SELECT * FROM users WHERE id = " . $id; 
$result = mysqli_query($conn, $query);

Payload & Mekanizma

Saldırganın URL üzerinden gönderdiği girdi: 1 OR 1=1 Oluşan Nihai Sorgu:

SELECT * FROM users WHERE id = 1 OR 1=1
  • Çalışma Sebebi: 1=1 ifadesi her zaman doğru (TRUE) olduğu için, veri tabanı WHERE koşulunu tamamen baypas eder ve tabloda ne kadar kullanıcı verisi varsa (şifre özetleri dahil) hepsini ekrana döker.

5. Cross-Site Scripting (XSS)

Seri No: #5 | Türkçe Karşılığı: Siteler Arası Betik Çalıştırma

Giriş & Çalışma Sebebi

XSS, saldırganın web uygulamasını kullanan diğer mağdur kullanıcıların tarayıcılarında zararlı JavaScript kodları çalıştırmasıdır. Zafiyetin asıl sebebi, web uygulamasının kullanıcıdan aldığı veriyi hiçbir filtrelemeden veya kodlamadan (Sanitization/Encoding) doğrudan HTML sayfasına gömmesidir. Tarayıcı (Chrome, Firefox vb.), sunucudan gelen HTML’i okurken bu zararlı kodu sitenin kendi orijinal koduymuş gibi algılar.

Zafiyetli Arka Plan Kodu (PHP)

Bir arama kutusuna yazılan kelimenin ekrana basıldığı hatalı yapı:

$search = $_GET['search'];
// Kullanıcı girdisi filtrelenmeden doğrudan HTML içine basılıyor
echo "<h3>Arama sonuçları: " . $search . "</h3>";

Payload & Mekanizma

Saldırganın arama kutusuna yazdığı Payload (Reflected XSS):

<script>alert(document.cookie)</script>

Oluşan Nihai HTML Çıktısı:

<h3>Arama sonuçları: <script>alert(document.cookie)</script></h3>
  • Çalışma Sebebi: Tarayıcı HTML sayfasını yukarıdan aşağıya doğru okurken <script> etiketini görür görmez JavaScript motorunu çalıştırır. Saldırgan bu sayede kullanıcının oturum anahtarını (Cookie) çalabilir veya sayfayı tamamen manipüle edebilir.