Web安全系列 -- Csrf漏洞
字数 1506 2025-08-29 08:31:53
CSRF漏洞详解与防御
1. CSRF漏洞概述
CSRF (Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或Session Riding,通常缩写为CSRF或XSRF。
1.1 与XSS的区别
- XSS:利用站点内的信任用户,在用户浏览器中执行恶意脚本
- CSRF:通过伪装来自受信任用户的请求来利用受信任的网站
1.2 危险性
CSRF攻击被认为比XSS更具危险性,原因包括:
- 防范资源相对稀少
- 防御难度较大
- 攻击效果直接
2. CSRF漏洞原理
2.1 成因
- 网站的cookie在浏览器中不会过期
- 只要不关闭浏览器或退出登录,访问网站时都会保持登录状态
- 攻击者发送构造好的CSRF脚本或包含CSRF脚本的链接
- 可能执行用户不想做的操作(如添加账号等)
2.2 攻击依赖条件
- 攻击者了解受害者所在的站点
- 目标站点具有持久化授权cookie或受害者具有当前会话cookie
- 目标站点没有对用户在网站行为的第二授权
3. CSRF攻击危害
攻击者盗用用户身份,以用户名义发送恶意请求,可导致:
- 以用户名义发送邮件、发消息
- 盗取用户账号
- 购买商品
- 虚拟货币转账
- 个人隐私泄露
- 财产安全问题
4. CSRF攻击示例
4.1 基本攻击流程
- 找到目标站点(示例中使用WordPress环境)
- 在用户管理界面测试(如添加用户功能)
- 使用Burp Suite截取请求
- 利用Burp的CSRF插件生成CSRF.html文件
- 修改关键值(如用户名)避免重复
- 在浏览器中执行,验证攻击效果
4.2 高级攻击:结合XSS
- 了解发送的数据包内容
- 使用XSS平台创建CSRF项目
- 编写恶意代码并存入目标站点(通过存储型XSS漏洞)
- 当管理员查看留言时执行危险代码
- 自动发送添加用户的请求
5. CSRF攻击工具
5.1 Burp Suite
- 截断数据包
- 构造CSRF漏洞PoC
- 简单方便的工具
5.2 CSRFTester-1.0
- 专门针对CSRF漏洞
- 可构造多种样式的PoC
- 使用方法:
- 双击bat文件运行
- 设置浏览器8008代理
- 点击start获取通过的数据包
- 在最下方构造需要的PoC加以利用
6. CSRF攻击技术细节
6.1 攻击方式
- 利用IMG标签触发GET请求
- 欺骗用户浏览器发送HTTP请求给目标站点
- 利用网站对用户标识的信任
6.2 常见攻击场景
- 银行转账操作
- 用户权限修改
- 表单提交操作
- 社交网络中的状态更新
- 电子商务中的购买操作
7. CSRF防御措施
7.1 服务器端防御
- 验证HTTP Referer字段:检查请求是否来自合法源
- 使用CSRF Token:
- 服务器生成随机Token
- 包含在表单或HTTP头中
- 每次请求验证Token有效性
- SameSite Cookie属性:
- 设置Cookie的SameSite属性为Strict或Lax
- 限制第三方上下文中的Cookie发送
- 双重验证:对敏感操作要求二次验证
7.2 客户端防御
- 避免自动提交表单
- 敏感操作后手动注销
- 使用浏览器扩展:如CSRF防护插件
8. 开发实践建议
- 对所有状态修改操作使用POST请求
- 实现CSRF Token机制
- 对敏感操作增加验证步骤
- 定期审计代码中的表单处理逻辑
- 使用安全框架提供的CSRF防护功能
9. 总结
CSRF攻击利用网站对用户浏览器的信任,通过伪装合法请求执行恶意操作。防御CSRF需要服务器和客户端的共同努力,核心在于验证请求的真实性和来源合法性。开发者应当将CSRF防护作为Web应用安全的基本要求,结合多种防御措施构建完整的安全体系。