SQL Injection nedir sorusu sıkça sorulan konu başlıklarından biri olarak geçiyor. Ayrıca SQL veri tabanı kullanan kişiler bu soruyu çokça soruyor. Çünkü web sitelerini ve web uygulamalarını etkileyen siber saldırı türlerini araştıran kişiler için bu oldukça önemli. Pek çok kişi bu noktada bu sorunun peşine düşüyorlar. Bizler de yazımız içerisinde merak ettiğiniz bu soru işaretlerinin cevaplarını bulmaya odaklandık. Yazımız içerisinde SQL Injection nedir, nasıl gerçekleşir gibi konuları işledik. Detaylara ulaşabilmek adına yazımızı okumaya devam edebilirsiniz. SQL Injection ile ilgili daha önce hiç duymadığınız noktaları yazımız içerisine ekledik.
SQL Injection, 1998 yılında keşfedilmiştir. Bu tarihte keşfedilmiş olmasına rağmen hala etkilidir ve kullanılmaktadır. Kişilerin, kurumların ve ülkelerin kritik verilerini çalmak amacıyla kullanılmaktadır. Çalınan verilerin değiştirilmesi, verilerin rehin alınması gibi amaçlarla sıkça kullanımı söz konusudur. Aynı zamanda günümüzde de aktif olan bir siber tehdit ürünü olduğu bilinmektedir.
SQL Nedir?
SQL yani Structured Query Language, Yapılandırılmış Sorgu Dili anlamına gelmektedir. Bu dil, temelinde ilişkisel veri tabanı ile etkileşim sağlamak amacıyla geliştirilmiştir. Gerekli olan verilere erişmek, veri eklemesi yapmak ve veritabanı değiştirmek gibi amaçlar mevcuttur. Soru amacıyla da kullanılan SQL, ilişkisel veri tabanı için kontrol edilmektedir. Bunlara örnek olarak da Microsoft SQL Server, MySQL gibi seçenekler de sunulmaktadır.
Modern web geliştirme işlemleri sırasında da ilişkisel veritabanları kullanılmaktadır. Tıpkı Hibernate, Java EE, PHP gibi betik dillerinde yazılmış web uygulamaları, içerik yönetim sistemlerinin arka ucunda yer alan kritik bir kaynak olarak geçmektedir. Bu konuda çok daha detaylı bilgi sahibi olabilmek için SQL nedir, ne işe yarar şeklinde bilgi edinebilirsiniz. Bu tarz bilgilere ulaşmak sizleri çok daha faydalı sonuçlarla bir araya getirecektir.
SQLi Nedir?
SQL Injection veyahut SQLi olarak geçen siber saldırı türü, web sayfası ve web uygulaması gibi güvenlik önlemlerini atlamayı mümkün hale getirmektedir. Saldırgan kişi SQL enjeksiyonu kullanmaya itmektedir. Bu durumun oluşmasına neden olansa kritik veri hazinelerinin cazibesi olarak bilinmektedir. Bu saldırı tekniklerini kullanarak, bilgisayar korsanları SQL veri tabanlarının içeriğini ele geçirebilmek mümkündür. Aynı zamanda veritabanı içeriklerinin değiştirilmesi, silinmesi de söz konusudur.
Uzun zamandır OWASP Top 10 içerisinde yer alan ve eski güvenlik açıklarından biri olan de SQL enjeksiyonu olarak bilinmektedir. İstemciden uygulamaya giriş verileri aracılığıyla bir SQL sorgusunun eklenmesi mümkündür. SQL komutları, komutların yürütülmesine etki eden veri düzlemi girişine enjekte edilmektedir.
Detaylandırmak gerekirse bir web uygulaması veya web sitesi SQL veri tabanlarını kullanıyorsa, o zaman SQL enjeksiyon saldırılarına maruz kalması mümkündür. SQL Injection şirketleri tüm veri tabanlarından yararlanılması noktasında öne çıkan tehditlerden biridir. Ayrıca korunmasız bırakan tehditlerden biri olmasıyla ünlenmektedir. Bilgisayar korsanı, veri veya tabloları veri tabanından silmeye kalkabilir. Böyle bir durumda yedekleri olsa dahi verileri silmesi etki eder. Veri tabanını geri yükleyene kadar geçen sürede de kullanılabilirliği etkilemesi söz konusudur. Diğer yandan yedeklemeler son girilen verileri içermez.
Saldırgan kişiler, veri tabanında yer alan verileri değiştirebilir. Bu şekilde SQL enjeksiyonu ciddi tehditler oluşturabilir. Bu şekilde kullanılması, finansal uygulamada hesap bakiyelerinin değişmesine de neden olmaktadır. Diğer yandan saldırgan kişilerin bir uygulamanın veri tabanındaki hakları ihlal etmesi, ele geçirmesi söz konusudur.
SQL enjeksiyon saldırıları sırasında en yaygın risklerden biri e-posta adreslerinin çalınmasıdır. Aynı zamanda oturum açma bilgilerinin çalınması gibi durumlar da söz konusudur. Dark web bünyesinde satılması öne çıkan durumlardan biridir. Bundan ötürü başarılı bir SQL enjeksiyonu yalnızca kurumlar için değil aynı zamanda kullanıcılar için de büyük bir tehdittir. Müşterilerin bu saldırılardan zarar görmesi gibi durumlar oluşmaktadır.
SQL Injection Saldırıları Nasıl Gerçekleştirilir?
Bir kişinin, kuruluşun verilerinin silinmesi, değiştirilmesi, yedeklenmesi gibi amaçlar için SQL Injection kullanılmaktadır. Sistemlere virüs yüklemek, operasyonlara zarar vermek gibi amaçların da olduğu bilinmektedir. Uygulamanın istemci ucundan SQL sorgu girişi eklenmesi ve enjekte edilmesi de söz konusudur. Bu şekilde saldırılar gerçekleştirilmektedir.
SQL enjeksiyonunun gerçekleşmesi noktasında saldırgan bir web uygulamasında ya da web sayfasında güvenlik açığı arar. Yani saldırının gerçekleşmesi için bir güvenlik açığının olması gerekmektedir. SQL enjeksiyonu, veriler güvenilmeyen bir kaynaktan programa girildiği zaman gerçekleşir. Aynı zamanda bu verilerin dinamik olarak bir SQL sorgusu oluşturmak amacıyla kullanılması işlemlerin gerçekleşmesine neden olur. Buradaki en önemli yanıt da saldırganın veri tabanı mimarisini anlaması, ve uygulamanın güvenli bilgilerine erişmesi için gereklilik arz eder. Bilgisayar korsanları da özel olarak hazırlanan SQL komutu ile veri tabanı yapısı hakkında net bir fikir sağlayacak olan yanıtı elde eder. Bu şekilde veri tabanı içerisindeki tüm bilgilere erişmek mümkündür.
SWL kontrol düzlemiyle veri düzlemi arasında bir ayrım yapılmaz. Saldırgan meta karakter yerleştirilmektedir. Bu meta karakter bir veri olarak geçmez. Bir karakter, alt çizgi gibi öne çıkar. SQL enjeksiyonu için çocukların bile gerçekleştirebileceği bir saldırı denmektedir. Yani basit bir saldırı türü olarak yorumlanmaktadır. Saldırganların bir kod ekleyerek parola bilgisi gerekmeden kimlik doğrulamasını atlaması mümkündür. SQL enjeksiyonları saldırıları sırasında farklı yolların kullanımı da söz konusudur. Bunları da yazımız içerisinde sıraladık.
- Kullanıcı girişine dayalı olan SQL enjeksiyonu,
- Çerezlere dayalı olan SWL enjeksiyonu,
- http başlıklarına dayalı SQL enjeksiyonu,
- İkinci dereceden SQL enjeksiyonu olarak geçmektedir.
SQL Injection Türleri Nelerdir?
SQL Injection türleri nelerdir sorusu çok kez sorulmaktadır. Birçok kişi bu saldırı türlerinin nasıl belirlendiğini merak etmektedir. Bu noktada en popüler saldırı türlerinin bant içi SQL enjeksiyonları olduğu bilinmektedir. Bu enjeksiyonların kullanımı sırasında aynı iletişim kanalları kullanılmaktadır. Ek olarak farklı iki şekilde gerçekleşmesi de mümkündür.
- SQL Injection için hatalı tabanlı SQL Injection tekniği öne çıkmaktadır. Uygulama veri tabanı sunucularınca gönderilen hata mesajlarını barındırır. Saldırgan kişiler hangi sorguların hata mesajı aldığı test eder. Bunun sonucunda veri tabanı yapısına dayanarak SQL enjeksiyonları oluşabilmektedir.
- Öne çıkan SQL Injection türlerinden biri de Union-based olarak bilinmektedir. Bir uygulama içerisinde SQL enjeksiyonuna karşı savunmasız olunduğunda, uygulama yanıtları sorgu için döndürüldüğünde, saldırganlar, UNION anahtar sözcüğünü kullanırlar. Bu sözcükler beraber veritabanı tablolarından veri alırlar.
SQL Injection Güvenlik Açıkları Nasıl Tespit Edilir?
SQL güvenlik açıklarının nasıl tespit edildiği çokça merak edilen konulardan biridir. Birçok kişi bu güvenlik açıkları hakkında araştırmalar yapmaya devam etmektedir. Bu noktada SQL güvenlik açıklarının tespit edilmesi için uygulamanıza ve web sitenize saldırılar başlatabilirsiniz. Söz konusu açıkları bulmak için farklı iki teknik üzerinden ilerlemeniz de mümkündür. Bu tekniklerden biri manuel test diğeri ise otomatik test olarak geçmektedir.
Otomatik test yapmak için de SQLMap gibi farklı araçların bulunduğu bilinmektedir. Bu araçlar, kullanımda olan veritabanı türünü belirlemek için sitenizi incelemektedir. Aynı zamanda çeşitli sorgular oluşturması da söz konusudur. Keşfedilen bazı güvenlik açılarının kaldırılması noktasında da yardımcı olabilecek hata düzenleme özelliği de bulunmaktadır.
SQL Injection nasıl önlendir sorusuna cevap olarak da bulunan sürümlerin ve uzantıların yükseltilmesi önem arz etmektedir. Eski sürümlerin ve kodların oldukça savunmasız olduğu bilinmektedir. Bu yüzden uygulamaların ve web sitelerinin bütünlüğünün korunması mümkün değildir. Bunun önüne geçmek adına da daha bilinçli hareket edilmesi şarttır.
Bu içeriği paylaşın: