Blind SQL

Blind SQL Injection – DVWA Low Level | Web Uygulama Güvenliği

Genel Siber Güvenlik, Web Uygulama Güvenliği

Blind SQL Injection yazısı temel SQL komutlarını bildiğiniz göz önünde tutularak hazırlanmıştır. Eğer bilmiyorsanız, fikir sahibi olmak açısından temel sql komutları için linkteki yazımın ilk kısmını okuyunuz. PLS!

Blind SQL Injection Nedir?

Blind Türkçeye “Kör” olarak çeviriliyor. Yani burada yaptığımız işlem klasik SQL Injection’dan farklı olarak kör olması. Körden kastım ne? SQL hatasını göremiyor olmamız. Klasik SQL Injection yöntemlerinde or sorgusu ve işareti ile sayfadan bir SQL syntax hatası bekleriz, hatayı aldığımızda SQL kodumuzu enjekte edebileceğimiz direk aklımıza gelir. Fakat Blind SQL Injection yaparken olay o kadar kolay değil çünkü Blind SQL Injection sırasında sayfa bize syntax hatası vermez. Sadece sayfanın formu değişir. Yani sayfada bir değişiklik olur, yazılımcı size eğer syntax hatası almanız taktirde farklı bir sayfa gösterir yada aynı sayfayı tekrar yükler. Eğer kör SQL enjeksiyon yapmaya çalışıyorsanız gözünüzü açık tutmalısınız.

1. Adım: Açığı Keşfet

Sayfada blind sql injection açığı var mı yok mu öğrenmek için sayfaya “and” ile sorguda bulunuyoruz. İlk olarak:

1' and 1=1 #

ifadesini submit ediyoruz.

# kullanmamızdaki neden sayfanın sorgulayacağımız her iki koşulda da hata vermesi sonucu açığı tespit edemiyor olmayışımız. Peki nereden biliyorum bunu? SQL injection açığı bölümünde eğer # işareti kullanmazsak bir SQL syntax hatası aldığımızı keşfetmiştim. Bu her web sitesinde geçerli değil, sadece DVWA için böyle. Ama sizin üzerinde çalıştığınız sitelerde de benzer durumları yaşayabilirsiniz. İlk olarak ‘#’ işareti olmadan sorgularınızı yapın, baktınız birşey çıkmıyor o halde kare işaretini kullanarak yapın. Or yerine oR, OR vb. farklı bypass yöntemleri deneyin…

1′ and 1=1 # kodunu submit ettikten sonra karşımıza gelen sayfayı kafanıza kazıyın.
Sayfa:

SQL Injection as Blind

Sırada diğer sorgu:

1' and 1=2 #

Yukarıdaki sorguyu submit ettiğimizde gelen sayfa ile ilk sorgumuzdaki sayfayı karşılaştıralım:

Blind SQL

Gördüğünüz gibi sayfalar aynı değil, yani burada bir Blind SQL Injection açığı söz konusu, açık keşfini tamamladık.

2. Adım: Tablolaları Sahneye Alalım

Bu adımda tablo isimlerini listeliyoruz. Bunun için aşağıdaki kodu submit ediyoruz

1' and 1=1  union select null, table_name from information_schema.tables# 
yada
1' and 1=2  union select null, table_name from information_schema.tables# 

İlk seçenekte id değeri 1 olan user'da karşımıza geliyor. Kafa karıştırmaya gerek yok, ne kadar az kalabalık o kadar temiz. Ben 2. kod ile devam edeceğim...
SQL Dorkları

Çok fazla tablo var, eğer “1′ and 1=2 union select null, table_name from information_schema.tables where table_name like ‘user%’ #” kodunu submit ederseniz sadece içerisinde “user” kelimesini barındıran tabloları da çekebilirsiniz. Ya da aman ne gerek var CTRL+F ile de bulabilirsiniz. Kolonlarını çekeceğimiz tablo “users”

3. Adım: Kolonları Sahneye Alalım

1' and 1=2  union select null, column_name from information_schema.columns where table_name='users'# 
Database hacklemek

Yukarıdaki kod bloğu ile de users tablosuna ait kolonları çektik.

4. Adım: User ve Pass Çekelim

1' and 1=2  union select null, concat(user,0x0a,password) from users # 
Blind SQL Injection nedir

Gördüğünüz gibi username ve password bilgilerini çekmiş olduk, passwordlar hashlenmiş durumda, artık John ile mı kırarsınız, online tool mu kullanırısı orası size kalmış…

**Aslında Blind olarak SQL Injection açığı uygulamak bu kadar kolay değil arkadaşlar, DVWA zaten öğrenme amaçlı kullanılan ve tamamen zaafiyetli olan bir sistem olduğu için halihazırdı bildiğimiz bilgileri kullanarak açığı bu kadar kolay sömürebildik. Farklı senaryolarda saatlerce uğraşmamız gerekebilir, null değerlerini artırmamız vs. çok zaman alacak adımlar uygulamamız gerekebilir. Lütfen bunu göz önünde bulundurun.

Eğer bu yazı hoşunuza gittiyse File Inclusion (LFI & RFI) açıklarını anlattığım File Inclusion Açığı  yazımı da okuyabilirsiniz.

Kaynaklar:
Owasp.org

Bir cevap yazın