天天看点

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

文章目录

    • 一、前言
      • 1、CSRF简述
      • 2、防御方法
    • 二、Low级别
      • 1、演示
      • 2、源码
    • 三、Medium级别
      • 1、演示
      • 2、源码
    • 四、High级别
      • 1、演示
      • 2、源码

一、前言

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、演示

首先打开该题目,发现是修改密码的操作,因此判断,可以通过攻击,修改其密码。

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

随意输入后发现,传参方式是GET型,并修改密码为 111

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

查看请求头,发现存在Cookie

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

查看一下数据库内的密码,并进行MD5还原

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

OK没问题,构造一个网页,插入URL请求语句,修改密码为1234,一般将语句放在 img标签内。

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

在不退出的情况下,继续访问该网页

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

没有任何提示,查看请求头,发现携带了Cookie

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

此时再去数据库查看密码,发现已被更改为1234

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

2、源码

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

只进行两次输入是否相同的判断,无其他防护。

三、Medium级别

1、演示

正常修改密码为111,抓包

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

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

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

继续抓包,在请求头中加入Referer,并设置值为服务器IP:

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

在发包前,密码是111

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

添加Referer并发包后,密码成功被更改。

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

2、源码

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

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

比如如果发送的Referer是地址,那么就可以将钓鱼网页的文件名设置为目标服务器主机名

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

这样就可以成功注入Referer。

四、High级别

1、演示

正常修改,抓包发现添加了Token。

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

因此,就需要在构造的钓鱼网页中加入获取Token的语句。

High级别有待研究。

2、源码

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

继续阅读