Gökhan abi
Uzman Üye
- Katılım
- 4 Temmuz 2021
- Mesajlar
- 144
- Tepkime puanı
- 439
- İlgi Alanlarınız
- Hacking Yazılım
- Cinsiyet
-
- Erkek
Selamlar arkadaşlar forumda çok fazla “Site nasıl hacklenir, Hangi yolları takip etmem gerekir” Tarzında konular açılıyor sizlere rehber olmak adına bu konuyu hazırlıyorum konuyu fırsat buldukça güncel tutacağım yeni yollar ekleyeceğim.
Şimdi geçelim ele alacağımız konuları(Temel seviye olarak hazırlanacaktır anlamanız için)
Sql injection(Structered query language) Türkçe karşılığı sorgu dili olan bu dil verileri yönetmek ve tasarlamak amaçlı veri tabanı ortamında kullanılan bir alt dildir.
SQL sayesinde verilen üstünde esnek bir şekilde işlem yapmak mümkündür.
SQL İnj. Sql sorgu dilini kullanarak veritabı üzerindeki bilgileri görüntüleyebildiğimiz,
Yeni veriler ekleyebildiğimiz ya da verileri silip değiştirebildiğimiz tehlikeli bir açık türüdür.
Bu açık sayesinde mail,telefon,ıp,cc, gibi kritik bilgiler elde edebiliriz.
Şimdi geçelim nasıl SQL ile site hackleyeceğimize
SQL açıklı bir site bulmak için önce Google operatörlerini kullanmayı öğrenmemiz gerekiyor
“İnurl” : Bir kelimenin hangi URL’lerde geçtiğini sorgulamak için inurl Google parametresine başvurulur.
İnurl.php?id= yazıp aramay yaptığınızda karşımıza “php?id=” kelimesinin geçtiği tüm url’ler dökülür.
“İntext” Google Parametresinde görevi neymiş öğrenelim. “intext” Google arama motoruna intext:”M3TA”
yazıp arama yapıldığında arama sonuçlarında “M3TA” kelimesinin geçtiği metinlerin olduğu web sitelerini sıralar.
SQL zaafiyeti ararken dorkuma “intext:” parametresi ekliyorum ve googlede şöyle bir sorgu oluşturuyorum;
bana sayfa içerisinde M3TA kelimesi geçen bütün siteleri önüme çıkar.
Bunu bir marka olarak ayarlarsak yani şöyle “İntext:BMW” Googleye şu soruguyu yapmış olacağım bana site içerisinde BMW geçen bütün siteleri sırala.
Googlede bu parametreye uyup size sitelerin içinde BMW geçen siteleri ayıklayıp önünüze sunacaktır.
“Site:” Parametresi “Site:” Parametresi ekleme sebebim saldıracağım hedefi seçmemden kaynaklıdır.
Googleye şöyle bir sorgu oluşturuyorum.
“Site:br” bana sadece brezilya sitelerini göster. Google bu komutunuza uyacaktır.
“Site:it” yaparsak bu seferde önünüze İtalya’ya ait sitelerin çıktığını göreceksiniz.
SQL ararken dikkat edilmesi ve hedef belli ise işinizi kolaylaştıracak parametre.
Ek olarak “Site:” parametresi eklemeseniz bile dork’un sonuna “intext:” Ekeleyip: ” Kelime yerine ise Hangi dilde bir kelime girildiyse Google o dili kullanan bütün siteleri çıkaracaktır.
Örnek vermek gerekirse; inurl:.php?id= intext”izmir” “İntext” kısmına izmir yazdım yani bunu googlede arattığımzda
Türkçe kelime olduğu için karşımıza Türkçe kullanan siteler çıkacaktır. Bunu çince veya farklı bir dile çevirip aratırsanız hangi dili seçtiyseniz o dili kullanan web siteri karşınıza çıkacaktır.
Dork üretirken bir hususta şudur İnurl:.php?id= oluşturduk şöyle bir ince detay daha var “İnurl” parametresinden sonra sadece “php?id=45” ekledik. Bu dork google’de arattığımızda web siteleri sayfalarını ayırmaksınız karşımıza çıkaracaktır. Ben zaafiye “index.php”’de aramak istiyorsam dorkumu; “İnurl:index.php?id=” Şeklinde ayarlamam lazım bu dorkta Google size sadece “index.php” sayfasında zafiyet olan siteleri önünüze sunacaktır. “index.php” kısmını “page.php” olarak değiştirirseniz page.php kısmındaki zafiyet açıklarını size sunacaktır.
SQL injection’un ana nedeni web uygulamsının kullanıcıdan gelen girdiyi doğru şekilde kontrol etmeden o girdi ile dinamik bir SQL cümleciği oluşturmasından kaynaklanmaktadır SQL oluştururken herhangi bir meta karekter kullanımı SQL injection zaafiyeti oluşmasına sebep olacaktır.
SQL injection Hata alıp/almama Bazı sitelerin sonundaki url kısmına yani “m3ta.com/php?id=45” bu urlyi bir kontrol edelim “45” değerinin sonuna “ ‘ “(Tek tırnak) Koyduğumuz
zaman çoğu web sitesinde olmasa bile bir çok sitede SQL hatası verecek. Fakat bir çok kişinin yaptığı ufak bir hata var
hedef web sitemizde SQL hatası alamayınca bu sitede bir açık yok gibi bir algı oluşuyor dediğim gibi eğer bir sitede SQL ararken hata vermedi ise bu sitede açık yok anlamına gelmez. Bazen hata vermeyebilir sayfa üzerinde değişiklikler meydana gelir veya hata mesajı arka planda çalışır web sitesine yansımaz.
Bununda cevabını şöyle vereyim. Sqlmap , Havij veya manuel veritabanı çekmek için kullanılabilecek en bilindik yöntemlerdir, tabi bana soracak olursanız manuel daha sağlıklıdır derim ama sqlmap'in kendine has özellekleri olduğu gibi havij ve manuel kullanımının'da kendine has avantajları vardır.
Şimdi geçelim ele alacağımız konuları(Temel seviye olarak hazırlanacaktır anlamanız için)
SQL İNJECTİON Nedir önce bunu bir öğrenelim.
Sql injection(Structered query language) Türkçe karşılığı sorgu dili olan bu dil verileri yönetmek ve tasarlamak amaçlı veri tabanı ortamında kullanılan bir alt dildir.
SQL sayesinde verilen üstünde esnek bir şekilde işlem yapmak mümkündür.
SQL İnj. Sql sorgu dilini kullanarak veritabı üzerindeki bilgileri görüntüleyebildiğimiz,
Yeni veriler ekleyebildiğimiz ya da verileri silip değiştirebildiğimiz tehlikeli bir açık türüdür.
Bu açık sayesinde mail,telefon,ıp,cc, gibi kritik bilgiler elde edebiliriz.
Şimdi geçelim nasıl SQL ile site hackleyeceğimize
SQL açıklı bir site bulmak için önce Google operatörlerini kullanmayı öğrenmemiz gerekiyor
Dork oluşturma kavramını öğrenelim.
“İnurl” : Bir kelimenin hangi URL’lerde geçtiğini sorgulamak için inurl Google parametresine başvurulur.
İnurl.php?id= yazıp aramay yaptığınızda karşımıza “php?id=” kelimesinin geçtiği tüm url’ler dökülür.
“İntext” Google Parametresinde görevi neymiş öğrenelim. “intext” Google arama motoruna intext:”M3TA”
yazıp arama yapıldığında arama sonuçlarında “M3TA” kelimesinin geçtiği metinlerin olduğu web sitelerini sıralar.
SQL zaafiyeti ararken dorkuma “intext:” parametresi ekliyorum ve googlede şöyle bir sorgu oluşturuyorum;
bana sayfa içerisinde M3TA kelimesi geçen bütün siteleri önüme çıkar.
Bunu bir marka olarak ayarlarsak yani şöyle “İntext:BMW” Googleye şu soruguyu yapmış olacağım bana site içerisinde BMW geçen bütün siteleri sırala.
Googlede bu parametreye uyup size sitelerin içinde BMW geçen siteleri ayıklayıp önünüze sunacaktır.
“Site:” Parametresi “Site:” Parametresi ekleme sebebim saldıracağım hedefi seçmemden kaynaklıdır.
Googleye şöyle bir sorgu oluşturuyorum.
“Site:br” bana sadece brezilya sitelerini göster. Google bu komutunuza uyacaktır.
“Site:it” yaparsak bu seferde önünüze İtalya’ya ait sitelerin çıktığını göreceksiniz.
SQL ararken dikkat edilmesi ve hedef belli ise işinizi kolaylaştıracak parametre.
Ek olarak “Site:” parametresi eklemeseniz bile dork’un sonuna “intext:” Ekeleyip: ” Kelime yerine ise Hangi dilde bir kelime girildiyse Google o dili kullanan bütün siteleri çıkaracaktır.
Örnek vermek gerekirse; inurl:.php?id= intext”izmir” “İntext” kısmına izmir yazdım yani bunu googlede arattığımzda
Türkçe kelime olduğu için karşımıza Türkçe kullanan siteler çıkacaktır. Bunu çince veya farklı bir dile çevirip aratırsanız hangi dili seçtiyseniz o dili kullanan web siteri karşınıza çıkacaktır.
Dork üretirken bir hususta şudur İnurl:.php?id= oluşturduk şöyle bir ince detay daha var “İnurl” parametresinden sonra sadece “php?id=45” ekledik. Bu dork google’de arattığımızda web siteleri sayfalarını ayırmaksınız karşımıza çıkaracaktır. Ben zaafiye “index.php”’de aramak istiyorsam dorkumu; “İnurl:index.php?id=” Şeklinde ayarlamam lazım bu dorkta Google size sadece “index.php” sayfasında zafiyet olan siteleri önünüze sunacaktır. “index.php” kısmını “page.php” olarak değiştirirseniz page.php kısmındaki zafiyet açıklarını size sunacaktır.
Peki Ya SQL açığı olup olmadığını nasıl anlayacağım?
SQL injection’un ana nedeni web uygulamsının kullanıcıdan gelen girdiyi doğru şekilde kontrol etmeden o girdi ile dinamik bir SQL cümleciği oluşturmasından kaynaklanmaktadır SQL oluştururken herhangi bir meta karekter kullanımı SQL injection zaafiyeti oluşmasına sebep olacaktır.
SQL injection Hata alıp/almama Bazı sitelerin sonundaki url kısmına yani “m3ta.com/php?id=45” bu urlyi bir kontrol edelim “45” değerinin sonuna “ ‘ “(Tek tırnak) Koyduğumuz
zaman çoğu web sitesinde olmasa bile bir çok sitede SQL hatası verecek. Fakat bir çok kişinin yaptığı ufak bir hata var
hedef web sitemizde SQL hatası alamayınca bu sitede bir açık yok gibi bir algı oluşuyor dediğim gibi eğer bir sitede SQL ararken hata vermedi ise bu sitede açık yok anlamına gelmez. Bazen hata vermeyebilir sayfa üzerinde değişiklikler meydana gelir veya hata mesajı arka planda çalışır web sitesine yansımaz.
Peki SQL açığı olan bir sitenin veritabanını nasıl çekeceğim?
Bununda cevabını şöyle vereyim. Sqlmap , Havij veya manuel veritabanı çekmek için kullanılabilecek en bilindik yöntemlerdir, tabi bana soracak olursanız manuel daha sağlıklıdır derim ama sqlmap'in kendine has özellekleri olduğu gibi havij ve manuel kullanımının'da kendine has avantajları vardır.