
摘要本文以 DVWA 本地靶场为实验环境系统演示 CSRF 漏洞在 Medium 与 High 两种防御等级下的绕过思路与完整过程。Medium 等级通过 Referer 校验利用其「包含」判断而非「等于」判断的缺陷构造文件名包含 127.0.0.1 的恶意页面实现绕过High 等级引入动态 user_token 防护需先窃取页面中的 Token 再拼入攻击请求。文章从攻击者视角逐步还原实验步骤并附上安全声明强调所有操作仅限本地授权环境旨在帮助读者理解 CSRF 防御原理与常见绕过手法。CSRF Medium1.这个题目我们要模拟攻击者的视角来使受害者被诱导从 DVWA 之外的地方发来改密码请求首先我们可以先在这个修改框里面假装修改一下密码其实可以直接输入我们现在的密码来查看一下这个修改密码的语法是怎么样的2.然后我们模拟这个语法把密码所在位置修改为我们想要的密码然后在一个新的页面打开这个地址可以发现这个地址同样可以打开我们这个实验的靶场请求被拦截页面提示 That request didn’t look correct防御生效。3.Medium 防御 检查请求的 Referer 里有没有127.0.0.1这个字符串有就放行。攻击页挂在同主机目录下访问页面的 URL 本身含 127.0.0.1Referer 随之合法4.所以我们可以先新建一个文件内容为下然后命名为127.0.0.1.html。并且把这个文件放在我们这个靶场的文件下然后双击打开这个文件会跳转到一个空白页面这样表示我们绕过成功img srchttp://127.0.0.1/DVWA/vulnerabilities/csrf/?password_newhackedpassword_confhackedChangeChange5.然后回到原来的页面用这个密码重新登录看是否可以登录成功确实可以登录成功说明这个实验解决了。然后解决之后我们要把密码改回来不然下次没法登录。可以再下面这个页面一键重置这样比较方便http://127.0.0.1/DVWA/setup.phpCSRF High1.这个更高一级的题目难度有不一样High 要user_token——这个票在受害者页面的 HTML 里而且每次刷新都换。所以攻击 payload 不能再是静态的 img得先动态取 Token、再拼进攻击 URL。2.然后我们可以和上面方法一样先新建一个文件放在同样的目录之下然后文件里面存放一下内容可以命令为hack_high.htmlscript fetch(/dvwa/vulnerabilities/csrf/) // 第一步偷取 CSRF 页面 .then(r r.text()) .then(html { let m html.match(/user_token value([^])/); // 第二步从页面里抠出 Token return fetch(/dvwa/vulnerabilities/csrf/?password_newhackedpassword_confhackedChangeChangeuser_token m[1]); }); /script3.然后我们同样打开这个文件admin/hacked 登录成功即实锤这个时候表示绕过成功于是我们照样回到原来的页面用这个修改之后的密码登录可以登录成功然后后面还要记得按照那个方法还原密码。声明声明本实验均在本人本地搭建的 DVWA 靶场127.0.0.1中进行DVWA 为官方发布的开源漏洞练习平台本人对环境拥有完整控制权与测试授权。实验仅用于学习 CSRF 漏洞在 MediumReferer 校验与 HighAnti-CSRF Token防御等级下的原理及绕过手法无任何非法访问或破坏意图严格遵守《中华人民共和国刑法》第二百八十五条、第二百八十六条及《中华人民共和国网络安全法》相关规定。文中所有 payload 仅对本地靶场环境有效不具备任何实战价值文中截图均为本地靶场自生成数据本人坚定站在防守者立场不对未授权的真实系统实施所述技术。如文中出现技术性错误欢迎读者批评指正转载请注明出处并附带本声明。