这里写自定义目录标题
一、cross-site request forgery
CSRF
1. 影响
- 更改用户信息
- 资金转移等
2. CSRF工作
- 用户处理特权相关的工作; 更改信息,权限
- 是基于cookie的会话,仅依靠cookie来确定是用户提出的,没其他验证比如token、refer
- 没有不可预测的请求参数;如更改密码时 攻击者不知道现有密码则无效
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
- 登