Bu çalışmada, SQL injection’ın (SQLi) ne olduğuna bakacağız. Bazı yaygın örnekleri PortSwigger‘ın LAB’larını kullanarak deneyeceğiz.
SQL Injection Zafiyeti Nedir?
SQL injection (SQLi), bir uygulamanın veritabanı ile iletişimi esnasında birtakım teknikleri kullanarak sorgulara müdahale etme işlemidir. Son kullanıcının görmemesi gereken, bilmemesi gereken ya da erişmemesi gereken bilgilere erişme durumudur.
SQL Injection Zafiyetinin Etkileri Nedir?
Eğer başarılı bir SQL Injection saldırısı gerçekleştirilirse veritabınındaki bilgiler silinebilir, değiştirilebilir yada görüntülenen bilgiler illegal bir şekilde yayılabilir, satılabilir! Erişilen bilgiler parolalar, kredi kartı bilgileri veya kişisel kullanıcı bilgileri gibi hassas veriler olabilir. Kalıcı bağlantılar olarak adlandırdığımız backdoor yani arka kapılar bırakılabilir. Bu da uzun vade de bilgi ya da verinin sürekli çalınmasına neden olur.
SQL Injection Örnekleri
Yaygın olarak kullanılan bazı teknikler;
- Gizli Verileri Çekme: Ek sorgular göndererek daha fazlasına erişmek.
- Uygulama Mantığını Alt Üst Etme: Uygulama mantığına müdahale edecek sorgular göndermek.
- UNION Saldırıları: Farklı veritabanı tablolarından veri çekmek.
- Kullanılan Veritabanını İnceleme: Veritabanı versiyonu ve bu versiyon üzerindeki zafiyetleri araştırmak.
- Blind SQL Injection: Gönderilen SQL sorgularında tablolar ya da kolonlar direkt olarak görüntülenmez, kör atış dediğimiz saldırı tekniğidir. Bu saldırı türünde veritabanında olan sütunları direkt olarak tarayıcıda görüntüleyemeyiz.