csrf漏洞

学习自农夫安全201-A6



定义

利用受害者尚未失效的身份认证信息(cookie…),诱骗其点击恶意链接或包含攻击代码的页面,在受害者不知道的情况下,悄咪咪的用他的身份向服务器发送恶意请求,对受害人造成损失。
在这里插入图片描述

攻击方式

1、URL
2、build website payload

如何防御

1、在服务端验证http请求中的refer,防止来自不可信网站的请求被服务器接收并返回数据。
2、用户首次访问的时候,服务器端返回一个随机的token存储在客户机,下次用户访问时需要带上token,服务端在验证通过后再执行

refer是什么
浏览器在向 web 服务器发送一个 http 请求的时候,服务器会把 http 的请求包装成一个 request 对象,在这些请求里面就包括 referer,它的意思是要告诉服务器,该请求来自哪里。比如在一个网页里面插入一个超链接,链接到其他的网页,那么当点击这个超链接从而链接到另外一个页面的时候,相当于浏览器向 web 服务器发送了一个 http 请求,对于另外一个页面而言,这个 referer 就是上一个页面的 URL,而对于从地址栏里面直接输入 URL 或者是刷新网页的方式,则 referer = null。

绕过防御

以DVWA为例
1、low等级为Medium时候,观察源码
在这里插入图片描述
这里检查了HTTP_REFERER,通过函数stripos检查HTTP_REFERER是否包含SERVER_NAME,即检查refer字段是否包含主机名。

如何绕过?
1、我们可以在再建立恶意网站的时候将其取名为主机名,则当用户被诱使点击发送数据包时,refer字段为

http://xxx.com(我们创建的恶意网站)/文件名.html

由于文件名就是主机名,服务器后端将其匹配为主机名,返回true,然后执行恶意请求。

2、可以通过更改域名在我们建立的恶意网站的下面建立目标主机的子域名,例目标主机的域名a.com,我们可以将恶意网站的域名改为a.com.b.com,这样产生的refer字段为

http://a.com.b.com/文件名.html

burpsuite自动生成payload

在这里插入图片描述

问题

经典面试题:xss(跨站脚本攻击)和csrf漏洞的区别?
xss攻击的对象是浏览器,而csrf攻击的是未失效的用户会话。

csrf漏洞产生的原因?
请求包可预测。

安全角度考虑,token能存放在cookie中吗?
不能,csrf漏洞利用的就是浏览器发出请求的时候会自动带上cookie,劫持cookie。当设置了token,就是因为token不会被浏览器自动拼接,不会被劫持,如果token放在了cookie中,则会被浏览器发出请求的时候自动拼接,那么token会失去原本的作用。

session一定要设定失效期才是最好的、最安全的吗?
不是,需要结合具体的业务场景,比如手机qq长时间不访问点击之后依然可以直接登录,若设定过短的失效期,则每次点击都需要输入用户名和密码,操作过于冗余。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值