SQL Injection

SQL Injection Nedir?

  • SQL Injection, bir web uygulamasının kullanıcı girdisini doğrudan SQL sorgularına dahil etmesi sonucu kötü niyetli kullanıcıların veritabanına izinsiz erişmesine yol açan bir güvenlik açığıdır.

  • Bu zafiyet, genellikle kullanıcıdan gelen verilerin doğrulanmadan veya filtrelenmeden SQL sorgusuna dahil edilmesiyle ortaya çıkar.

  • Saldırganlar, SQL Injection sayesinde veritabanındaki verileri okuyabilir, değiştirebilir, silebilir veya hassas bilgilere ulaşabilir.

  • Bazı durumlarda SQL Injection, işletim sistemi komutlarının çalıştırılmasına veya sunucuya kalıcı arka kapı (backdoor) yerleştirilmesine bile yol açabilir.

  • Zafiyetin en yaygın olduğu yerler; giriş formları, arama kutuları, URL parametreleri ve HTTP header’larıdır.

  • Uygulamada yetkilendirme kontrolleri iyi yapılmamışsa, saldırgan yönetici yetkileriyle işlem yapabilir.

Yöntemler

Kontrol

Authentication Bypass

Column Sayısını Bulma

DB Versiyon

Content Listing

String Concat

Visible Error Based SQLi

Blind SQLi Mantıksal Yanıtlar

Blind SQLi Mantıksal Hatalar

Blind Time Based SQLi

DNS Lookup

RCE

Eğer veritabanın diske yazma yetkisi varsa sunucuya bir shell dosyası atabiliriz.

Önlemler

  • Kullanıcıdan alınan tüm veriler, SQL sorgularında doğrudan kullanılmadan önce mutlaka doğrulanmalı ve temizlenmelidir (input validation & sanitization).

  • Parametrik (hazırlanmış/prepared) sorgular ve sorgu bağlamaları (bind variables) kullanılmalıdır.

  • ORM (Object-Relational Mapping) kütüphaneleri gibi SQL sorgularını otomatik yöneten araçlar tercih edilmelidir.

  • Veritabanı kullanıcısına minimum yetki verilmelidir; örneğin sadece okuma yapılacaksa yazma ve silme yetkileri verilmemelidir.

  • Hatalı girişlerde dönen hata mesajları detay içermemeli, saldırgana yol gösterici bilgi vermemelidir.

  • Web Application Firewall (WAF) gibi katmanlar kullanılarak şüpheli SQL ifadeleri engellenebilir.

  • SQL sorgularında whitelist (izin verilen girdiler listesi) yaklaşımı uygulanmalıdır.

Araçlar

SQLMap

OOB için Servisler

Kaynaklar

Last updated