CSRF漏洞原理介绍与实例分析

时间:2024-04-09 17:23:52

CSRF漏洞介绍

CSRF为跨站请求伪造,是一种对网站的恶意利用,通过伪装成受信任用户请求受信任网站。

CSRF漏洞原理

攻击者利用目标用户的身份,以目标用户的名义执行非法操作。CSRF能做的事情包括:以目标用户的名义发送邮件、发消息、盗取目标用户的账号等等操作。

具体过程如下:
1、用户打开浏览器,访问受信任网站,输入用户名和密码请求登录网站A
2、通过用户验证后,网站A产生cookie并返回给浏览器,此时用户登录网站A成功,可以正常的对网站A发送请求
3、用户未退出网站A之前,在同一浏览器方位攻击者构造的恶意网站B。网站B收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问网站A
4、浏览器在接收这些攻击代码之后,由于用户cookie保存在浏览器中,根据恶意代码的请求,在用户不知情的情况下向网站A发起一些危险操作,网站A并不知道请求是B发起的,所以会根据用户的cookie信息来执行这些危险操作。

CSRF漏洞利用

我们用DVWA靶场来实现CSRF攻击
这是一个修改密码的页面
CSRF漏洞原理介绍与实例分析
我们对正常的修改密码操作进行拦包
CSRF漏洞原理介绍与实例分析
我们可以看到这个是一个get请求,新密码通过get传参,那么我们可以尝试构造一个恶意攻击页面来,使其将密码修改成我们需要的密码

CSRF漏洞原理介绍与实例分析
CSRF漏洞原理介绍与实例分析
这样我们就构造出恶意攻击页面,将这个代码复制,然后写入页面,将其放在公网上,让用户点击这个页面就会执行更改密码的操作。
CSRF漏洞原理介绍与实例分析
如果用户在同一个浏览器访问这个页面且点击了这个按钮,那么密码就会被更改
CSRF漏洞原理介绍与实例分析
点击一下就成功将密码更改。

CSRF漏洞的检测

最简单的方法就是抓取一个正常的数据请求包,去掉referer字段后在提交,如果提交还有效,那么基本上可以确定存在CSRF 漏洞

CSRF漏洞的防御

验证referer字段
referer字段记录了请求的来源地址。如果referer是以自己的网站开头的域名,则说明该请求来自网站自己,是合法的。如果referer是空白的或者其他网站的域名,说明就有CSRF攻击,那么服务器应该拒绝这个请求

添加token验证
在http请求中以参数的形式产生一个随机的token,并在服务器建立一个拦截器来验证这个token,如果没有token或者token不正确,那么可以拒绝这个请求。这种方法要比referer更简单一些,token可以在用户登录之后产生并放于session之中,后在每次请求时把token从seesion中拿走,并与请求中的token进行比对。

验证码
每次用户在进行操作时需填写验证码