Etik Hackleme - SQL Enjeksiyonu
SQL enjeksiyonu, web uygulamalarıyla bağlantılı veritabanlarından istediğimiz yanıtı almak için bir URL dizesine veya veri yapılarına yerleştirilen bir SQL komutları kümesidir. Bu tür saldırılar genellikle PHP veya ASP.NET kullanılarak geliştirilen web sayfalarında gerçekleşir.
Aşağıdaki amaçlarla bir SQL enjeksiyon saldırısı yapılabilir -
Bir sistemin tüm veritabanını dökmek için,
Veritabanlarının içeriğini değiştirmek için veya
Uygulama tarafından izin verilmeyen farklı sorgular gerçekleştirmek için.
Bu tür saldırı, uygulamalar girdileri bir SQL ifadesine iletmeden önce doğru şekilde doğrulamadığında çalışır. Enjeksiyonlar normalde adres çubuklarına, arama alanlarına veya veri alanlarına yerleştirilir.
Bir web uygulamasının bir SQL enjeksiyon saldırısına karşı savunmasız olup olmadığını tespit etmenin en kolay yolu, bir dizede "" "karakterini kullanmak ve herhangi bir hata alıp almadığınızı görmektir.
örnek 1
Birkaç örnekle bu kavramı anlamaya çalışalım. Aşağıdaki ekran görüntüsünde gösterildiği gibi, Ad alanında bir "'" karakteri kullandık.
Şimdi tıklayın Loginbuton. Aşağıdaki yanıtı vermelidir -
Bu, "Ad" alanının SQL enjeksiyonuna açık olduğu anlamına gelir.
Örnek 2
Bu URL'ye sahibiz - http://10.10.10.101/mutillidae/index.php?page=site-footer-xssdiscussion.php
Ve "sayfa" değişkenini test etmek istiyoruz, ancak URL dizisine nasıl "" "karakterini eklediğimizi gözlemlemek istiyoruz.
Enter tuşuna bastığımızda, hatalı olan aşağıdaki sonucu verecektir.
SQLMAP
SQLMAP, SQL enjeksiyonlarını tespit etmek için mevcut en iyi araçlardan biridir. Adresinden indirilebilirhttp://sqlmap.org/
Kali dağıtımında önceden derlenmiş olarak gelir. Bunu - Uygulamalar → Veritabanı Değerlendirmesi → Sqlmap'de bulabilirsiniz.
SQLMAP'i açtıktan sonra SQL enjeksiyonu yaptığımız sayfaya gidiyoruz ve ardından header talebini alıyoruz. Başlıktan SQL'de aşağıdaki komutu çalıştırıyoruz -
./sqlmap.py --headers="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0)
Gecko/20100101 Firefox/25.0" --cookie="security=low;
PHPSESSID=oikbs8qcic2omf5gnd09kihsm7" -u '
http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#' -
level=5 risk=3 -p id --suffix="-BR" -v3
SQLMAP tüm değişkenleri test edecek ve sonuç, aşağıdaki ekran görüntüsünde gösterildiği gibi "id" parametresinin savunmasız olduğunu gösterecektir.
SQLNinja
SQLNinja, Kali dağıtımında bulunan başka bir SQL enjeksiyon aracıdır.
JSQL Enjeksiyonu
JSQL Enjeksiyonu Java'dadır ve otomatik SQL enjeksiyonları yapar.
Hızlı ipuçları
Web uygulamanızı SQL enjeksiyon saldırılarına karşı önlemek için aşağıdaki noktaları aklınızda bulundurmalısınız:
Veritabanına denetlenmemiş kullanıcı girdisinin uygulama GUI'sinden geçmesine izin verilmemelidir.
Uygulamaya geçen her değişken sterilize edilmeli ve doğrulanmalıdır.
Veritabanına aktarılan kullanıcı girdisi alıntılanmalıdır.