SQLMAP NEDİ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 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 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.
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.
SQLMAP NASIL KULLANILIR?
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:
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
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
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 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:
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:
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.
0 Comments