用途
hunt-csrf 是一个专注于 CSRF(跨站请求伪造)漏洞挖掘的安全测试技能,属于 elementalsouls/claude-bughunter 项目。它基于 15 份公开漏洞赏金报告构建,包含现代变体,例如 SameSite=Lax 的同级子域绕过(Argo CD 等)。该技能面向授权范围内的漏洞赏金与安全评估,帮助测试者系统化地发现和验证 CSRF 漏洞。
主要能力
该技能覆盖以下核心能力:
- 状态变更端点测绘:爬取已认证会话,筛选 POST/PUT/DELETE/PATCH 请求,记录所有表单和 AJAX 调用。
- Cookie SameSite 属性检查:在 DevTools 中检查会话 Cookie 是否缺少 SameSite=Strict 或 Lax。
- CSRF 令牌测试:测试令牌的静态性(同一会话不同页面加载、不同会话、不同用户之间是否复用)、省略令牌字段、替换为其他会话的令牌。
- JSON 端点 CSRF 检测:检查服务器是否强制 Content-Type,尝试用 application/x-www-form-urlencoded 或 text/plain 发送 JSON 体。
- OAuth/SSO RelayState 挖掘:拦截 SAML/OIDC 流程,测试 RelayState 是否校验同源,注入外部 URL。
- 社交账号绑定流程测试:针对“连接你的 X 账号”功能,测试回调中的 CSRF 是否可关联攻击者社交账号。
- 第三方面板测试:检查子域上的 Grafana、Kibana、Prometheus 等,核对版本并应用已知 CVE。
- PoC 构建:提供基础表单 POST PoC 和 text/plain JSON CSRF PoC 的 HTML 示例。
- curl 测试命令:提供令牌省略、跨会话令牌复用等测试命令。
- grep 侦察模式:用于查找 CSRF 令牌字段、无令牌表单、SameSite 响应头、RelayState 参数。
使用方式
技能给出了自主测试优先级和分步方法论:
- GET 表单端点建立基线,检查隐藏的 csrf_token、authenticity_token、_token、csrfmiddlewaretoken 字段。
- POST 状态变更动作,不带任何 CSRF 令牌字段,只发送功能参数。
- 使用“简单请求”Content-Type:application/x-www-form-urlencoded、multipart/form-data 或 text/plain。JSON 端点只有在服务器拒绝这些类型时才具备 CSRF 抵抗力。
- 如果动作成功(2xx,无“invalid token”错误),则确认 CSRF。
技能还强调一个捷径:原始 HTTP 客户端(curl、Burp Repeater 等)不是浏览器,可以设置任意 Origin/Referer 头值,许多应用只做简单的字符串检查,因此可以直接设置头部满足检查,无需构建真实跨站页面。只有当目标执行真正的 SameSite/fetch 同源强制时,才需要构建真实跨站页面。
适用场景
高价值目标按影响排序包括:邮箱/密码修改(账户接管)、资金转账或支付(金融欺诈)、管理员操作(角色分配、用户删除)、OAuth 社交账号绑定(持久 ATO)。资产类型中回报最高的是:核心产品认证流程 > API 网关 > 子域上的第三方集成 > 管理面板。
技能明确范围:不要在登录表单(无现有会话可利用)、登出(无实际影响)或只读 GET 端点上测试 CSRF。
限制
该技能仅适用于授权范围内的安全测试。技能中提到的具体 CVE(如 Grafana CVE-2022-21703、Argo CD CVE-2024-22424)和漏洞报告编号均为资料中给出的历史案例,实际测试时需自行核实目标版本与授权状态。技能未提供自动化工具或脚本,所有测试需手动执行或自行编写脚本。