CSRF攻击技术浅析
字数 1350 2025-08-19 12:42:02
CSRF攻击技术详解
1. CSRF概述
CSRF(Cross-site request forgery)跨站请求伪造,是一种由客户端发起的攻击方式,它劫持受信任用户向服务器发送非预期请求。与XSS相似但更难防范,常与XSS配合使用进行攻击。
2. 攻击原理
攻击者盗用用户身份,以用户名义发送恶意请求。服务器认为这是合法用户发起的请求,从而执行攻击者期望的操作。
3. 攻击危害
- 修改用户信息
- 修改密码
- 以用户名义发送邮件/消息
- 盗取用户账号
- 执行其他恶意操作
4. 攻击必要条件
- 用户已登录存在CSRF漏洞的网站
- 用户被诱导打开攻击者构造的恶意网站
5. 攻击过程详解
- 用户访问受信任网站Web A并登录
- Web A返回Cookie给浏览器
- 用户在同一浏览器打开新标签页访问恶意网站Web B
- Web B返回攻击代码并发起对Web A的请求
- 浏览器自动携带Cookie访问Web A
- Web A误认为是合法请求,执行恶意操作
6. 漏洞成因
主要原因:浏览器Cookie不过期,不关闭浏览器或退出登录,都会默认为已登录状态
次要原因:服务器对请求合法性验证不严格
7. 漏洞检测方法
- 抓取正常请求数据包
- 检查是否存在token验证
- 去掉Referer字段重新提交
- 如果服务器返回正常页面,则存在CSRF漏洞
8. 浏览器安全策略
8.1 同源策略
- 规定不同源的JavaScript脚本在没有授权情况下不能读写对象资源
- 同源定义:同协议、同域名、同端口
8.2 内容安全策略(CSP)
- 基于同源策略
- 允许服务器决定浏览器能加载哪些资源
- 限制任意下载第三方资源
8.3 跨域资源共享(CORS)
- 基于同源策略
- 服务器实现CORS接口后可跨源通信
- 关键在服务器端实现
8.4 Cookie策略
- Session Cookie:临时Cookie,不指定过期时间,浏览器关闭后失效
- Third-party-Cookie:本地Cookie,可指定过期时间,会保存在本地
9. 漏洞利用技术
9.1 通过HTML标签发送跨域请求
利用不受同源策略限制的标签(如img)发送请求:
9.2 DVWA-CSRF示例
Low级别攻击
<!DOCTYPE html>
<html>
<head>
<title>CSRF</title>
</head>
<h1>404<h1>
<h2>file not found.<h2>
<body>
</body>
</html>
Medium级别绕过
- 服务器检查Referer是否包含主机名
- 将攻击页面命名为127.0.0.1.html即可绕过
High级别攻击(需结合XSS)
- 服务器验证token
- 需要获取token值
- 需将攻击代码注入目标服务器
10. 防御措施
10.1 验证HTTP Referer字段
- 检查请求来源
- 可被伪造(XHR.setRequestHeader)
10.2 添加token验证
- 服务器生成唯一token
- 每次请求验证token
- 有效但增加服务器负担
10.3 使用验证码
- 强制用户交互
- 影响用户体验
10.4 设置Cookie的SameSite属性
- Strict:不允许附带在第三方请求中
- Lax:允许GET请求附带Cookie
11. 总结
CSRF攻击涉及多方面技术,包括:
- 浏览器安全策略机制
- CSRF与XSS配合攻击
- 跨域解决方案
- 多种防御措施的优缺点
防御CSRF需要综合使用token验证、SameSite属性等多种技术,同时考虑用户体验与安全性的平衡。