一、CSRF(Cross-Site Request Forgery)
1. 定义
-
攻击目标:利用用户已登录的合法身份,在用户不知情的情况下发起恶意请求。
-
核心条件:受害者需已登录目标系统,且浏览器会自动携带身份凭证(如 Cookie)。
2. 攻击流程
-
用户登录可信网站 A,Cookie 保存在浏览器。
-
用户访问恶意网站 B,B 诱导用户点击链接或加载资源。
-
恶意网站 B 触发对网站 A 的请求(自动携带用户 Cookie)。
-
网站 A 误认为请求来自用户本人,执行操作(如转账、改密)。
3. 攻击类型
-
GET 型:通过
<img src="恶意URL">
自动触发请求。 -
POST 型:通过隐藏表单 + JavaScript 自动提交。
-
其他方法:如 JSON CSRF(需 CORS 配置错误配合)。
4. 防御方案
-
Token 验证:请求中携带随机 Token,服务端校验合法性。
-
SameSite Cookie:设置 Cookie 的
SameSite
属性为Strict
或Lax
。 -
验证 Referer:检查请求来源是否合法(注意隐私和误判问题)。
-
二次确认:敏感操作需用户再次输入密码或验证码。
二、SSRF(Server-Side Request Forgery)
1. 定义
-
攻击目标:利用服务端发起未授权的内部或外部请求,探测或攻击内网资源。
-
常见触发点:URL 参数处理(如图片加载、网页代理、Webhook 回调等)。
2. 攻击类型
-
基本 SSRF:通过
http://
、https://
协议访问内网资源。 -
高级 SSRF:
-
利用
file://
协议读取本地文件。 -
利用
dict://
、gopher://
协议与 Redis、MySQL 等交互。 -
绕过黑名单(如 IP 编码、域名重定向)。
-
3. 攻击场景
-
访问云服务器元数据(如 AWS/Aliyun 的
169.254.169.254
)。 -
扫描内网端口和服务(如 Redis 未授权访问)。
-
攻击本地应用(如
http://127.0.0.1:8080/admin
)。
4. 防御方案
-
输入校验:禁止用户控制请求的协议、IP 或域名。
-
白名单机制:仅允许访问预设的合法域名。
-
禁用危险协议:如
file://
、gopher://
。 -
网络隔离:限制服务器出站流量,避免访问内网敏感服务。
三、CSRF vs SSRF 对比
特性 | CSRF | SSRF |
---|---|---|
攻击方向 | 用户 → 可信网站 | 服务器 → 内网/外部资源 |
依赖条件 | 用户已登录且会话有效 | 服务端存在未过滤的请求参数 |
利用场景 | 修改用户数据、执行操作 | 探测内网、读取敏感数据 |
防御重点 | 身份验证机制 | 输入校验与网络隔离 |
四、实战技巧
1. CSRF 检测
-
检查敏感操作是否缺少 Token 或 Referer 验证。
-
使用 Burp Suite 生成 CSRF PoC 模板测试。
2. SSRF 利用
-
尝试协议转换(如
http://127.0.0.1:80
→0x7f000001
)。 -
利用 DNS Rebinding 绕过 IP 限制。
-
工具推荐:
SSRFmap
、Gopherus
。
3. 注意事项
-
SSRF 可能结合其他漏洞(如 Redis 未授权写入 SSH 密钥)。
-
合法授权测试,避免攻击非目标系统。
五、学习资源
-
CSRF:
-
OWASP CSRF 指南:Cross Site Request Forgery (CSRF) | OWASP Foundation
-
PortSwigger CSRF 实验:What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy
-
-
SSRF:
-
SSRF 漏洞详解:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Request%20Forgery
-
云厂商元数据泄露案例:AWS/Aliyun/GCP 元数据 API 文档
-