Sql İnjection XVWA
Aralık 13, 2019 Hikmet İSKİFOĞLU Comments 2 comments
SQL İnjection uzun zamandır dillerde dolanan, birçok kişinin aşina olduğu ancak hala birçok sitenin bu tip açıklarla birlikte hizmet vermeye devam ettiği bir gerçektir. Basit bir örnek vermek gerekirse google’a inurl:”detail.php?id=1″ site:ca gibi bir arama yaparsanız ülke kodu ca olan ve muhtemel bir sqj injection açığı olan birçok siteyi bulabilirsiniz.
ÖNEMLİ! Bu anlatım, bir saldırgan gözüyle bakış ve yazılım geliştirirken alınması gereken önlemleri vurgulamak için yapılmıştır.
Öncelikle belirtmemiz gerekir ki Sql İnjection bir veritabanı açığı değil bir yazılımın açığıdır. Gerekli kontroller yapılmadığı için veritabanına, kullanıcının yazdığı saf sorgular işletilip zarar verici sorgular yazdırmaktır.
Kullanıcıdan alınan bir değişken ile veritabanında select sorgusu işletilip kullanıcı girişi yapan bir panelimiz olsun. Kullanıcı textbox’a şifre olarak 2123 girdiğinde sorgumuz select *from kullanicilar where sifre=2123 olduğunu düşünelim. Ve bu sorguyu oluştururken hiçbir filtreleme yapılmadan direk id= den sonra kullanıcının girdiği değer ekleniyorsa biz textbox’a 2'or 1=1-- yazdığımızda veritabanı şu şekilde bir kod işleyecektir
select *from kullanicilar where sifre=2' or 1=1---
ve bu şekilde veritabanı sifre 2 ise veya 1=1 (mutlak doğrudur) giriş yapacaktır. Biraz daha detaylandırarak XVWA üzerinden çalışma yapalım.
Elimizde bir search kısmı var ve bize görüntülemek istediğimiz ürünlerin numarasını istiyor. Girdiğimiz numara ile örtüşen ürünlerde bize döndürülüyor.
Search kısmına tek tırnak veya çift tırnak karakterini girip aratıyoruz.
Aldığımız hata bize veritabanına gönderdiğiniz sorguda bir hata var işleyemedik vs diyor. Yanii bu demekki oraya yazdığımız kısım veritabanına gönderilmiş.
Hatamızı aldığımız zaman yapacağımız ilk iş kaç adet item olduğunu bulmak.
' order by 2#
… (Sürekli arttırarak)
Önerilen Yazı : XVWA Laboratuvarı Kurulumu
search ediyoruz, kaç adet item olduğunu bulmaya çalışıyoruz.
‘ order by 8# yazana kadar hiç bir hata almamıştık.
Şimdi ise resimdeki gibi bir hata alıyoruz.
Hemen tekrar ' order by 7# yazalım.
Gördüğünüz gibi 7# yazınca bir hata almadık.
Anlaşılan o ki son itemımız 7. Şimdi elde ettiğimiz bu ilk veriyi
' union select 1,2,3,4,5,6,7# şeklinde kullanalım.
Alt kısımda gördüğünüz gibi bir çıktımız eksik.
Bunları daha net bir şekilde görüp hangi kapıdan sızmamız gerektiğine bakalım.
' and 0 union select 1,2,3,4,5,6,7# komutu ile boş olan id lerimizi buluyoruz.
Açık kapımızı bulduk. id=5 bizim için açılmış bir kapı 🙂 şimdi db mizin versiyonunu öğreniyoruz.
!!Not: Yaptıracağımız işlemler alacağımız çıktıları boş kapılardan alıyoruz.!!
' and 0 union select 1,2,3,4,@@version,6,7#
Veri tabanımızın versiyonunu öğrenmiş olduk. Şimdi hızlı bir şekilde bilgileri çekmeye başlayalım.
' and 0 union select 1,2,3,4,group_concat(table_name),6,7 from information_schema.tables where table_schema=database()#
Yazıyoruz ve tabloları çekmiş oluyoruz. Şimdi Elimizde 3 adet tablomuz var.
Tablolarımızın veri tabanındaki yerini de koyalım.
Tablo > kolon > veri sırasıyla gidecegiz. Almak istedigimiz bilgiyi boş buldugumuz id=5 bölümüne yazdıracagız.
from ile başlayan kısım bilgilerin nereden çekileceğini gösterir.
Tablo isimlerini aldık bizi ilgilendiren user tablomuz. Şimdi bu tablonun altındaki kolonlara bakıp çekmek istediğimiz verileri belirlemeliyiz. Kodumuz şu şekilde:
' and 0 union select 1,2,3,4,group_concat(column_name),6,7 from information_schema.columns where table_name='user'#
Kodumuz başarılı bir şekilde çalıştı ve user in altında bulunan tüm kolonları elde ettik.
Şimdi bizim için gerekli olan bilgileri bulduğumuza göre son hamlemizi yapalım
' and 0 union select 1,2,3,4,group_concat(username,"=",password),6,7 from users#
Komutunu yazıyoruz ve karşımıza users ler dökülüyor.
Şifrelerimiz md5 formatında çıktı, bunuda hemen google amca aracılığıyla çözüp kullanabiliriz.
XVWA kurulumu için buraya tıklayınız.
cyber security, siber güvenlik, sql injection, xvwa
MSSQL SubQuery (Alt Sorgu)
XVWA Laboratuvarı Kurulumu
2 thoughts on “Sql İnjection XVWA”
Aralık 13, 2019, 2:44 pm
Md5 formatini nasıl cozecegimizi anlatmamissin sayfanda da goremedim
Aralık 13, 2019, 5:49 pm
Google’a “MD5 Decryption” yazarsanız birçok Md5 çözeceğiniz site çıkacaktır. Yalnız bu konu hakkında bilinmesi gerekir ki, aslında bu siteler girdiğimiz şifreli metinleri çözmüyor. Daha önceden şifreletilen metinlerin şifrelenmiş haliyle sizin çözmek istediğiniz metin karşılaştırılır ve bir eşlenik bulunursa o size verilir. Genel olarak komplex olmayan şifreler çözülmektedir. Eğer bu şekilde şifrenizi çözdüremezseniz farklı sitelere denemenizi tavsiye ederim. Bulamazsanızda bir wordlist oluşturup brute force deneyebilirsiniz. Aksi taktirde zorlu bir şifrenin çözülmesi uzun yıllar sürecektir.