MySQL : Auth Injection

Dökümanı anlayabilmemiz için temel seviyede MySQL ve PHP bilgisi gerekmektedir. Bu uyarı akabinde gerekli şartların sağlandığını varsayarak dökümanıma başlıyorum.

Dökümanda bahsedeceğim konu; MySQL Login işleminde yapılabilecek auth enjeksiyon.

FF1

FF2

------------------------------------------------------------------------------------------------------

Evet arkadaşlar login sayfamdaki kodları inceleyelim ve mantığı anlayalım;

sayfa1:login.php
Açıklama: Bu sayfada login için gerekli olan input ve buttonlarımızı belirliyorum.
------------------------------------------------------

dw1
------------------------------------------------------

sayfa2:login2.php
------------------------------------------------------

dw1

------------------------------------------------------

Ana işlemlerimiz login2.php içinde olduğu için incelemeye başlıyalım;
Gördüğünüz gibi MySQL Connection'u gerçekleştirdikten sonra post değerlerini alıyor ve if sorgusuna sokuyoruz.
Eğer bilgiler doğru ise "Başarıyla giriş yaptın", Değil ise "Girdiğin bilgiler yanlis, Kullandigin parola: Girilen Parola değerini" mesajlarını alıyoruz.

Çok fazla kafa şişirmeden enjeksiyon olayına geçmek istiyorum. Önce bi log-in işlemi deniyelim;

dw1dw1dw1

Başarıyla login olduk. Şimdi yanlış bilgilerle login olalım;

dw1dw1dw1

Burada güvenlik açığı teşkil eden olan şudur;
------------------------------------------------------

Kodumuz; SELECT * FROM user WHERE user='$username' AND password='$password'

Doğrulamamızı yaparken; AND password='$password' - kısmında eğer parola doğru ise True değeri dönüyor ise sorunsuz bi şekilde olay gerçekleşecektir.
Fakat; AND password='$password' kodunu -> AND password=' ' OR ''=' ' şeklinde aldığımızda yeniden True değeri dönecektir.. Enjeksiyon burada gerçekleşecektir..
Neden mi?
İnceleyelim;
dw1

1. Parola kısmını boş bırakıyoruz

2. OR(Veya) ile başlıyoruz ve ' '=' ' eşitliğini giriyoruz. ' '=' ' doğru bir ifade olduğu için sorgudan True değeri dönüyor ve login olabiliyoruz. Burada önemli olan eşitliği sağlamaktır. Gireceğimiz kod 'x'='x veya '1'='1 de olabilirdi önemli olan eşitliğin sağlanmasıdır arkadaşlar.

dw1dw1dw1

Hepsi bu kadar ve içerideyiz...

Tarih:
Hit: 5769
Yazar: Holyzone

Taglar: mysql : auth injection


Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.