DVWA V1.9:CSRF(跨站请求伪造)

该博客详细介绍了DVWA(Damn Vulnerable Web Application)V1.9中CSRF(跨站请求伪造)漏洞的各个级别,包括Low、Medium、High和Impossible级别。文章讲解了每个级别的核心代码、官方提示以及漏洞利用方法,强调了CSRF攻击如何利用受害者的cookie并提出了防御策略。同时,通过实例展示了如何构造攻击链接、短链接和攻击页面,以及如何利用其他漏洞如XSS来绕过防护机制。
摘要由CSDN通过智能技术生成

CSRF 介绍

CSRF是一种攻击,强制终端用户在其当前认证的Web应用程序上执行不必要的操作。
在社会工程(例如通过电子邮件/聊天发送链接)的帮助下,攻击者可能会迫使Web应用程序的用户执行攻击者选择的动作。

成功的CSRF开发可以在正常用户的情况下危及终端用户数据和操作。
如果目标最终用户是管理员帐户,这可能危及整个Web应用程序。

这种攻击也可以被称为“XSRF”,类似于“跨站点脚本(XSS)”,并且它们经常一起使用。
在这里插入图片描述

Low 级别

核心代码

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

?>

可以看到,服务器收到修改密码的请求后,会检查参数password_new与password_conf是否相同,如果相同,就会修改密码,并没有任何的防CSRF机制(当然服务器对请求的发送者是做了身份验证的,是检查的cookie,只是这里的代码没有体现= =)。

官方提示

没有采取措施来防止这种攻击。
这意味着可以制作一个链接来实现特定的动作(在这种情况下,改变当前的用户密码)。
然后用一些基本的社会工程,让目标点击链接(或者只是访问某个页面),触发动作。

Spoiler: ?password_new=password&password_conf=password&Change=Change.

漏洞利用

方法一:构造链接
最基础的,当受害者点击了这个链接,他的密码就会被改成password
(这种攻击显得有些拙劣,链接一眼就能看出来是改密码的,而且受害者点了链接之后看到这个页面就会知道自己的密码被篡改了)

http://43.247.91.228:81/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change

在这里插入图片描述
需要注意的是,CSRF最关键的是利用受害者的cookie向服务器发送伪造请求,所以如果受害者之前用Chrome浏览器登录的这个系统,而用搜狗浏览器点击这个链接,攻击是不会触发的,因为搜狗浏览器并不能利用Chrome浏览器的cookie,所以会自动跳转到登录界面。

有人会说,这个链接也太明显了吧,不会有人点的,没错,所以真正攻击场景下,我们需要对链接做一些处理。

方法二:短链接
我们可以使用短链接来隐藏URL:

如http://dwz.cn/****		点击短链接,会自动跳转到真实网站

在这里插入图片描述
因为服务器域名是ip所以无法生成相应的短链接= =,实际攻击场景下只要目标服务器的域名不是ip,是可以生成相应短链接的。

需要提醒的是,虽然利用了短链接隐藏url,但受害者最终还是会看到密码修改成功的页面,所以这种攻击方法也并不高明。

方法三:构造攻击页面
现实攻击场景下,这种方法需要事先在公网上传一个攻击页面,诱骗受害者去访问,真正能够在受害者不知情的情况下完成CSRF攻击。

这里为了方便演示,就在本地写一个test.html,下面是具体代码。

<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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值