基础漏洞系列——CSRF跨站请求伪造
字数 1003 2025-08-15 21:32:35

CSRF跨站请求伪造漏洞详解与防御

1. CSRF基本概念

跨站请求伪造(Cross-site request forgery, CSRF/XSRF)是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

核心特征:

  • 利用网站对用户浏览器的信任
  • 不同于XSS(利用用户对网站的信任)
  • 攻击者无法直接获取用户账户控制权或信息
  • 欺骗用户浏览器以用户名义执行操作

2. CSRF攻击原理

典型攻击流程:

  1. 用户登录目标网站(如银行网站),会话保持
  2. 用户访问恶意网站或包含恶意代码的页面
  3. 恶意页面包含对目标网站的请求(自动或诱导点击)
  4. 浏览器携带用户的认证信息(如cookie)发送请求
  5. 目标网站误认为是用户合法操作而执行

漏洞示例:

银行转账URL:

http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName

恶意代码:


3. CSRF漏洞检测方法

检测步骤:

  1. 无token和referer验证检测

    • 提交请求时删除referer字段,如果不报错则可能存在CSRF
    • GET型构造恶意链接测试
    • POST型构造自动提交表单测试
  2. 仅有referer验证检测

    • 尝试空referer
    • 尝试域名伪造绕过(如验证bylibrary.cn时,使用bylibrary.cn.baidu.com
    • 在目标网站下发帖引导点击CSRF链接

4. CSRF漏洞利用技术

自动提交表单POC:

<html>
<head></head>
<body onload="form1.submit()">
  <form id="form1" method="post" action="http://example.com">
    <input type="hidden" name="sex" value="2" />
  </form>
</body>
</html>

实际利用案例(途虎养车):

  1. 修改个人信息时抓包
  2. 使用Burp的CSRF测试插件生成HTML文件
  3. 修改用户名为攻击值并保存为HTML
  4. 受害者访问该HTML页面即触发修改

5. CSRF防御措施

1. 检测Referer字段

  • 严格验证HTTP Referer头
  • 防止可绕过的简单验证

2. 添加Token校验

  • 使用伪随机token参数
  • 后端验证token有效性

Token验证原理:

  1. 服务器生成唯一token与用户会话关联
  2. Token随表单一起发送给客户端
  3. 用户提交表单时携带token
  4. 服务器验证token是否匹配当前会话

3. 其他防御措施:

  • 关键操作使用POST而非GET
  • 增加二次验证(如短信验证码)
  • 设置SameSite Cookie属性

6. 总结

CSRF是一种利用网站对用户浏览器信任的攻击方式,通过构造恶意请求让已认证用户在不知情的情况下执行非预期操作。有效防御需要结合Referer检查、Token验证等多种措施,关键业务操作应实施更严格的身份验证机制。

CSRF跨站请求伪造漏洞详解与防御 1. CSRF基本概念 跨站请求伪造 (Cross-site request forgery, CSRF/XSRF)是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 核心特征: 利用网站对用户浏览器的信任 不同于XSS(利用用户对网站的信任) 攻击者无法直接获取用户账户控制权或信息 欺骗用户浏览器以用户名义执行操作 2. CSRF攻击原理 典型攻击流程: 用户登录目标网站(如银行网站),会话保持 用户访问恶意网站或包含恶意代码的页面 恶意页面包含对目标网站的请求(自动或诱导点击) 浏览器携带用户的认证信息(如cookie)发送请求 目标网站误认为是用户合法操作而执行 漏洞示例: 银行转账URL: 恶意代码: 3. CSRF漏洞检测方法 检测步骤: 无token和referer验证检测 : 提交请求时删除referer字段,如果不报错则可能存在CSRF GET型构造恶意链接测试 POST型构造自动提交表单测试 仅有referer验证检测 : 尝试空referer 尝试域名伪造绕过(如验证 bylibrary.cn 时,使用 bylibrary.cn.baidu.com ) 在目标网站下发帖引导点击CSRF链接 4. CSRF漏洞利用技术 自动提交表单POC: 实际利用案例(途虎养车): 修改个人信息时抓包 使用Burp的CSRF测试插件生成HTML文件 修改用户名为攻击值并保存为HTML 受害者访问该HTML页面即触发修改 5. CSRF防御措施 1. 检测Referer字段 严格验证HTTP Referer头 防止可绕过的简单验证 2. 添加Token校验 使用伪随机token参数 后端验证token有效性 Token验证原理: 服务器生成唯一token与用户会话关联 Token随表单一起发送给客户端 用户提交表单时携带token 服务器验证token是否匹配当前会话 3. 其他防御措施: 关键操作使用POST而非GET 增加二次验证(如短信验证码) 设置SameSite Cookie属性 6. 总结 CSRF是一种利用网站对用户浏览器信任的攻击方式,通过构造恶意请求让已认证用户在不知情的情况下执行非预期操作。有效防御需要结合Referer检查、Token验证等多种措施,关键业务操作应实施更严格的身份验证机制。