CSRF跨站请求伪造
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 安装 @user_3c6cb52e/csrf-cross-site-request-forgery-2zgj
技能介绍
要解决的具体问题
CSRF(跨站请求伪造)是一个老问题,但现代 Web 应用的防御实践让攻击面发生了漂移。很多团队对 CSRF 的理解停留在“检查 Origin 或 Referer 头”这一层,而忽略了浏览器同源策略在边界情况下的微妙差异。当后端依赖 SameSite Cookie 来兜底、却在某个端点上漏掉了会话校验,或者当接口只校验了自定义头却没校验 Content-Type,攻击者就能找到绕过路径。
更麻烦的是无 token 站点——那些不使用同步器 token 的 REST API,如果端点接受 JSON 或 multipart 提交且不校验 Content-Type,就能被跨域表单或 fetch 直接打穿。基础模型给的建议往往是“加个 CSRF token 就行”,但这些边界场景一个都没覆盖。
技能如何工作
这个技能面向需要分析或防御 CSRF 的安全工程师,核心覆盖以下方向:
- 现代绕过向量:利用
SameSite属性的边界差异(如Lax模式下对顶层导航 POST 的限制、None模式下 SameSite 覆盖造成的跨站 Cookie 泄露)、自定义头校验缺失导致的跨域请求绕过、以及无 token 站点上利用fetch不带CORS preflight的 GET/POST 直接提交。 - JSON CSRF:当端点接受
application/json但未强制校验Content-Type时,通过跨域表单提交或构造不带 preflight 的简单请求绕过 CSRF 防护。 - Multipart CSRF:当端点处理文件上传或表单时,利用
multipart/form-data编码绕过对 token 的字符串匹配校验。 - 与 XSS 链结合:在已存在 XSS 漏洞的页面上,将 CSRF 作为二次利用链,绕过
SameSite或Origin校验后直接以受害者身份执行操作。
技能内置了关联路由:当分析 JSON 端点跨域可读性时建议加载 CORS 配置错误分析,当涉及登录、账户绑定或回调绑定的 OAuth 流程时建议加载 OAuth/OIDC 配置错误分析。
适用边界与注意点
本技能是攻击视角的 Playbook,适用于安全测试、红队演练和防御代码审计。在用于防御建议时,应结合具体框架的 CSRF 防护机制(如 Django 的 csrf_token 中间件、Spring Security 的 CsrfFilter)逐项核对,避免将绕过手法误判为通用缺陷。对于 SameSite=None 的显式设置,需注意现代浏览器对 Secure 属性的强制要求。
使用场景
- 渗透测试时需验证接口是否只校验自定义请求头,确认 JSON CSRF 能否跨域利用
- 审计无 token 的 REST API 时,排查能否通过跨域简单请求绕过 CSRF 防护
- 分析登录流程的 SameSite 配置时,确认 Lax 模式下顶层 POST 是否存在伪造窗口
- 已发现站点存在 XSS 漏洞,需要评估 CSRF 串联利用以受害者身份提交敏感操作
适合人员
- 渗透测试工程师,需要在黑盒测试中快速验证各端点的 CSRF 防护是否有效
- Web 应用开发者,需要在上线前审计接口的 SameSite 与 token 校验实现
- 红队成员,需要在实战中寻找 SameSite 边界与无 token 站点的绕过路径
- 安全审计顾问,需要为客户检测 CSRF 配置缺陷并给出修复建议