一、CSRF(跨站请求伪造)攻击全解
攻击原理示意图
受害者浏览器
├── 已登录银行网站(Cookie存活)
└── 访问恶意网站执行:<img src="http://bank.com/transfer?to=hacker&amount=1000000">
核心技术要点
-
信任滥用机制:
- 利用浏览器自动携带Cookie的特性,伪造已认证用户的HTTP请求(GET/POST均可)
- 经典攻击链:
诱导点击 → 携带身份Cookie → 执行敏感操作
-
绕过同源策略的技巧:
<!-- 表单自动提交 --> <form action="http://api/password/change" method="POST"><input type="hidden" name="new_password" value="hacked"> </form> <script>document.forms[0].submit();</script>
-
高级攻击变种:
- JSON CSRF:通过
<script>
标签触发JSONP接口 - CORS滥用:利用宽松的CORS配置发送跨域请求
- JSON CSRF:通过
二、SSRF(服务端请求伪造)攻击深潜
内网渗透典型场景
攻击者 --> 可控服务器请求参数(如URL=xxx)↓云服务器元数据(http://169.254.169.254/latest/meta-data)↓获取临时密钥 → 接管云主机
协议利用与绕过技巧
协议 | 攻击用途 | 示例Payload |
---|---|---|
file:// | 读取服务器本地文件 | url=file:///etc/passwd |
dict:// | 端口扫描与服务指纹识别 | url=dict://127.0.0.1:6379/info |
gopher:// | 构造任意TCP协议包 | 发送Redis未授权访问指令 |
云环境SSRF自动化工具
# 使用SSRFmap进行自动化探测
python3 ssrfmap.py -r data.txt -p url -m cloud
三、双S攻击核心差异对照表
维度 | CSRF | SSRF |
---|---|---|
攻击媒介 | 利用用户浏览器 | 利用服务端网络权限 |
目标系统 | 第三方Web应用 | 服务器所在内网/云环境 |
数据流向 | 客户端 → 目标站点 | 服务端 → 内部系统 |
检测工具 | Burp Suite CSRF PoC Generator | Gopherus + Wireshark |
四、企业级防御方案
CSRF立体化防御
-
令牌动态化(Spring Security示例)
// 生成Token String csrfToken = UUID.randomUUID().toString(); request.getSession().setAttribute("csrfToken", csrfToken);// 验证Token if (!request.getParameter("csrfToken").equals(session.getAttribute("csrfToken"))) {throw new CsrfException(); }
-
SameSite Cookie策略(Nginx配置)
add_header Set-Cookie "JSESSIONID=xxx; Path=/; Secure; SameSite=Strict";
-
关键操作二次验证
- 敏感操作(如转账)强制要求短信/邮箱验证
SSRF深度防御体系
-
请求链路上锁(Java白名单校验)
private static final Pattern DOMAIN_WHITELIST = Pattern.compile("^(https?://)(image\.example\.com|cdn\.safe\.net)");if (!DOMAIN_WHITELIST.matcher(url).matches()) {throw new SSRFException("非法域名请求"); }
-
协议与端口管控(Linux防火墙策略)
# 禁止服务器出站访问内网段 iptables -A OUTPUT -d 10.0.0.0/8 -j DROP iptables -A OUTPUT -d 172.16.0.0/12 -j DROP
-
云环境加固方案
- 禁用EC2元数据接口的公共访问(AWS示例)
aws ec2 modify-instance-metadata-options --instance-id i-1234567890abcdef0 --http-tokens required
五、攻防演练实战案例
CSRF钓鱼攻击复现
-
使用Burp Suite生成钓鱼页面:
Pro → Generate CSRF PoC → 自动生成含隐藏表单的HTML
-
诱导用户点击后,观察后台权限变更日志
SSRF内网Redis攻防
-
构造Gopher协议攻击包:
# 使用Gopherus生成Redis未授权访问Payload ./gopherus.py --exploit redis
-
通过SSRF漏洞执行
flushall
等危险指令
六、防御效果验证工具
工具名称 | 用途 | 使用场景 |
---|---|---|
CSRF Tester | 浏览器插件自动检测CSRF漏洞 | 研发自测阶段快速验证 |
SSRF Sheriff | 自动化模糊测试SSRF潜在点 | 上线前安全扫描 |