SQL injection Nedir?

D

Drenated

Legend Member
Joined
Nov 23, 2019
Messages
1,865
Reaction score
1,517
SQL Injection Nedir?
SQL Injection saldırganların veri çalma/değiştirmede kullandıkları web saldırı metodlarından biridir. Belkide günümüzde en çok kullanılan uygulama seviyesi tekniklerden biridir. Web uygulamasındaki güvensiz kodlamalardan yararlanarak login formu gibi kullanıcı girişlerinin SQL sorgusunda kullanıldığı yerlerde SQL komutları eklenmesi ile veritabanına yetkisiz erişim sağlar.

SQL Injection: Detaylı Açıklama
Web uygulamaları web sitesini ziyaret eden kullanıcıların web tarayıcıları ile bir veritabanından veri görüntüleyebilmelerini sağlarlar. Veritabanları çoğu web sitesinde kullanılır ve ziyaretçilere spesifik bilgilerin sunulması için veri depolama amaçlı kullanılırlar. Kullanıcı bilgiler, finansal ve ödeme bilgileri, firma istatistikleri bir veritabanında bulunabilir ve hazır veya özel yazılmış uygulamalar ile erişilebilirler.

SQL Injection, bir web uygulaması üzerinden arka plandaki veritabanında çalıştırılması için SQL komutlarının gönderilmesidir.

Eğer web uygulamasında kullanıcı tarafından gelen tüm parametreler doğru olarak filtrelenmemişse saldırganlar tüm veritabanı içeriğini görebilir veya silebilirler.

Login sayfaları, destek veya ürün istek formlar, yorum/iletişim formları, arama sayfaları, alışveriş sepeti sayfaları dinamik içeriğin sunulduğu çeşitli sayfalardır ve modern iş dünyasında müşteriler ile veya kullanıcılar ile haberleşmede vazgeçilmezdir.

Bu tip web siteleri SQL Injection saldırılarından etkileniyor olabilir.

SQL Injection: Basit bir örnek
Normal bir kullanıcının kendi kullanıcı adı ve şifre kombinasyonu ile giriş yaptığı bir login sayfası düşünün.

Normal kullanıcı bilgilerini gönderdiğinde bu bilgilerden bir SQL sorgusu yaratılarak doğrulama için veritabanına gönderilir. Eğer geçerli ise kullanıcının erişimine izin verilir. Diğer bir deyişle login sayfasını kontrol eden web uygulaması kullanıcı adı şifre kombinasyonunu doğrulamak için planlanmış komutları kullanarak veritabanı ile haberleşir. Doğrulandığında da kullanıcının erişimine izin verilir.

SQL Enjeksiyon ile saldırganlar login formu engelini aşarak arkasındakileri görmek için özel olarak hazırlanmış SQL komutları girerler. Bu sadece eğer kullanıcı tarafından sağlanan girişler doğru olarak filtrelenmiyor ve direk olarak SQL sorgusu ile veritabanına gönderiliyorsa mümkün olabiliyor. SQL Enjeksiyon açıkları saldırganların direk olarak veritabanı ile haberleşmesini sağlarlar.

Bu tip saldırılardan etkilenen teknolojiler ASP, ASP.NET, PHP, JSP ve CGI gibi dinamik script dilleridir. SQL Enjeksiyon saldırısı yapacak olan bir saldırganın tek ihtiyacı olan bir web tarayıcısı, SQL sorguları hakkında bilgidir.

SQL Enjeksiyonun basitliği onu popüler yapan en büyük etken.

Nasıl olurda bir güvenlik duvarı veya diğer güvenlik mekanizması arkasındaki bir veritabanına direk olarak SQL sorguları geçer?

Güvenlik duvarları ve benzer saldırı tespit mekanizmaları tam ölçekli bir SQL enjeksiyon web saldırısına karşı çok az hatta bazen hiç koruma sağlamazlar.

Web sitenizin herkese açık olması gerektiği için güvenlik mekanizmaları web uygulamanıza erişime (genelde port 80/443) izin verecektir. Ve web uygulamasının istenilen bilgileri gösterebilmesi için veritabanına erişim yapabilmesi gerekir.

SQL veya Structured Query Language verileri bir veritabanına depolamanızı, değiştirmenizi ve çağırabilmenizi sağlar. SQL, gerçekten de, bir web uygulamasının (ve kullanıcıların) veritabanı ile etkileşebilmeleri için tek yoldur. Veritabanlarına örnek olarak Oracle, Microsoft Access, MS SQL Server, MySQL ve Filermaker Pro verilebilir.

SQL komutları arasında belli başlı olarak SELECT, INSERT, DELETE ve DROP TABLE sayılabilir. DROP TABLE kelime anlamı olarak da görüleceği gibi belirli isimdeki bir tablonun silinmesini sağlar.

Yukarıdaki login sayfası örneğinde normal bir senaryoda web uygulaması için planlanan SQL komutları aşağıdaki gibi olabilir:

SELECT count(*)
FROM kullanici_listesi_tablosu
WHERE kullanici='KULLANICI_ALANI'
AND sifre='SIFRE_ALANI'

Bu SQL komutu veritabanı sunucusunda depolanan bilgi ile kullanıcının girdiğini eşleştirmeyi dener.
Çoğu web uygulamasının içine veritabanı ile haberleşebilmesi ve fonksiyonlarını gerçekleştirebilmesi için belirli bazı SQL sorguları gömülür. Eğer web uygulamasının herhangi bir giriş alanı doğru olarak filtrelenmez ise, bir saldırgan ek SQL komutları enjekte ederek web uygulamasının çalıştıracağı SQL komutlarını artırabilir, böylece orjinal dizayn ve fonksiyonun ötesine geçer.
Böylece saldırganların veritabanı ile arasında temiz bir haberleşme kanalı kurulacaktır.
 
SPAM IS FORBIDDEN!
  • SPAMMERS ARE BANNED FROM THE FORUM AND CANNOT USE ANY OF THE CHEATS
  • For example: thanks, thx, very good, asdqwe, working, ty and so on!
  • For example: Writing the same message over and over. thanks, thx and so on!
  • Copying and copying someone else's message is prohibited.
  • It is forbidden to send messages to increase the number of comments on threads that you have no knowledge of.
  • Write your own opinion when commenting!
  • If you see spam message, please let us know with the REPORT button!

Tema düzenleyici

Top Bottom