CSRF攻击技术浅析
字数 1350 2025-08-19 12:42:02

CSRF攻击技术详解

1. CSRF概述

CSRF(Cross-site request forgery)跨站请求伪造,是一种由客户端发起的攻击方式,它劫持受信任用户向服务器发送非预期请求。与XSS相似但更难防范,常与XSS配合使用进行攻击。

2. 攻击原理

攻击者盗用用户身份,以用户名义发送恶意请求。服务器认为这是合法用户发起的请求,从而执行攻击者期望的操作。

3. 攻击危害

  • 修改用户信息
  • 修改密码
  • 以用户名义发送邮件/消息
  • 盗取用户账号
  • 执行其他恶意操作

4. 攻击必要条件

  1. 用户已登录存在CSRF漏洞的网站
  2. 用户被诱导打开攻击者构造的恶意网站

5. 攻击过程详解

  1. 用户访问受信任网站Web A并登录
  2. Web A返回Cookie给浏览器
  3. 用户在同一浏览器打开新标签页访问恶意网站Web B
  4. Web B返回攻击代码并发起对Web A的请求
  5. 浏览器自动携带Cookie访问Web A
  6. Web A误认为是合法请求,执行恶意操作

6. 漏洞成因

主要原因:浏览器Cookie不过期,不关闭浏览器或退出登录,都会默认为已登录状态

次要原因:服务器对请求合法性验证不严格

7. 漏洞检测方法

  1. 抓取正常请求数据包
  2. 检查是否存在token验证
  3. 去掉Referer字段重新提交
  4. 如果服务器返回正常页面,则存在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属性等多种技术,同时考虑用户体验与安全性的平衡。

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级别攻击 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属性等多种技术,同时考虑用户体验与安全性的平衡。