Kali'de SQLmap ile SQL Injection: Login Formundan Veritabanına

SQLmap, SQL injection testlerini otomatikleştiren açık kaynak bir araç; manuel yapılan şeyleri birkaç komutla halleder.

Sqlmap aracı SQL injection testlerini otomatikleştiren açık kaynak kodlu bir araç. Manuel yapılan şeyleri birkaç komutla halledebiliyor.

SQL injection: basit olarak bir web uygulaması kullanıcıdan aldığı girdiyi filtrelemeden direkt veritabanına gönderiyorsa oraya SQL kodu yazabilirsin. Giriş formu arama kutusu URL parametresi vs. olabilir. Uygulama o kodu çalıştırır veritabanındaki veriler ortaya çıkar.

Docker ve SQLmap Kurulumu

Gerçek bir sisteme değil kendi kurduğun zafiyetli uygulamaya test yapmak gerekir. Bunun için DVWA (Damn Vulnerable Web Application) kullanacağız. Docker ile çalışıyor.

Kurulum:

sudo apt update && sudo apt install -y docker.io
sudo service docker start

Sqlmap:

sudo apt install -y sqlmap

Kali Linux’ta sqlmap zaten kurulu geliyor ama güncel versiyona çekmek için yine çalıştırmakta fayda var.

DVWA’yı Başlat

docker run --rm -d -p 80:80 vulnerables/web-dvwa

Bir komutla container ayağa kalkıyor.

Tarayıcıdan http://localhost/login.php adresini aç.

Giriş bilgilerini admin ve password olarak girelim.

DVWA login ekranında admin ve password ile giriş

Setup sayfasında Create - Reset Database butonuna bas.

DVWA setup sayfasında veritabanı oluşturma

Sonra tekrar giriş yap. DVWA Security menüsünden güvenlik seviyesini Low yap.

DVWA Security menüsünde güvenlik seviyesi Low

Sonra sol menüden SQL injection sayfasına geç.

DVWA SQL Injection sayfası

sqlmapin uygulamaya giriş yapmış gibi davranabilmesi için session cookie’ye ihtiyaç var.

F12 - Uygulama - Çerezler ve localhost yolundan PHPSESSID değerini alalım.

Tarayıcı geliştirici araçlarında PHPSESSID çerez değeri

Veritabanlarını Listele

sqlmap -u "http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit" \
  --cookie="PHPSESSID=XXX; security=low" \
  --dbs --batch

sqlmap –dbs ile veritabanlarının listelenmesi

–dbs mevcut veritabanlarını listeler.

Uygulama açıksa dvwa ve information_schema döner.

–batch ekleyince sqlmap test boyunca soru sormadan ilerler.

Tabloları görmek için:

sqlmap -u "http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit" \
  --cookie="PHPSESSID=XXX; security=low" \
  -D dvwa --tables --batch

sqlmap –tables ile dvwa veritabanındaki tablolar

dvwa veritabanında guestbook ve users tabloları çıkar.

İçeriği dökmek için:

sqlmap -u "http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit" \
  --cookie="PHPSESSID=...; security=low" \
  -D dvwa -T users --dump --batch

sqlmap –dump ile users tablosundaki kullanıcı adları ve hashler

Kullanıcı adları ve MD5 hashler dökülür. sqlmap hashleri otomatik olarak sözlük saldırısıyla çözmeyi deniyor. admin/password gibi sonuçlar geliyor. Yaygın bir şifre kullanıyorsa direkt bulur.

Sadece izinli olduğun veya kendi kurduğun sistemlerde kullanmalısın. DVWA bunun için var zaten.

Kaynaklar:

https://github.com/sqlmapproject/sqlmap
https://github.com/digininja/DVWA