CSRF:跨站请求伪造

CSRF攻击是由用户端发起请求,攻击者利用用户的Cookie信息伪造用户请求发送至服务器。这种攻击不是出自用户之手,而是通过第三方恶意攻击者的处理,伪装成受信任用户的行为。CSRF攻击的目的是获取用户cookie等信息,以达到身份伪装的目的。

csrf漏洞的成因就是网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录那以后只要是访问这个网站,都会默认你已经登录的状态。而在这个期间,攻击者发送了构造好的csrf脚本或包含csrf脚本的链接,可能会执行一些用户不想做的功能(比如是添加账号等)。这个操作不是用户真正想要执行的。

防御CSRF的方法包括: 

  1. 验证HTTP请求的Referer头部,以确保请求是从可信的源发起;

  2. 使用SameSite Cookie属性,限制Cookie在跨站请求中的发送;

  3. 在Ajax请求中使用自定义HTTP头,增加安全性;

  4. 避免GET请求进行状态改变,对于任何改变状态的操作,应使用POST请求而不是GET请求。

根据请求分为了:get类型csrf,post类型csrf

1. GET型csrf
GET类型的CSRF利用非常简单,只需要一个
HTTP请求,一般会这样利用:
<img
src="http://bank.example/withdraw?amount=10000&for=hacker">

2.POST型csrf
这种类型的CSRF利用起来通常使用的是一个自
动提交的表单,如:
<form action="http://bank.example/withdraw" method=POST>
<input type="hidden" name="account" value="xiaoming" />//name为参数 value为参数的值
<input type="hidden" name="amount" value="10000" />
<input type="hidden" name="for" value="hacker" />
</form>
<script> document.forms[0].submit(); </script>//自动提交表单

如何测试csrf漏洞

手工测试

若本次操作中存在csrf token参数,或存在验证码等防御行为,则不存在csrf漏洞。若将数据包中的referer字段去掉,或仅仅删除referer字段的值,重新发送得到服务器的正确受理,那么可认为存在csrf漏洞。简单来说就是在抓包时删掉字段还能运行就有CSRF漏洞

漏洞复现

先用BP抓包,右键点击生成CSRFpoc

建新文件将poc复制然后打开网页

点击之后发生改变了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值