İçeriğe geç

SQL INJECTION

SQL INJECTION NEDİR?

Bir çok web sitesi uygulamaları dinamiklik için SQL veritabanı kullanır.Bu veritabanında kullanıcı adları, şifreler, email adresleri telefonlar ve hatta banka hesapları ve bir çok gizli bilgi bulunabilir. Web sitesi uygulamalarındaki bazı açıklar kullanılarak bu bilgilere erişilebilir. Bu açıklar veri tabanından kaynaklanmayıp web geliştiricisinin yaptığı hatalardan kaynaklanır. En basitinden konuşulacak olursa login işlemi için kullanıcı adı ve şifre bölümünde, web geliştiricisi zararlı karakterler kabul etmeyen bir filtreleme yapmadığı takdirde, SQL Injection kullanılarak kullanıcı adı ve şifre bypass edilip sisteme giriş yapılabilir.

SQL INJECTION NASIL YAPILIR?

Bir web uygulamasında SQL veritabanı kullanıldığı düşünülürse, bir üye sisteme kullanıcı adı (kullaniciadi) ve şifre(sifre) ile giriş yaptığında SQL veritabanına bir sorgu gönderilir.

Burada girilen kullanıcı adı ve şifre doğru ise veri tabanı sorguyu “true” döndürecek ve üye sisteme giriş yapmış olacaktır. Eğer web geliştiricisi kullanıcı adı şifre isteyen bölümlerde filtreleme yapmadıysa aşağıdaki sorguyla yazılım suiistimal edilebilir.

Burada denmek istenen, kullanıcı adı ve şifre boş string ise veya 1=1 ise true döndür. “or” mantık operatörü kullanıldığından, tek bir seçeneğin doğru olması yeterli olacaktır. 1=1 işlemi her zaman doğru olacağından bu sorgu true dönecek ve login bypass edilerek sisteme giriş yapılacaktır.

SQL INJECTION (GET)

Bir web sitesi uygulamasında istekler GET metodu ile gönderiliyorsa URL kısmında açıkça görünür. Bir arama çubuğuna filtreleme olup olmadığı ile alakalı cevap almak için a’ girdisi yazarız. Eğer SQL hatası döndürüyorsa, bu formda filtreleme yoktur dolayısıyla veri tabanına bir erişim söz konusudur ve SQL injection yapılabilir.  Ben bWAPP (buggy wep application) web aplikasyonunu kullanarak çalışmalarımı gerçekleştirdim.  URL kısmında a’ ifadesinden sonra injection yapalım ;

Bu sorguda ulaşmak istediğimiz, kaç tane sütun olduğu bilgisidir. Aldığımız cevap aşağıdaki gibi olur  ;

Sorguda 1 den 8 e kadar deneme yaptığımızda en son 8 de yukarıdaki gibi bir hata alırız. Bu hata 8 in bilinmeyen bir sütun olduğunu söyler, dolayısıyla 7 tane sütun olduğu bilgisine ulaşırız.

Sütun sayısının 7 olduğu bilgisine ulaştıktan sonra sütunları numaralandıralım.

Numaralandırdığımız sütunlara SQL sorgularıyla istediğimiz bilgiyi yazdırabiliriz. Veri tabanı adı ve versiyonu sorgulatır, tablo adı, sütun adları, kullanıcılar ve şifrelere de ulaşabiliriz.

Veri tabanı adını elde etmek için aşağıdaki sorguyu kullanalım ;

Versiyon öğrenmek için URL kısmına veya girdiye UNION SELECT sorgusu yapıp 5. Sütunda versiyon bilgisini elde edelim.

Versiyon bilgisini de burada elde ettik

Tablo adlarını almak için aşağıdaki sorguyu kullanabiliriz  ;

Görüldüğü üzere tablo adlarını da 5. Sütunda elde etmiş olduk. Burada dikkatimizi çeken “users” tablosundaki sütun adlarına erişelim.

Sütun adlarında dikkatimizi çeken birkaç isim var: login, password, email. Bu adları kullanarak veri tabanındaki kullanıcı adlarını şifreleri ve emailleri çekebiliyor muyuz kontrol edelim.

Kullanıcı adları, şifreler ve emailleri veri tabanından çok basit sorgularla çektik. Bu işlemleri yapmadan Kali Linux işletim sisteminde bazı komutlar kullanarak daha basit uygulamalarla veri tabanındaki bilgileri çekebiliriz. Kullanacağımız komut “sqlmap” komutu ve birkaç parametre olacaktır.

Bu yazımda genel itibariyle “SQL INJECTION” nedir ve “GET” metodu ile url kısmında gözüken datalar kullanılarak nasıl sql injection yapılır temalarından bahsettim. Bir sonraki yazımda “POST” metodu ile gönderilen yani URL kısmında açıkça görünmeyen isteklere nasıl erişiriz ve nasıl injection yaparız ondan bahsetmiş olacağım. Lütfen sizler de herhangi bir konu da bir fikriniz varsa veya eksik olduğunu düşündüğünüz bir konu varsa, benimle iletişime geçiniz. Umarım faydalı olabilmişizdir 🙂

Tarih:Sql Injection

3 Yorum

  1. İrfan İrfan

    Çok güzel bir çalışma durmak yok .

  2. Ayşe Hilal Ayşe Hilal

    Çok faydalı bi yazı olmuş eline sağlık devamını bekliyoruuuz 🙂

  3. Hasan Çağrı Yıldırım Hasan Çağrı Yıldırım

    Çok faydalı bir yazı olmuş buggy web aplikasyonunu nasıl kuracağımıza dair yazı yayınlarsanız çok guzel olur.

Bu yazı yorumlara kapalı.

Created by Feride Ünlü