SQLMAP NEDİR? NASIL KULLANILIR?

SQLMAP NEDİR?

sqlmap nasıl kullanılır

Ziyaret ettiğimiz bütün web sitelerinde bir veri tabanı (database), bununla birlikte bu veri tabanını yöneten bir veri tabanı yönetim sistemi (DBMS) bulunmaktadır. Aslında SQLMap bir veri tabanı yöneticisidir. Veri tabanındaki zafiyetleri belirleyerek bunları istismar etmeyi amaçlar. 

Zafiyetleri istismar edebilmek için ziyaret edilen web sitesinde SQL enjeksiyonu zafiyeti ya da SQL enjeksiyonu zafiyetini tetikleyecek parametrelerin bulunması gerekmektedir.

Eğer sistemde SQL Enjeksiyonu zafiyeti varsa, SQLMap bizim için bünyesinde barındırdığı SQL payloadlarını sisteme göndererek bunları istismar etmeye çalışacaktır. Zafiyet istismarı başarılı olursa, sistemdeki tablolar, kullanıcı bilgileri olan satır ve sütunlar SQLMap sayesinde önümüze düşecektir. Bunun dışında şifrelenmiş ya da şifrelenmemiş parolalar, kişisel bilgiler vb. kritik bulgular ele geçirilebilecektir.

SQLMAP NASIL YÜKLENİR?

SQLMAP KALİ LİNUX'A NASIL YÜKLENİR?

Kali Linux işletim sistemini kurduğumuz zaman hali hazırda SQLMap içerisinde yüklü olarak gelir. Ancak bazı durumlarda kendimiz kurmamız gerekir. Bunun için aşağıdaki komut kullanılabilir:

git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
sqlmap download kali

SQLMAP UBUNTU'YA NASIL YÜKLENİR?

Ubuntu işletim sistemlerinde de Kali Linux da olduğu gibi, SQLMap kurulu gelmektedir. Aksi durumda, kendimiz kurmamız gerekirse şu yollar izlenmelidir:

sudo apt update

sudo apt install snapd

sudo snap install sqlmap

Snapd yüklü değil ise ilk önce onu yüklememiz gerekir.

Snapd yüklemeden SQLMap yüklemek isteniyorsa ise aşağıdaki yol izlenmelidir:

sudo apt update

sudo apt install sqlmap
sqlmap ubuntu download

SQLMAP ARCH LINUX'A NASIL YÜKLENİR?

Arch Linux kullanıcıları için SQLMap aşağıdaki gibi yüklenmektedir.

Arch Linux sistemine SQLMap indirmek için Snapd’nin kurulması ve etkinleştirilmesi gerekmektedir.

Yükleme için aşağıdaki adımlar izlenebilir:

git clone https://aur.archlinux.org/snapd.git

cd snapd

makepkg -si

sudo systemctl enable --now snapd.socket

sudo ln -s /var/lib/snapd/snap /snap      

sudo snap install sqlmap

SQLMAP WINDOWS'A NASIL YÜKLENİR?

Windows kullanıcıları için, ilk önce Python’un kurulması gerekir. Bunun için, https://www.python.org/ web sitesi ziyaret edilip Python’un yüklenmesi gerekir.

Daha sonra SQLMap’in yüklenmesi için https://sqlmap.org/ web sitesi ziyaret edilerek, zip dosyası bilgisayara indirilir.

windows sqlmap indirmek

Dosya indikten sonra, zip dosyası çıkartılır ve CMD ekranı açılarak dosya dizinine gidilir.

SQLMap’i çalıştırabilmek için ./sqlmap.py komutu çalıştırılır.

windows sqlmap kurulumu

SQLMAP NASIL KULLANILIR?

Tüm işletim sistemlerinde SQLMap’in kullanımı aynıdır.
 
Eğer SQLMap’in kullanımını sistem içinde görmek istersek;
 
sqlmap -h parametresini girmemiz yeterli olacaktır.
 
Aynı zamanda -hh parametresini kullanırsak daha detaylı bir kullanım kılavuzu önümüze gelecektir.

SQLMap’in bir web sitesini taramasını istersek, kullanılması gereken parametre -u dur. Parametrenin açıklamasında -u değerini verdikten sonra bir URL girdiğimizde, SQLMap o web sitesinde bir zafiyet var mı bunu tarayacaktır.

Aşağıdaki ekran görüntüsünde de görüldüğü üzere mevcut zafiyetleri ve uygulanabilecek olan payloadlar çıkar:

Parametrenin sonuna – -dbs eklersek mevcut veri tabanının listesini görmüş oluruz:

Yukarıdaki ekran görüntüsünde de görülebileceği üzere, mevcut veri tabanı listesini elde ettik.

Sonraki işlemde bu listelerin tablolarını çekebiliriz.

Bunun için kullanılacak parametre D ve komut aşağıdaki şekilde olacaktır:

sqlmap -u “http://testphp.vulnweb.com/listproducts.php?cat=1” -D acuart –tables
sqlmap tablo çekmek

Acuart veri tabanının içinde 8 adet tablo olduğunu bu şekilde görmüş olduk.

Bu tabloların içeriğini görebilmemiz için T parametresini kullanmamız gerekiyor. Tablo isimlerini öğrendiğimize göre –T parametresiyle, istenilen tablonun kolonlarına ulaşılabilir. Tabloda gördüğümüz gibi en altta users tablosu bulunmaktadır. Buradaki verilere bakmak istersek aşağıdaki gibi bir parametre girmek gerekir:

sqlmap -u “http://testphp.vulnweb.com/listproducts.php?cat=1” -D acuart –T users - -columns

Acuart veri tabanının içindeki users tablosundaki veriler yukarıdaki ekran görüntüsündeki gibidir.

Buradan istediğimiz verileri çekebiliriz. Bunun için -C parametresi (istenilen kolon adı yazılacak) ve
– -dump parametresi (kolonlardaki verileri ekrana bastırması için) aşağıdaki şekilde kullanılır:

sqlmap -u “http://testphp.vulnweb.com/listproducts.php?cat=1” -D acuart –T users -C uname,name,pass,email - -dump 
sqlmap kullanıcı adı ve parola bulmak

Ekran görüntüsünde görülebileceği gibi, sisteme giriş için ihtiyacımız olan uname ve pass verilerini elde etmiş olduk. Bu verileri girerek sisteme giriş yapılabilir.

Sistemdeki kullanıcıların yetkisini görmek istiyorsak, daha farklı bir parametreye ihtiyacımız vardır:

sqlmap -u “http://testphp.vulnweb.com/listproducts.php?cat=1” - -risk=3 - -level=3 - -dbms=mysql - -is-dba - -users - -privileges - -roles

Yukarıdaki komutta yer alan parametreleri inceleyelim:

–risk: Bu parametrede geçen risk faktörü, sorgulamanın ne kadar ağır olacağıyla ilgilidir tanımlama verileri ve yerleştirme noktalarını belirler.

–level: Tanımlama ve yerleştirme faktörlerini ekler ve bununla birlikte her bir yerleştirme noktası için daha fazla test gerçekleştirir. Bütün testleri bir parametre üzerinden gerçekleştirmek istiyorsak, seviye 5’te çalıştırmak daha mantıklı olacaktır.

Level faktörleri aşağıdaki gibidir.

        1: Her zaman (<100 istek)

        2: Biraz daha fazla istek (100-200 istek)

        3: İyi sayıda istek (200-500 istek)

        4: Kapsamlı test (500-1000 istek)

        5: Uzun süren test (>1000 istek)

Risk ve Level faktörlerini 3 olarak belirlediğimiz için yapılacak istek sayımız aşağıdaki gibi olacaktır:

        –level 1 –risk3: 112  istek

        –level 2 –risk3: 646  istek

        –level 3 –risk3: 2160 istek

        –level 4 –risk3: 4320 istek

        –level 5 –risk3: 7850 istek

Diğer parametrelere bakacak olursak;  

dbms=mysql ile veri tabanının adını vermiş oluyoruz.

Kullanıcının, veri tabanı yöneticisi olup olmadığını kontrol etmek için is-dba parametresini kullanıyoruz.

Kullanıcıları öğrenebilmek için, users parametresi, kullanıcıların parolası için password parametresi, kullanıcıların izinleri için privileges parametresi ve kullanıcıların rolleri için de roles parametrelerini kullanıyoruz.

Tüm bunları kullandıktan sonra elde edilen sonuç aşağıdaki gibidir:

sqlmap database görüntüsü

SQLMap de POST isteklerini gönderip buradaki zafiyetlerden faydalanabilmek için birden fazla metot vardır. Bunlardan bir tanesi BurpSuite gibi araçlardan POST isteklerini alıp, txt uzantılı bir dosyaya kaydedip çalıştırmaktır.

Örneğin aşağıdaki gibi bir giriş ekranının olduğunu varsayalım:

Buradan yaptığımız login isteğinin BurpSuite tarafından yakalanmasını sağlayalım.

Aşağıdaki gibi görünecektir:

burpsuite post request görüntüsü

Buradaki isteği alıp bir .txt dosyasının içine kaydettikten sonra SQLMap parametremiz aşağıdaki gibi olmalıdır:

sqlmap - -threads=10 -D level5 -T users -C pass -r r.txt - -dbs

Bu şekilde parametreyi girdikten sonra, sistem üzerinde uygulayabileceğimiz payload metotlarını görebiliriz:

sqlmap payload

Bu parametreyle birlikte aynı zamanda veri tabanı isimlerini de çekebiliriz:

Sonuç olarak, saldırganlar güvenlik açığı bulunan web sitelerine SQL sorguları gerçekleştirmekte ve yazı içerisinde detayları izlenebileceği üzere veri tabanı tablolarını almak, düzenlemek veya silmek gibi işlemleri gerçekleştirebilmektedir. Bu sorguların yapılmasını oldukça kolaylaştıran sqlmap aracı bu nedenle etik hackerlar/sızma testi uzmanları için zafiyetleri önceden tespit etmek ve raporlamak adına oldukça kullanışlı ve faydalı bir araçtır.

Başa dön