Burp Token重放攻击实战指南:从原理到防御策略

1次阅读
没有评论

共计 1666 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

1. Token 安全基础与重放攻击原理

Token 在现代 Web 应用中常用于身份验证和防 CSRF 攻击。典型的场景包括:

  • 表单提交时的 CSRF Token
  • API 调用中的访问令牌(Access Token)
  • 支付流程中的一次性验证码

重放攻击 (Replay Attack) 指攻击者截获合法 Token 后,在有效期内重复使用该 Token 进行未授权操作。根据 OWASP 统计,这类攻击在 API 安全威胁中排名前五。

2. Burp Suite 重放攻击实战

2.1 测试环境准备

  1. 安装 Burp Suite Community/Professional 版
  2. 配置浏览器代理(通常 127.0.0.1:8080)
  3. 启用 Burp 的拦截功能(Proxy → Intercept on)

2.2 攻击步骤演示

  1. 捕获含 Token 的请求(如登录后的 API 调用)
  2. 在 Proxy → HTTP history 中找到目标请求
  3. 右键选择 ”Send to Repeater”
  4. 在 Repeater 模块修改参数后多次发送
  5. 观察服务器是否接受重复 Token

Burp Token 重放攻击实战指南:从原理到防御策略

3. 核心防御方案实现

3.1 时效性 Token 方案(Python 示例)

from datetime import datetime, timedelta
import secrets

TOKEN_STORE = {}

def generate_token(user_id):
    token = secrets.token_hex(16)
    expire_time = datetime.now() + timedelta(minutes=5)
    TOKEN_STORE[token] = {
        'user_id': user_id,
        'expire': expire_time
    }
    return token

def validate_token(token):
    if token not in TOKEN_STORE:
        return False

    record = TOKEN_STORE[token]
    if datetime.now() > record['expire']:
        del TOKEN_STORE[token]
        return False

    return True

3.2 会话绑定方案(Java 示例)

import javax.servlet.http.HttpSession;

public class TokenValidator {
    private static final String TOKEN_ATTR = "CSRF_TOKEN";

    public static String generateToken(HttpSession session) {String token = UUID.randomUUID().toString();
        session.setAttribute(TOKEN_ATTR, token);
        return token;
    }

    public static boolean validateToken(HttpSession session, String token) {String sessionToken = (String) session.getAttribute(TOKEN_ATTR);
        return token != null && token.equals(sessionToken);
    }
}

4. 避坑指南

4.1 常见错误配置

  • Token 未设置有效期或有效期过长(建议 5 -15 分钟)
  • 使用可预测的 Token 生成算法(如顺序 ID)
  • 未在服务端校验 Token 有效性
  • 将 Token 存储在 localStorage 等易受 XSS 攻击的位置

4.2 OWASP 推荐实践

  1. 遵循 PRG 模式(Post-Redirect-Get)
  2. 实施 SameSite Cookie 属性
  3. 关键操作添加二次认证
  4. 记录 Token 使用日志

5. 扩展思考

如何设计防重放的分布式 Token 系统?考虑以下因素:

  • 集群环境下的 Token 同步
  • Redis 等高速缓存的 TTL 设置
  • 微服务架构中的 Token 传递
  • 高并发场景的性能优化

总结

Token 重放攻击看似简单却危害巨大。通过 Burp Suite 等工具可以有效地测试系统脆弱性,而结合时效性验证和会话绑定能构建多层次防护。建议开发者定期进行安全审计,并关注 OWASP 的最新安全指南。

正文完
 0
评论(没有评论)