[TR] Web For Pentester II – SQL Injections

Konudaki Başlıklar
[TR] Web For Pentester II – SQL Injections
Merhaba arkadaşlar, PentesterLab’ın hazırlamış olduğu Web For Pentester II SQL Injections ile yeni serimize başlıyoruz.
Bu serimizde SQL Injections, Authentication, Captcha, Authorization, Mass Assigment, Randomness Issues ve MongoDB Injection örneklerini inceleyeceğiz.
Serimize SQL Injections örnekleri ile başlıyoruz. Bunun için Web For Pentester II İSO’sunu aşağıdaki linkten indirebilir ve VM sanal makinenizde kurulumunu yapabilirsiniz. İyi eğlenceler.
https://www.pentesterlab.com/exercises/web_for_pentester_II/attachments

1.Örnek

İlk örneğimize baktığımızda basit bir bypass işlemi bizi bekliyor gibi duruyor. Basit bir SQL kodu deneyelim. Bunun için ‘1 = kullanalım.

Yukarıdaki hatadan, arka planda SELECT * FROM users WHERE username=’USERNAME’ AND password=’PASSWORD’ çalıştırılacağını biliyoruz.
Bunun için ‘ or 1=1# komutunu kullanalım.

2.Örnek

İkinci örneğimiz bir öncekiyle aynı güvenlik açığına sahiptir fakat burada dikkat etmemiz gereken konu ise geri döndürülen veri kısıtlanmış. Bundan yararlanmamız için LIMIT kullanmamız gerekiyor.
SQL kodumuz ise şu şekilde, ‘ or 1=1 LIMIT 1#

3.Örnek

Burada kodumuzun başında kullandığımız ‘ ifadesi filtreleniyor. Bundan kaçmak için \ ifadesini kullanabiliriz. Username kısmına PwnlabMe\ ve Password kısmına ise ‘ or 1=1# kodumuzu yazıyoruz.

4.Örnek

Burada, URL’de sorgunun sunucuya aktarıldığını görüyoruz. Bundan yararlanmak için, URL kısmına bir önceki kodumuzu yazabiliriz. ‘ or 1=1#

5.Örnek

Bu örneğimiz, Union Based SQL Injection’dır. Bu, sayfanın sınırlı sayıda bilgi aldığı anlamına gelir. Yani web sayfası tüm kayıtları alan bir sorgu gönderiyor ancak web sayfası sonuçları gösterirken kısıtlıyor.
Burada kullanacağımız kod şu şekilde, union all select * from users

6.Örnek

Bu bir önceki örneğimizle çok benzer. Bunu iki şekilde yapabiliriz; ilki bir önceki örnekte kullandığımız ile aynı olan union all select * from users kullanabiliriz, ikincisi ise URL’deki group’u silebiliriz.
İlk olarak union all select * from users kullanalım.

İkincisi için ise group’u silelim.

7.Örnek

Burada id içerdiğini görüyoruz ve bu tarz karşılaşmalar farklı şekillerde sömürülebilir. İlk olarak SQLMAP, bu program ile istediğimizi elde edebiliriz. Bunu Kali terminalinde şu şekilde kullanabilir;
sqlmap –u http:// Ip Adresi/example7/?id=1 –dump-all
Başka bir yöntem ise id kısmını silerek tüm kullanıcıları görebiliriz.

8.Örnek

Öncelikle sömürmek için standart bir kullanıcı oluşturalım. Bunun için ‘ or 1=1 # kullanalım.

Şimdi ise sadece oluşturduğumuz kaydın numarasına tıklıyoruz.

Veri tabanında farklı sorgu çalıştırmak ve kullanıcı bilgileri elde etmek için, farklı kullanıcılar oluşturabilirsiniz.
9.Örnek

Burada, mysql-real-escape-string adı verilen bir form filtreleme işlemi kullanılmaktadır. Belirli bir alanda kaçış karakterlerini kaldıran ve saldırganların form alanlarına kod enjekte etmesini engelleyen bir PHP işlevidir.
Veri tabanı ve bağlantı kurulumu aynı karakter kümesini kullanmıyorsa, bu işlevin bir kusuru vardır.
Bu durumda, bağlantı GBK’dan bir karakter kümesi eklemenize izin veriyor ise (GBK, basitleştirilmiş Çince için bir karakter kümesidir), işlev geçerli oldukları için eklenen karakterlerden kaçmaz.
Bunun için kullanmamız gerek kod şu şekilde olacaktır, 呵’ or 1=1 #

Submit Query dediğimizde kodumuzun çalıştığını görüyoruz.

Web For Pentester II deki SQL Injections örneklerini bitirmiş bulunuyoruz. Bu serimizin devamında diğer örnekleri inceleyip sizlerle paylaşıyor olacağız.