portswigger_CSRF

本文深入探讨了CSRF(跨站请求伪造)攻击的原理和影响,包括如何构造CSRF攻击、利用方式以及不同类型的CSRF漏洞。同时,讲解了CSRFToken作为防御手段的作用和常见问题,如Token的生成、传输与验证。此外,还介绍了SameSite cookie属性在防止CSRF中的角色。通过对各种实验室场景的分析,展示了CSRF漏洞的多样性和防御的复杂性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、cross-site request forgery

CSRF

1. 影响

  • 更改用户信息
  • 资金转移等

2. CSRF工作

  1. 用户处理特权相关的工作; 更改信息,权限
  2. 是基于cookie的会话,仅依靠cookie来确定是用户提出的,没其他验证比如token、refer
  3. 没有不可预测的请求参数;如更改密码时 攻击者不知道现有密码则无效

3. 构造CSRF

  • 攻击者可以构造一个HTML
  • 诱导用户访问
  • 此时用户是登陆的状态
  • 浏览器将包含cookie触发http请求
  • 可以用burp插件CSRF POC生成html代码
lab1: 无限制的CSRF
  • 登录用户
  • 带开代理不拦截 更改邮箱
  • 在历史记录里POST 302 发送到插件
  • option选择auto-submit
  • 把生成的html代码放入sever
  • 在这里插入图片描述
  • 转到这个url,看到账户的邮箱已经被更改
  • 在这里插入图片描述在这里插入图片描述

4. 如何利用

img会自动向src属性指定的域名发出请求,有的应用程序允许通过发送GET请求修改邮箱地址,所以我们可以将src设置为带有GET参数的CSRF URL,当加载该img时即会触发CSRF。

<img src="https://vulnerable-website.com/email/change?email=pwned@evil-user.net">

5. XSS 和 CSRF

  • XSS :可以允许攻击者在 用户浏览器执行任意JS脚本
  • CSRF:诱导用户执行用户本来无意执行的操作更改信息等
  • XSS危害更大,XSS可以将结果发送到远程服务器接收
  • CSRF只能发送请求,执行没有实施CSRF防护的功能

6. CSRF Token可以用来缓解XSS吗?

Token暴力破解是不现实的
无效的token会被服务器拒绝请求
不能缓解存储型XSS攻击

7. CSRF token

是什么

唯一的不可预测的字符串
如果失效,请求将被拒绝

怎样生成

高强度的伪随机数生成器(PRNG)
时间戳
随机数和用户个人信息组合,在整体做哈希处理

CSRF token怎样传输

一般服务器通过隐藏字段传输给客户端
在提交表单的时候自动加进去

怎样验证

在服务器简历CSRF token与用户会话绑定关系
接收请求的时候进行token与会话的验证
不匹配就拒绝请求

8. Same Site cookie

what

cookie字段的一个属性
用于定义跨站请求的提交方式,以防止浏览器对于任意来源的请求都自动填充cookie

SameSite=Strict

浏览器将不会对第三方网站自动填充cookie,但是有一个缺点就是普通用户需要重新登录一次

SameSite=Lax

当SameSite被设置成这个值时,浏览器虽然会自动填充cookie,但是有两个条件

  • 请求方法为GET(除此之外的方法不会自动填充)
  • 请求来自顶级框架(除此之外的请求不会自动填充)

二、CSRF Token漏洞类型

lab2:依赖请求方法的CSRF Token
  • 登录账户修改邮件
  • 在历史中看到POST包发到repeater
  • 把token删了,看到相应400

在这里插入图片描述
在这里插入图片描述

  • 把GET改成POST,发现不需要token了
    在这里插入图片描述
  • GET的请求包生成HTML发给用户
    在这里插入图片描述
lab3: CSRF Token取决于是否存在CSRF验证

being present

某些应用程序在存在时正确验证令牌,但如果省略令牌,则会跳过验证。

在这种情况下,攻击者可以删除包含令牌(不仅仅是其值)的整个参数,以绕过验证并提供CSRF攻击
简单粗暴了属于是

  • 和上述实验一样
  • 删掉Token看看响应包
  • 然后生成html发给用户
    在这里插入图片描述
lab4:CSRF Token 未与用户会话绑定

有的应用系统仅会验证CSRF Token的有效性,而不会验证该Token是否属于当前用户,即不会与用户会话绑定

  • 用wiener登录改邮箱时抓包记录token
  • drop掉!!
imZo2jRg3KsvzrRqw5LisNQzXs6m8bbF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值