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.