herkese selam olsun
SQL Injection Nedir?
SQL Injection en basit tanımı ile bir kod enjekte olayıdır.
Siteden veri tabanına sorgular gider. Biz de bu sorgulara kendi kodlarımızı ekleyerek veri tabanından bilgi çekmeye çalışırız.
SQL Injection türlere ayrılır bunlardan aşağıda bahsettim umarım faydalı olur.
SQL Injection Nerelerde Karşımıza Çıkar?
SQL Injection en çok elbette giriş panellerinde karşımıza çıkar.
Web sayfalarında veri tabanına sorgu giden her yerde olma ihtimali var.
Şunu da eklemek istiyorum ki bu konunun birinci kısmıdır.
İyi okumalar diliyorum...
SQL Injection Türleri Ana Başlıklar
In-Band SQLi
Inferential SQLi
Out-of-Band SQLi
Web sayfalarında veri tabanına sorgu giden her yerde olma ihtimali var.
Şunu da eklemek istiyorum ki bu konunun birinci kısmıdır.
İyi okumalar diliyorum...
SQL Injection Türleri Ana Başlıklar
In-Band SQLi
Inferential SQLi
Out-of-Band SQLi
1-In-Band SQLi Nedir?
In-Band SQLi sorgularımızı gönderdiğimiz yerden aldığımız türdür.
Yani bizim açığı bulduğumuz sayfada işlem yapmamızdır. Diyelim ki açığı neutrontht.com/welcome sayfasında bulduk. İşlemleri de bu sayfadan yapar ve bu sayfadan dönüt alırız. Aslında en çok kullanılan yöntemde budur.
Error-Based SQLi de bu ana başlığın bir alt dalıdır.
Error-Based SQLi
hatalar ile sömürürüz. Diyelim ki bir sorgu hazırladık ve gönderdik ama bize hata döndürdü. İşte burada Error-Based SQLi vardır. Biz de sorguyu düzenleyip aktif etmeye çalışırız.
Bir diğer alt başlığımızda Union-Based SQLi
Union-Based SQLi birden fazla select sorgusu ile çalışır. Biz sorguları göndeririz ve tek bir sonuç olarak birleşir.
2-Inferential SQLi Nedir?
Inferential SQLi biraz daha farklı. Sonuç almak uzun sürecektir ama daha tehlikelidir. Bir farklılıkta error almayız. Sonuçlara göre veri tabanı yapılandırılır.
Alt başlığı Based Blind SQLi
Bu kez hata alınmaz. Sorgu için doğru ya da yanlış sonuçları döner. Sorgu yeniden yapılandırılır.
Time-Based Blind SQLi de bu kısımda bir alt başlık. Time-Based Blind SQLi timedan da anlarsınız ki bir süre belirlenir. Söz konusu sürede geri dönüş gelirse sorgu başarılıdır.
3-Out-of-Band SQLi
Bu kez iş biraz daha sunucuyla alakalı oluyor. Sorguyu siteden gönderirsek başka bir yerden alırız. Kısaca böyle düşünebilirsiniz.
Hiç karşılaşmadım şuana kadar ama bu da bir zafiyet.
Şimdi uygulama adımına geçelim. Uygulama için zafiyet barındıran bir makine kullanıyorum.
Aslında bWAPP kullanacaktım fakat kurulum hataları oldu. Web For Pentester kullanacağım.
Web For Pentester kurulumunu farklı bir konu ile anlatacağım bugün yarın açarım onu da.
Kali Linuxda sayfayı açıyorum
Sql bölümünde ilk örneğe gidiyorum.
Şunu da söyleyeyim ki eğer bir sorun olmazsa bu örneklerin hepsini teker teker çözeceğiz.
İlk sayfaya tıklayınca beni bir sayfa karşılıyor.
Sayfada bize verilmiş bir tablo var ve biz linke odaklanıyoruz. Aklınıza direkt sonuna " veya ' koymak gelebilir. Biz bunu yapmıyoruz.
Sitede bir zafiyet olduğunu biliyoruz çünkü. Tabi ki zafiyeti bulmak istiyorsanız bu konudan yardım alabilirsiniz.
Biz bu açığı sömürmek için payload kullanacağız. Payloadları nerden bulmak için bir site var. Sql injection payload list şeklinde aratmanız yeterli olacak.
Her açığı istismar ederken elimizle girmeyeceğiz ilk seferinde giriyoruz mantığı oturtmak için. Bulduğunuz listedeki payloadların hepsi çalışmayacaktır. Bunun için teker teker denemek gerekiyor.
Peki bulduğumuz listedeki payloadları nasıl kullanacağız. Linkin sonuna ekleyerek. root yazısını sile de bilirsiniz öyle kaladabilir.
Ben baya bir denedim payload sonunda bir tane buldum oda yukarıda var zaten. Şimdi gelelim sonuca. Bize veri tabanında ki bilgileri gösterdi. Peki payload bunu nasıl yaptı. Bunu da 2. bölümde göreceğiz.
Manuel olarak böyle yaptık peki ya araç ile. Bir çoğunuzun aklına sqlmap gelmiştir. Şimdi de sqlmap ile sömürmeye çalışalım.
Terminali açalım ve başlayalım.
sqlmap -u link --dbs
yazıyorum ve şu an işlem başladı.
iki sonuç döndü information_schema hemen hemen hepsinden vardır. Biz exercises ile ilgileniyoruz.
Bunun için;
iki sonuç döndü information_schema hemen hemen hepsinden vardır. Biz exercises ile ilgileniyoruz.
Bunun için;
sqlmap -u link -D execises --tables
çalıştırıyorum ve tekrar işlemeye başladı.
Bize tablo olarak sadece users döndürdü. Şimdi kolonları çekeceğiz.
Bunun için;
Bize tablo olarak sadece users döndürdü. Şimdi kolonları çekeceğiz.
Bunun için;
sqlmap -u link -D execises -T users --columns
komutunu girdim ve aşağıdaki sonucu aldık.
kolonları aldık. Şimdi ise kolonların içindeki bilgilere ulaşmamız gerekiyor.
Bunun için linke -C age,groupid,id,name,passwd --dump bölümü ekliyorum. Biz bütün kolonları yazdık ama sadece istediklerimize de yazabilirdik.
Tüm bilgiler için hepsini dump ediyoruz ve enter yaptık.
Şimdi bilgiler döküldü.
Web sayfasından aldığımız sonuçları şimdi ise terminalden aldık. Hedefi sqlmal ile de sömürdük.
Hepsi bu kadar kolay olmayacak araya waf girenler olacak.
Söylediğim gibi bu konunun ilerleyen kısımlarında her birine deyineceğim.
bir sonraki konuda görüşmek üzere
iyi forumlar diliyorum
kolonları aldık. Şimdi ise kolonların içindeki bilgilere ulaşmamız gerekiyor.
Bunun için linke -C age,groupid,id,name,passwd --dump bölümü ekliyorum. Biz bütün kolonları yazdık ama sadece istediklerimize de yazabilirdik.
Tüm bilgiler için hepsini dump ediyoruz ve enter yaptık.
Şimdi bilgiler döküldü.
Web sayfasından aldığımız sonuçları şimdi ise terminalden aldık. Hedefi sqlmal ile de sömürdük.
Hepsi bu kadar kolay olmayacak araya waf girenler olacak.
Söylediğim gibi bu konunun ilerleyen kısımlarında her birine deyineceğim.
bir sonraki konuda görüşmek üzere
iyi forumlar diliyorum