CSRF,全称Cross-site request forgery,翻译过来就是跨站伪请求
这是利用受害者未失效的身份认证(cookie,会话),诱骗受害者点击攻击者包含恶意代码的页面,以受害人的身份发送请求给服务器,在受害者不知情的情况下完成攻击(改密码,转账)
CSRF与XSS最大的区别就在于,XSS是窃取用户的cookie,而CSRF是利用受害者的cookie或其他的身份认证信息
以下说的攻击机,攻击者都可以认为是kali
用本机浏览器访问
访问dvwa,登陆
我的密码是admin
low级别
可以看到CSRF是一个更改密码的模块
我们输入一个更改的密码,比如123
可以看到url直接将密码显示出来,并且页面提示成功了
我们看看源代码
<?phpif ( 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( '
' . mysql_error() . '' );// Feedback for the userecho "
Password Changed.";}else {// Issue with passwords matchingecho "
Passwords did not match.