
Edmund Richardson
0
1080
277
İnternet güvenliği dünyası açık portlar, arka kapılar, güvenlik delikleri, Truva atları, solucanlar, güvenlik duvarı güvenlik açıkları ve bizi her gün ayak parmaklarımızda tutan bir dizi başka sorunla karşı karşıya. Özel kullanıcılar için virüsler ve solucanlar olasılıkların en kötüsü gibi görünmektedir. Ancak veritabanı çalıştıran herkes için, SQL enjeksiyonu, oradaki en yıkıcı güvenlik kusurlarından biridir..
Veritabanları bilgisayar alanında son derece değerlidir. Verileri hafıza olarak depolamak ve veri noktaları arasındaki çeşitli ilişkileri göstermek için gereklidirler. Burada MakeUseOf'da, çeşitli görevlere adanmış çok sayıda veritabanımız var: biri tüm makalelerimiz için, biri kullanıcı tabanımız için, biri Ödül programımız için ve liste devam ediyor. Veritabanlarımız kötü niyetli bir şekilde saldırıya uğradığında - veya hatta yok olduğunda ne olur??
Bir veritabanına gerçek erişiminiz olmadığında, SQL enjeksiyonu en belirgin saldırı biçimlerinden biridir. Tam olarak ne olduğunu ve bu kadar tehlikeli olabileceğini öğrenmek için okumaya devam edin.
Neyse, SQL Nedir?
SQL enjeksiyonunu anlamak için önce SQL'in ne olduğunu ve bunun bir web sitesi ile olan ilişkisini anlamanız gerekir. Structured Query Language (Yapısal Sorgu Dili) anlamına gelen SQL, tablo verilerini yönetmek için optimize edilmiş bir programlama dili türüdür. Tüm amaç ve amaçlar için, programcıların bir veritabanıyla iletişim kurmasının ve komut vermesinin bir yoludur..
Bir veritabanı ne zaman harekete geçiyorsa, verilen ve işlenen SQL komutları vardır. Bir veritabanının kullanıldığı her zaman düşünürseniz, bunun sadece bir kaç koşulda gerçekleştiği sonucuna varacaksınız:
- Yeni verilerin eklenmesi gerektiğinde,
- Mevcut verilerin değiştirilmesi gerektiğinde,
- Eski verilerin silinmesi gerektiğinde,
- Belirli bir veri parçasının aranması ve alınması gerektiğinde.
Bu işlemlerden birinin gerçekleşmesi gerektiğinde, bir SQL komutu sunucuda bir yerde yürütülür. Programcı, çoğu zaman bu SQL komutlarının kaynak kodda ne zaman ve nerede olacağını belirleyecektir. Bununla birlikte, bir kullanıcının bir veritabanını manipüle etmeye zorlayabileceği kaçınılmaz durumlar vardır - ve bu fırsatlar hepinizin yanında.
Hiç bir web sitesine giriş yaptınız mı? Hiç bir blog makalesine yorum yaptınız veya bir forum başlığına bir cevap yazdınız mı? Hiç bir arkadaşına bir Facebook mesajı gönderdin mi? Gmail’de bir e-posta yazdınız mı? Google'da bir web sitesi mi arıyorsunuz? Bir web sitesinde bir giriş alanı gördüğünüzde (kullanıcı adı, şifre, arama sorgusu, mesaj kutusu vb.), Bu metin veritabanına gönderilir ve.
Şimdi, kötü niyetli bir kullanıcı bir veritabanını değiştirmek istiyorsa, onun için çok fazla seçenek yoktur. Bir olasılık gerçek elde etmek olacaktır fiziksel sunucuya erişim ve üssünde onu yok. Ancak, aksi takdirde, kötü niyetli kullanıcının bir giriş alanı kullanırken varolan bir SQL komutunu ele geçirmesi en mantıklı olanıdır, böylece sunucuyu başlangıçta amaçlanandan farklı bir komut uygulamak zorunda.
SQL Enjeksiyon Tekniği
Mevcut bir SQL komutunu ele geçirme eylemi, SQL enjeksiyonunun ifade ettiği şeydir. Neden enjeksiyon deniyor? Çünkü bir SQL komutunu kaçırmak kullanıcının bir giriş alanı kullanırken kendi SQL kodunu enjekte etmesini gerektirmektedir. Bu kafa karıştırıcı geliyor mu? Bir örnekle göstereyim.
MakeUseOf giriş sayfasına göz atın. Kullanıcı adınızı ve şifrenizi girip isabet ettiğinizde “Gönder“, web sunucusunu az önce verdiğiniz bilgileri içeren bir SQL komutu oluşturmaya zorluyorsunuz, yani kullanıcı adınızı ve şifrenizi. Veritabanı bilgileri alır, kullanıcı adı / şifre kombinasyonunun doğru olduğunu doğrular, ardından sitenin diğer alanlarına doğru erişim sağlar..
Şimdi kötü niyetli bir kullanıcı, kullanıcı adı ve şifresini girmezse, bunun yerine kullanıcı adı olarak bir SQL komutu yazsaydı ne olacağını hayal edin? Sunucu kodu düzgün şekilde korunmazsa, veritabanı hatalı kullanıcı adını (gerçekten bir SQL komutu olan) alacak ve gerçekten bir komut olarak çalıştıracaktır..
İşte bu yüzden enjeksiyon denir. SQL komutu, tamamen meşru yollarla veritabanına enjekte edilir, öyle yapılması gerekmeyen bir şey yapması için manipüle edilir.
Gelişmiş Bir Örnek
Şimdiye kadar, SQL enjeksiyonunu yüksek seviye terimlerle tanımladım, böylece programlama bilgisi olmayanlar bile herkes anlayabilir. Bu bölümde, gerçek bir örnek vereceğim Nasıl bu teknik mümkündür. Eğer bir SQL acemi iseniz veya daha önce hiç programlama yapmadıysanız, sessizce bu bölümü atlayabilirsiniz..
Bir web sitesine giriş yaparken, kodun SQL ile yazılmış olması için olası bir yol:
SELECT user_id
Users_db kullanıcısından
WHERE kullanıcı adı = "$ kullanıcı adı" VE şifre = "$ şifre"
Temel olarak, komut veritabanından hepsini döndürmesini ister. user_ids masadan users_db girilen kullanıcı adı ve şifre kombinasyonuyla eşleşen. Her şey yolunda ve iyi görünüyor, tamam?
Giriş formuna şu girdilerin verildiğini varsayalım:
Kullanıcı adı: David
Şifre: fubar 'VEYA' x '=' x
Şifre alanının kesme işareti ile başlamadığına veya bitmediğine dikkat edin. Sunucu bu oturum açma girişimini aldığında, şifre alanında verilen her şeyi alır ve koda $ şifresinin yerine koyar. Sonuçta ortaya çıkan SQL komutu şöyle görünecek:
SELECT user_id
Users_db kullanıcısından
NEREDE kullanıcı adı = "David" VE şifre = 'fubar 'OR' x '=' x'
Sunucu bu komutu çalıştırdığında, bu SQL komutunun son kısmı her zaman doğru dönüş. Bu, kötü niyetli kullanıcının herhangi bir kullanıcı adı girebileceği ve bu hesaba hemen erişebileceği anlamına gelir; çünkü oturum açma parolasını doğru alıp almadığına bakar..
Elbette, birinin hesabına giriş yapmak, diğer tüm hack girişimleriyle karşılaştırdığınızda oldukça hafif bir suçtur: tüm veritabanlarının silinmesi, tüm verilerin alınması, hatta çalma veritabanlarındaki veriler.
Profesyonel web geliştiricileri bu tür hileleri önlemede daha iyi ve daha iyi hale geliyorlar, ancak arada bir SQL SQL saldırısının elinde bir şirketin zarar gördüğünü duyacaksınız. Ne zaman, ne anlama geldiğini ve nasıl mümkün olduğunu biliyorsunuz..
Resim Kredisi: Shutterstock Üzerinden Giriş Image, Shutterstock Üzerinden Veritabanı Şeması, Shutterstock Üzerinden HACKED Edildi