DVWA系列---CSRF(Cross Site Request Forgery)跨站请求伪造

一、前言

1、CSRF简述

CSRF(Cross Site Request Forgery)名为“跨站请求伪造”,意思是黑客伪装成用户的身份,利用目标服务器对用户的信任(即用户已经登入,且存有Cookie)进行数据请求或数据更改,达到攻击的目的。

CSRF形成的原因:

1、用户在登陆了网站后,没有进行登出,此时访问黑客构造的恶意网页,就会携带自己登陆生成的Cookie访问恶意网页,执行黑客构造的非法请求;

2、服务器没有对用户的请求进行安全检测,比如没有设置请求来源(Referer)等,导致服务器正常处理了非法请求;

3、服务器虽设有Referer,但是并未进行严格检查。

例如:

傻白甜用户小黑,使用自己的账号密码登陆了网站 A,并在网站 A 上进行转账操作,假如转账完成后,没有登出该网站;

与此同时,黑客小毛构造一个网页,在网页中植入转账语句,点击后会自动执行转账操作,并从用户小黑的账户向小毛转账1万;

此时如果用户小黑点击该网页,那么就会携带自己的Cookie进行转账操作,由于携带该Cookie,因此对于服务器来说本次操作是可信任的,所以就会成功进行转账,而用户小黑却不会发现,且服务器不会知道本次操作是非法的;

但是如果用户小黑在点击该网页时,网站 A 的状态是登出,那么就不会携带可信任的Cookie,也就不会成功执行非法操作;

这就是跨站请求伪造。

2、防御方法

由于CSRF形成原因是服务器对访问源没有进行严格过滤,以及用户的不安全操作导致,因此可以从以下几方面来防御:

1、最重要也是最容易中招的,当属用户本身,用户在进行私密操作时,不要随意点击其他网页。

2、从服务器方面,可以在在请求头中添加Referer确定访问源,再在会话中加入Token,防止伪造。
等……

二、Low级别

1、演示

首先打开该题目,发现是修改密码的操作,因此判断,可以通过攻击,修改其密码。
在这里插入图片描述
随意输入后发现,传参方式是GET型,并修改密码为 111
在这里插入图片描述
查看请求头,发现存在Cookie在这里插入图片描述
查看一下数据库内的密码,并进行MD5还原在这里插入图片描述
在这里插入图片描述OK没问题,构造一个网页,插入URL请求语句,修改密码为1234,一般将语句放在 img标签内。
在这里插入图片描述
在不退出的情况下,继续访问该网页
在这里插入图片描述
没有任何提示,查看请求头,发现携带了Cookie
在这里插入图片描述
此时再去数据库查看密码,发现已被更改为1234
在这里插入图片描述
在这里插入图片描述

2、源码

在这里插入图片描述
只进行两次输入是否相同的判断,无其他防护。

三、Medium级别

1、演示

正常修改密码为111,抓包
在这里插入图片描述
抓包发现,中级别较Low级别相比,多了Referer验证,但是当删除Referer一部分值时,依然成功修改,因此断定,该请求的Referer依然不够严谨。因此在构造钓鱼网页时,可以绕过Referer检测。

尝试用Low级别的方法进行攻击,由于没有Referer,因此没有更改成功。

继续抓包,在请求头中加入Referer,并设置值为服务器IP:在这里插入图片描述
在发包前,密码是111
在这里插入图片描述
添加Referer并发包后,密码成功被更改。
在这里插入图片描述

2、源码

在这里插入图片描述
由于本次抓包未出现Referer,所以必须手动添加,但是在实际情况中,用户点击了钓鱼网页,是不会手动添加Referer的,这时就可以根据已知的Referer,进行灵活变通。

比如如果发送的Referer是地址,那么就可以将钓鱼网页的文件名设置为目标服务器主机名
在这里插入图片描述
这样就可以成功注入Referer。

四、High级别

1、演示

正常修改,抓包发现添加了Token。
在这里插入图片描述
因此,就需要在构造的钓鱼网页中加入获取Token的语句。

High级别有待研究。

2、源码

在这里插入图片描述

发布了88 篇原创文章 · 获赞 121 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43968080/article/details/104080160