安全矩阵

 找回密码
 立即注册
搜索
查看: 2699|回复: 0

网站如何防止CSRF攻击

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-11-19 10:11:46 | 显示全部楼层 |阅读模式
原文链接:网站如何防止CSRF攻击

### CSRF(跨站请求伪造)概述
– Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景
中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标
用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF
攻击也称为"one click"攻击。很多人搞不清楚CSRF的概念,甚至有时候
会将其和XSS混淆,更有甚者会将其和越权问题混为一谈,这都是对原理没
搞清楚导致的。
– CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。
– 因此,网站如果要防止CSRF攻击,则需要对敏感信息的操作实施对
应的安全措施,防止这些操作出现被伪造的情况,从而导致CSRF。比如:
1. 对敏感信息的操作增加安全的token;
2. 对敏感信息的操作增加安全的验证码;
3. 对敏感信息的操作实施安全的逻辑流程,比如修改密码时需要
先校验旧密码等。
CSRF的实现过程:

接下来实际在靶场当中实践一下:
CSRF(get)1.先点一下提示

找到有哪些用户2.登录vince

3.修改个人信息,burp抓包
4.生成csrf poc
copy html放到网站目录下(先建txt,粘贴后改后缀为html)

5.登录kevin用户,然后访问csrf poc

访问后点击,发现kevin用户信息已经被更改

到这就实际体验了文章开头的csrf 流程
顺带提一下渗透测试中两个常见的名词:POC:全称 ' Proof of Concept ',中文 ' 概念验证 ' ,常指一段漏洞证明的代码。EXP:全称 ' Exploit ',中文 ' 利用 ',指利用系统漏洞进行攻击的动作。
CSRF(post)先对比着看一下get和post的数据包区别:

get:

post:
可以看到:
GET请求参数是通过URL传递的,多个参数以&连接,POST请求放在request body中。
1.接着上面抓到的post数据包,生成csrf poc

2.copy html放到网站目录下
3.登录lili用户

初始用户信息

4.不退出用户,直接访问csrf poc
点击后发现用户信息已被修改
CSRF(token)先抓包看看数据包有何不同

试试csrf能否实现
1.登录lili

原始用户信息

2.访问csrf poc


不能实现csrf,增加了token验证机制,无法绕过
总结:CSRF广义上存在于任何增删改操作中,根据经验常见的有:1)冒充身份:订阅/关注/转发/投票操作,删除文件,更改配置等2)帐户接管:密码修改,邮箱绑定,第三方帐户关联3)其他:登录/注册/注销/注册4)安全设计原则:CSRF登录后令牌未更新、登出后未注销等
漏洞防御:

1) 验证header字段
常见的是Referer和Origin,Referer容易绕过,且会包含有一些敏感信息,可能会侵犯用户的隐私,而Origin字段代表最初请求,更建议使用。
2) Token令牌机制
当前最成熟的防御机制,但若存在验证逻辑及配置问题则存在绕过风险。Token的生成机制通常和session标识符挂钩,将用户的token与session标识符在服务端进行匹配当下已经有很多开源库和中间件都可以实现token生成。
3) 验证自定义header
如基于cookie的csrf保护,验证cookie中的某些值和参数必须相等


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2025-4-22 23:16 , Processed in 0.015961 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表