【web安全】CSRF漏洞攻击与防御
前言
总结,仅供学习。
csrf的理解
我们了解一个网站有修改信息,密码,添加删除管理,支付转账的功能之后。
通过抓包抓取对方修改操作的数据包样式,
然后在自己网站搭建一个指令。
当别人来访时,
如果正好打开着目标网站,就发送修改信息的数据包,从而实现被修改信息。
简而言之就是用目标的名义去发送数据包
csrf目前的存在情况
大型网站一般都是有防护的。
小中型的网站后台常有。
但是中小型网站,信息价值确实也就那样。。。。
csrf的前提条件
登录要修改信息的网站。
在不退出该网站的同时,再登录攻击网站。
(所以条件还是蛮苛刻的,不是太好用)
csrf的判断
可以自己创建个号来测试一下有没有该漏洞。
csrf与xss的区别
csrf与xss很多人会混淆
xss是在目标网站上写入javascript语句,盗取他的cookie然后登录自己改他的东西。
csrf是在不登陆的形况下,让他自己发送数据包改他自己的东西。
get型csrf入侵案例
本处用的是pikachu的靶场进行演示。
这里假设目标人物叫做kobe,我的名字叫做lili
kobe被黑需要做的
首先第一点,目标要登录网站。
目标登录网站,获取了cookie。
因为,我们想要修改信息,转账支付添加管员等操作都是需要cookie的,所以本处必须要目标登录网址。
接下来是lili需要做的。
我们先要搞清楚这个修改信息是发送的什么样的数据包。
先改一下信息查看数据包
我们抓取数据包,看到这个标识部分是他修改的方式,他通过get的形式发送的修改数据包。
也就是说,lili如果想要改kobe的个人信息,lili要让kobe自己发送修改自己信息的数据包。
那么lili需要搭建一个网站,让kobe访问这个网站的时候,自动向目标网站发送这个数据包。
lili搭建网站的过程
如果没有服务器,自己用自己的phpstudy搭建也可以。
我们自己建一个网站,在网站中创建这个文件。
这时我们用我们自己的账号结合burp抓一下修改我们信息的包
右键burp找到这个按钮,按下去。
这个界面就可以生成我们csrf的攻击代码。
我们在url中修改想要修改的kobe的数据然后点左下角按钮刷新后复制这些代码。放入我们网站的文件中。
我们做好网站后发给kobe等他来访问。
kobe视角
kobe登录着记录自己信息的网站,忽然发现lili发给他了一个网站,一点开发现一个按钮
其实这个是burp默认的,你完全可以改变成自己想要的形式。
这时kobe点击了按钮
瞬间发现自己的信息被人恶搞了
气不打一处来,于是线下单杀了lili。
是的有点繁琐的利用方式。
防御方法
1、当用户发送重要的请求时需要输入原始密码
2、设置随机Token
3、检验referer来源,请求时判断请求链接是否为当前管理员正在使用的页面(管理员在编辑文章,黑客发来恶意的修改密码链接,因为修改密码页面管理员并没有在操作,所以攻击失败)
(但是referer可以被篡改)
4、设置验证码
5、限制请求方式只能为POST
最好用的是token。
token是每次用户更改信息时,后台产生一个随机编号,仅当数据包与后台的编号一直时,才会允许更改,kobe这次更改信息就是这个编号,下次就更改数据包就会变化,所以我们用上次的数据就无法更改了。
类似这个
可以看到数据包多了一行编码。