SQLMap nedir? SQL Enjeksiyon Saldırıları – Veritabanı Güvenlik Açıklarını Bulmak İçin SQLMap Nasıl Kullanılır

Veritabanları her uygulamanın omurgasıdır. Büyük miktarda veriyi kolayca erişebileceğimiz, yönetebileceğimiz ve güncelleyebileceğimiz bir şekilde depolamak ve düzenlemek için bize bir yol sunarlar.



Küçük işletmelerden büyük ölçekli işletmelere kadar veritabanları sistemlerin çalışır durumda tutulmasında kritik bir rol oynar. Kötü niyetli aktörler siber saldırılar sırasında her zaman veritabanlarının kontrolünü ele geçirmeye çalışırlar.

Bu makalede, saldırganların veritabanlarının kontrolünü nasıl ele geçirebileceğini ve bu konuda neler yapabileceğinizi öğreneceksiniz.

Bu makalenin yalnızca eğitim amaçlı olduğunu unutmayın . Yasadışı bir şey yaparsanız ve başınız derde girerse, sorumlusu ben değilim. Bir sistemi taramadan / kaba kuvvet uygulamadan / istismar etmeden önce her zaman site/sistem sahibinden izin alın.

SQL Injection Nedir?

SQL enjeksiyonu, bir saldırganın kötü amaçlı kodu bir SQL ifadesine yerleştirdiği bir siber saldırı türüdür. Başarılı olursa, saldırganın bir veritabanındaki hassas verilere erişmesine yardımcı olur.

Saldırgan veritabanının kontrolünü ele geçirdiğinde, verileri çalabilir, değiştirebilir ve hatta silebilir.

İşte SQL Injection'ın birkaç senaryosu.

  • Bir saldırgan, bir oturum açma formuna kötü amaçlı bir kod parçası ekleyebilir. Örneğin, oturum açma formu kullanıcının kullanıcı adını ve parolasını girmesini bekliyorsa, saldırgan admin' OR '1'='1 gibi bir kullanıcı adı girebilir. Bu her zaman doğru olarak değerlendirilir ve saldırganın gerçek parolayı bilmeden oturum açmasına olanak tanır.
  • Bir saldırgan, bir arama formuna kötü amaçlı bir kod parçası ekleyebilir. Örneğin, arama formu kullanıcının bir anahtar kelime girmesini bekliyorsa, saldırgan ' OR '1'='1 gibi bir anahtar kelime girebilir. Bu, anahtar kelimeyle eşleşenler yerine veritabanındaki tüm kayıtları döndürür.
  • Bir saldırgan, kullanıcıların bilgilerini güncellemelerine olanak tanıyan bir forma kötü amaçlı bir kod parçası ekleyebilir. Örneğin, form kullanıcının telefon numarasını girmesini bekliyorsa, saldırgan '; DROP TABLE users; — ,. gibi bir telefon numarası girebilir. Bu, kullanıcılar tablosunun tamamını veritabanından siler.

Bunlar SQL enjeksiyon saldırılarının sadece birkaç örneğidir. Saldırganların bir veritabanına erişmek için bu teknikleri kullanabileceği birçok başka yol vardır. Düzenli olarak güncellenmeyen/bakımı yapılmayan veritabanları genellikle SQL enjeksiyon saldırılarına karşı savunmasız olacaktır.

SQL Map Nedir?

SQLmap, SQL enjeksiyonu güvenlik açıklarını otomatik olarak bulan ve kullanan açık kaynaklı bir araçtır. Bunu, SQL enjeksiyonu güvenlik açıkları için web uygulamalarını test etmek ve güvenlik açığı olan bir veritabanına erişim sağlamak için kullanabiliriz.

SQLmap, kullanım kolaylığı ve esnekliği nedeniyle kalem testçileri arasında favori bir araçtır. Python'da yazılmıştır ve Windows, Linux ve MacOS'ta çalışır.

SQLmap'i çok çeşitli saldırılar gerçekleştirmek için kullanabiliriz. Buna veritabanı parmak izi, veri çıkarma ve hatta tüm bir veritabanını ele geçirme dahildir. Ayrıca, giriş formlarını atlatmak ve altta yatan işletim sisteminde keyfi komutlar yürütmek için de kullanabiliriz.

SQLMap Nasıl Kurulur

SQLMap, Kali Linux ve Parrot OS'de önceden kurulu olarak gelir. SQLMap'i Ubuntu / Debian tabanlı sistemlere kurmak için apt paket yöneticisini kullanın.

apt install sqlmap

Mac'e SQLMap kurmak için Homebrew'u kullanabiliriz .

brew install sqlmap

Eğer başka platformlar kullanıyorsanız kurulum talimatlarına buradan ulaşabilirsiniz .

Kurulum tamamlandıktan sonra, -hkomutu kullanarak yardım menüsünü kontrol edebiliriz. Bu ayrıca SQLMap ile çalışırken kullanışlı bir referans olacaktır.

sqlmap -h
resim-28
SQLMap yardım menüsü

SQLMap ayrıca detaylı bir yardım menüsü de sağlar. Buna komutu kullanarak erişebiliriz -hh.

sqlmap -hh
resim-29
SQLMap gelişmiş yardım menüsü

Artık SQLMap'i kurduğumuza göre, onunla nasıl çalışabileceğimize bakalım.

SQL Map Nasıl Kullanılır

SQLMap, SQL enjeksiyonu güvenlik açıklarının otomatik olarak istismar edilmesi için kullanılan bir araçtır. SQLMap'i web sitelerini ve veritabanlarını güvenlik açıkları açısından test etmek ve bu güvenlik açıklarını kullanarak veritabanını ele geçirmek için kullanabiliriz.

SQLMap'i kullanmak için öncelikle SQL enjeksiyonuna karşı savunmasız bir web sitesi veya veritabanını tanımlamamız gerekir. Bunu manuel olarak yapabilir veya web sitesini taramak için SQLMap'i kullanabiliriz. Savunmasız bir web sitesi veya veritabanını tanımladığımızda, onu istismar etmek için SQLMap'i kullanabiliriz.

İşte temel SQLMap komutu:

$ sqlmap -u [URL] -p [parameter] --dbs

Bu komut SQLMap'e belirtilen URL ve parametreyi güvenlik açıkları açısından taramasını söyleyecektir. Buna veri ifşa etmek, veriyi güncellemek veya hatta tüm veritabanını boşaltmak dahildir.

Bir web sitesinin SQL enjeksiyonuna karşı savunmasız olup olmadığını kontrol etmenin en basit yolu sorgu parametreleridir. Bir web sitesinin kullanıcı bilgilerini bir id parametresi kullanarak listelediğini varsayalım - örneğin, testsite.com/page.php?id=1.

Bu, SQLMap'e girdi olarak geçirilebilir ve SQLMap veritabanının savunmasız olup olmadığını görmek için siteyi otomatik olarak tarayacaktır. İşte komut:

sqlmap -u http://testsite.com/page.php?id=1 --dbs

Bayrak -ubir URL'yi belirtmek için kullanılır ve --dbskomut SQLMap'e veritabanını numaralandırmayı denemesini söyler.

Saldırı başarılı olursa SQLMap, kullanılan veritabanını tabloların listesiyle birlikte listeleyecektir.

resim-30
SQLMap çıktısı

İlk tutunma noktamızı elde ettiğimizde, artık veritabanıyla çalışabiliriz. İşte bir veritabanındaki tabloları listeleme komutu.

sqlmap -u https://testsite.com/page.php?id=1 -D <db_name> --tables

Bir tablodaki sütunu listelemek için şu komutu kullanabiliriz:

sqlmap -u https://testsite.com/page.php?id=7 -D <database_name> -T <table_name> --columns

Tüm bir veritabanını boşaltmak için şu komut kullanılır:

sqlmap -u https://testsite.com/page.php?id=7 -D <database_name> --dump-all

SQLMap, çerezleri ayarlama, kullanıcı aracılarını döngüye sokma ve daha birçokları gibi birçok başka yararlı komut sağlar. Daha fazla bilgi ve seçeneklerin tam listesi için SQLMap belgelerine başvurabilirsiniz .

SQL Enjeksiyon Saldırılarına Karşı Nasıl Savunma Yapılır

SQL enjeksiyon saldırılarını önlemek için şu adımları izlemeliyiz:

Parametreli sorguları kullan

Bir veritabanıyla etkileşim kurarken her zaman parametreli sorgular kullanın. Bu, SQL ifadelerimizde herhangi bir kullanıcı girişi için yer tutucular kullanmamız gerektiği anlamına gelir. Daha sonra sorgu yürütüldüğünde girişi ayrı bir parametre olarak sağlayabiliriz.

Bu, bir saldırganın SQL ifadelerimize keyfi SQL enjekte etmesini önleyecektir.

Kullanıcı girdisine asla güvenmeyin

Herhangi bir kullanıcı girdisini güvenli olduğundan emin olmak için her zaman kontrol etmeli ve temizlemeliyiz. Girdinin herhangi bir tehlikeli karakter veya kötü amaçlı kod içermediğinden emin olmalıyız.

Bu, bir saldırganın parametreli sorgularımızı kullanmamızı aşmanın bir yolunu bulsa bile SQL sorguları enjekte edebilmesini önlemeye yardımcı olacaktır.

Hazırlanmış ifadeleri kullanın

Eğer veritabanımız hazırlanmış ifadeleri destekliyorsa, parametreli sorgular yerine hazırlanmış ifadeleri kullanmalıyız.

Hazırlanmış ifadeler önceden derlenmiş SQL ifadeleridir. Bu ifadeleri farklı parametrelerle birden çok kez yürütebiliriz.

Hazırlanan ifadeler önceden derlendiği için saldırganın kötü amaçlı kod enjekte etmesi daha zor olacaktır.

Kimlik doğrulama ve erişim kontrolleri

Veritabanımıza güçlü kimlik doğrulama ve erişim kontrolleri sağlamalıyız. Bu, yalnızca yetkili kullanıcıların veritabanımıza erişebilmesini sağlayacak ve onu kötü niyetli aktörlerden koruyacaktır.

İzleme ve uyarılar

Veritabanınızı her zaman şüpheli etkinliklere karşı izleyin ve uyarılar ayarlayın. Buna başarısız oturum açma girişimleri veya yüksek sayıda SQL sorgusu dahildir.

Bu, bir SQL enjeksiyon saldırısını erken aşamada tespit etmemize ve onu durdurmak için uygun önlemleri almamıza yardımcı olabilir.

Özet

Veritabanları her işletmenin omurgasıdır. Veritabanlarını güncellemek, sürdürmek ve güvenliğini sağlamak onları kötü niyetli aktörlerden korumak için önemlidir.

SQLmap, veritabanı güvenlik açıklarını denetlememize yardımcı olan güçlü bir araçtır. Geliştiricilerin ve güvenlik uzmanlarının SQL enjeksiyon saldırılarına karşı savunma için SQLMap'e aşina olması önemlidir.

Yorum Gönder

Daha yeni Daha eski