NoSQL Injection

NoSQL Injection Nedir?

  • NoSQL veritabanlarına yapılan enjeksiyon saldırılarında, saldırganlar istemci sorgularını manipüle ederek yetkisiz erişim sağlar.

  • SQL enjeksiyonuna benzer şekilde, veri girişlerinin filtrelenmemesi veya doğrulanmaması bu zafiyete neden olur.

  • Özellikle MongoDB, CouchDB, Firebase gibi JSON tabanlı NoSQL sistemlerde yaygındır.

  • Kullanıcı girişleri doğrudan sorguya dahil edildiğinde, saldırganlar özel payload’larla filtre mantığını değiştirebilir.

  • Kimlik doğrulama atlatılabilir, veritabanından yetkisiz veri okunabilir veya veri değiştirilebilir.

  • RESTful API'lere sahip sistemlerde URL veya JSON parametreleri yoluyla da gerçekleştirilebilir.

  • Geliştiricilerin veri tiplerini kontrol etmemesi veya JSON yapısını filtrelememesi sonucu ortaya çıkar.

Yöntemler

Basit SQLi

Authentication SQLi

Data Çekme

Where ile Sütun Çekme

Önlemler

  • Kullanıcı girdileri mutlaka doğrulanmalı ve uygun filtreleme yapılmalıdır.

  • Dinamik sorgular yerine, güvenli sorgulama yöntemleri (prepared statements, parametrik sorgular vb.) tercih edilmelidir.

  • JSON yapısında doğrudan kullanıcı verisiyle operatör veya anahtar üretiminden kaçınılmalıdır.

  • Uygulama tarafında detaylı hata mesajları gösterilmemeli, istisnalar yönetilmelidir.

Araçlar

NoSQLMap: https://github.com/codingo/NoSQLMap

Kaynaklar

Last updated