SQL Injection tespit etme ve sonrasında exploit etmek için en çok kullanılan araç olan sqlmap’den bahsedeceğiz. Bir senaryo üzerinden anlatmaya başlayalım …
Test edeceğimiz form alanı aşağıdaki gibi olsun.
Girdi alanlarını doldurup rasgele doldurup Burp proxy ile araya girelim. Daha sonrada sağ tıklayıp Copy to file diyerek isteği bilgisayarımıza kaydedelim.
Yukarıdaki resimdende de göreceğiniz üzere bir GET isteği yapılıyor. Şimdi sıra geldi sqlmap’i kullanmaya.
Sql injection tespit etme
Basitçe tespit etmek için aşağıdaki iki seçenekten birini kullanabilirsiniz. İsterseniz -u parametresi ile URL adresini verebilir, isterseniz -r parametresiyle de herhangi bir dosya verebilirsiniz. Bundan sonraki örnekleri ikinci seçeneği kullanarak gerçekleştireceğim.
sqlmap -u 'https://192.168.47.131:80/mutillidae/index.php?page=user-info.php&username=deneme&password=deneme2&user-info-php-submit-button=View+Account+Details' sqlmap -r istegim
Yukarıdaki ekran görüntüsü bize form’da başarılı sql injection yöntemlerini ve payload’larını gösteriyor.
Parametre vererek tespit etme
Gördüğünüz üzere yukarıdaki örneğimizde 2 adet parametre vardı. Eğer spesifik bir parametre belirtmek isterseniz -p parametresini kullanabilirsiniz.
sqlmap -r istegim -p username
Fingerprinting
sqlmap çeşitli metotlarla back end de yer alan db ‘nin versiyonu varsayılan olarak yapıyor. Ancak –fingerprint diyerek işletim sistemi ve db hakkında daha detaylı bilgiye de ulaşabilirsiniz.
Database, Tablo, Kolon Tespiti ve Dump etme
Inject edilebilen db sunucusundaki tüm database’leri görüntülemek için –dbs parametresini kullanırız.
Tüm db’lere ait tüm tabloları görüntülemek için ise –tables parametresini kullanırız.
Tüm kolonları görüntüklemek için –columns parametresini kullanırız.
Yukarıdaki seçenekler tüm db’leri,tabloları ve kolonları göstermek adınaydı. İsterseniz spesifik bir database ‘i -D parametresiyle , tabloyu -T parametresiyle, kolonu -C parametresiyle belirleyebilirsiniz.
Database’i dump etmek için –-dump veya –dump-all parametrelerini kullanabilirsiniz.
Mevcut database ve kullanıcıyı görüntüleme
Inject ettiğimiz formun olduğu mevcut database’i –current-db, kullanıcıyı ise –current-user parametreleriyle görüntüleyebiliriz.
Kullanıcının DBA olup olmadığını tespit etme
Oturum kurulan mevcut kullanıcının DBA olup olmadığını –is-dba parametresiyle test edebilirsiniz.
DBMS kullanıcılarını görme
Mevcut kullanıcınızın yetkisi varsa dbms’deki tüm kullanıcıları görüntelemek için –users parametresini kullanabilirsiniz.
DBMS kullanıcılarının parolalarını kırma
DBMS ‘deki tüm kullanıcıların parolalarını kırmayı denemek için –passwords parametresini kullanabilirsiniz. Spesifik bir kullanıcıyı belirtmek için -U parametresiyle birlikte kullanabilirsiniz.
DBMS kullanıcılarının yetkilerini görme
DBMS ‘deki kullanıcıların yetkilerini görmek için –privileges parametresini kullanabilirsiniz. Spesifik bir kullanıcı yetkilerini görmek isterseniz de -U parametresiyle kullanıcıyı belirteebilirsiniz.
User-agent ve Cookie belirleme
Bazı durumlarda user-agent’ınız engellenmiş olabilir ya da sunucu belirli bir agent’dan gelen isteklere cevap verebilir. sqlmap’de user-agent bilginizi –user-agent parametresiyle belirleyebilirsiniz. İsterseniz de –random-agent diyerek sqlmap altında yer alan user-agent.txt dosyası içerisindeki agent’lardan rasgele seçebilirsiniz.Cookie belirlemek için ise –cookie parametresini kullanabilirsiniz.
Sistemden dosya okuma ve sisteme dosya ekleme
Database’den bir dosya okumak için –file-read parametresini kullanabilirsiniz
Database’e dosya sistemimizden db sistemine dosya eklemek için –file-write parametresini, karşı sunucudaki konumunu –file-dest parametresiyle belirterek birlikte kullanırız.c
DB Shell’ine düşme
Sql injection yararlanıp shell düşmeyi denemek için –sql-shell parametresini kullanabilirsiniz. Sql sorguları gerçekleştirebilirsiniz.
Tor ile çalıştırma
sqlmap ile tor ile kullanmak için isterseniz tor uygulaması arkaplanda gelen istekleri dinliyorken –tor parametresini kullanabilirsiniz. Bunun yanı sıra proxychain benzeri bir istemci de kullanabilirsiniz.