SQL injection, veritabanınızı yok edebilecek bir saldırı tekniğidir. Kötü amaçlı kodun web sayfası girişi yoluyla SQL ifadelerine yerleştirilmesidir.
SQL, ilişkili veritabanlarında depolanan verileri yönetmek için tasarlanmış bir sorgu dilidir. Verilere erişmek, silmek ya da değiştirmek için kullanabilirsiniz. Birçok web sitesi ya da web uygulaması tüm verilerini SQL veritabanında depolar. Bazı durumlarda işletim sistemi komutlarını çalıştırmak için de SQL komutları kullanılabilir. Bu nedenle başarılı bir saldırı ciddi sonuçlara neden olabilir.
SQL injection ile hackerlar genelde kullanıcıların kişisel bilgileri, şifreleri, kredi kartı bilgilerinden en hassas ticari sırlarına kadar birçok özel veriye ulaşabilmektedir.
SQL INJECTION NASIL YAPILIR?
SQL injection saldırısı yapmak için saldırgan öncellikle web sayfası ya da web uygulaması içindeki savunmasız kullanıcı girdilerine ulaşması gerekir. Güvenlik açığı olan bir web sayfası ya da web uygulaması bu tür kullanıcı girişimini doğrudan bir SQL sorgusunda kullanır. Hacker bir girdi içeriği oluşturur. Oluşturduğu bu içeriği gönderdikten sonra kötü amaçlı kodlar ile database yönetilebilir hale gelir.
SQL INJECTION ÇEŞİTLERİ NELERDİR?
SIMPLE: Hacker rastgele veri veya komutları girmek için doğrulanmamış kullanıcı girdisini kullanır.
BLIND: Tespit edilmesi en zor saldırılardan biridir. Bu saldırı türünde databaseden herhangi bir arıza alamazsınız. Veriler yalnızca database e soru sorularak çıkarılır.
UNION: Bir uygulama SQL saldırısına karşı savunmasız olduğunda ve sorgunun sonuçları uygulamanın yanıtları içerisinde döndürüldüğünde UNION kelimesi veri tabanından veri almak için kullanılabilir. Bu bir SQL injection Union saldırısıyla gerçekleşir.
ERROR: Hacker veritabanına sonuçları hatalarla dönen kötü amaçlı sorgular göndererek saldırı gerçekleştirilir.
SQL SALDIRILARINI NASIL ANLARIZ?
SQL saldırıları standart veritabanı hatalarına benzer. Özel araçlar olmadan saldırıları tespit etmek oldukça güçtür. Bir SQL saldırısı genelde deneme yanılma içerir. Bu saldırılar her zaman oturum açma gerektirmediği için sorunu bulmak zordur. Devam eden bir saldırıyı tespit etmek için ek yapılandırma ve üçüncü taraf araçlar gerekir.
Yöntemlerden biri “sqlserver.error_reported” olayını incelemektir. Alternatif olarak veritabanında “iframe” veya “http-equiv=”refresh”” gibi yaygın HTML etiketleri aranabilir.
İkinci bir yöntem ise saldırıyı belirlemek için trafik analizi yapmaktır. Bu da üçüncü taraf izleme aracı gerektirir.
Bu araçlar genelde şunları izler;
– Yinelenen hatalı girişler
– Şifre değişiklikleri
– İzin değişiklikleri
– Girişler, çıkışlar, veritabanı operasyonları gibi.
SQL INJECTION’I NASIL ÖNLERİZ?
Programlama dilleri veritabanı sürücülerini kullanarak SQL veritabanları ile konuşur. Bir sürücü bir uygulamanın veritabanında SQL ifadeleri oluşturmasına ve çalıştırmasına verileri gerektiği gibi çıkarmasına ve değiştirmesine izin verir. Parametreli ifadeler SQL ifadelerine aktarılan parametrelerin güvenli bir şekilde ele alınmasını sağlar. Eğer uygunsa her zaman parametreli ifadeler kullanılmalıdır.
Bunların yanında her zaman en kötü senaryoyu da ele alıp verilerinizin yedeklerini tutmanızda fayda vardır.
- SQL INJECTION NEDİR? - 20/12/2020