CSRF vs SSRF详解

一、CSRF(跨站请求伪造)攻击全解

攻击原理示意图

受害者浏览器
├── 已登录银行网站(Cookie存活)
└── 访问恶意网站执行:
    <img src="http://bank.com/transfer?to=hacker&amount=1000000">

核心技术要点

  1. 信任滥用机制

    • 利用浏览器自动携带Cookie的特性,伪造已认证用户的HTTP请求(GET/POST均可)
    • 经典攻击链:诱导点击 → 携带身份Cookie → 执行敏感操作
  2. 绕过同源策略的技巧

    <!-- 表单自动提交 -->
    <form action="http://api/password/change" method="POST">
      <input type="hidden" name="new_password" value="hacked">
    </form>
    <script>document.forms[0].submit();</script>
    
  3. 高级攻击变种

    • JSON CSRF:通过<script>标签触发JSONP接口
    • CORS滥用:利用宽松的CORS配置发送跨域请求

二、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攻击核心差异对照表
维度CSRFSSRF
攻击媒介利用用户浏览器利用服务端网络权限
目标系统第三方Web应用服务器所在内网/云环境
数据流向客户端 → 目标站点服务端 → 内部系统
检测工具Burp Suite CSRF PoC GeneratorGopherus + Wireshark

四、企业级防御方案

CSRF立体化防御

  1. 令牌动态化(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();
    }
    
  2. SameSite Cookie策略(Nginx配置)

    add_header Set-Cookie "JSESSIONID=xxx; Path=/; Secure; SameSite=Strict";
    
  3. 关键操作二次验证

    • 敏感操作(如转账)强制要求短信/邮箱验证

SSRF深度防御体系

  1. 请求链路上锁(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("非法域名请求");
    }
    
  2. 协议与端口管控(Linux防火墙策略)

    # 禁止服务器出站访问内网段
    iptables -A OUTPUT -d 10.0.0.0/8 -j DROP
    iptables -A OUTPUT -d 172.16.0.0/12 -j DROP
    
  3. 云环境加固方案

    • 禁用EC2元数据接口的公共访问(AWS示例)
    aws ec2 modify-instance-metadata-options --instance-id i-1234567890abcdef0 --http-tokens required
    

五、攻防演练实战案例

CSRF钓鱼攻击复现

  1. 使用Burp Suite生成钓鱼页面:

    Pro → Generate CSRF PoC → 自动生成含隐藏表单的HTML
    
  2. 诱导用户点击后,观察后台权限变更日志

SSRF内网Redis攻防

  1. 构造Gopher协议攻击包:

    # 使用Gopherus生成Redis未授权访问Payload
    ./gopherus.py --exploit redis
    
  2. 通过SSRF漏洞执行flushall等危险指令


六、防御效果验证工具
工具名称用途使用场景
CSRF Tester浏览器插件自动检测CSRF漏洞研发自测阶段快速验证
SSRF Sheriff自动化模糊测试SSRF潜在点上线前安全扫描

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豪门土狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值