DVWA——CSRF 跨站请求伪造

CSRF属于业务逻辑漏洞X
SQL注入、XSS属于技术漏洞

原理

利用受害者尚未失效的身份认证信息(cookie,会话等),诱导受害人点击恶意链接或者含有攻击代码的页面,在受害人不知情的情况下,以受害者身份向服务器发送请求,从而完成非法操作(改密、转账等)。

前提条件

1、cookie未失效
2、用户登录

CSRF与XSS最大的区别

CSRF没有盗取cookie,而是直接利用,看起是合法请求。

Low
1、构造恶意链接

http://192.168.168.190/DVWA/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change#

当受害者点击这个链接时,密码就已经被修改。

注意,不同浏览器之间因为机制不同,点击链接攻击是不会被触发的,而是自动跳转到登录页面。
2、这个链接修改密码太明显了,可以使用工具缩短url。如悟空短链接等(有效期半小时)

短链接条件:服务器域名不是ip

DVWA——CSRF 跨站请求伪造_第1张图片

短链接 https://w.url.cn/s/AYYH7vc

DVWA——CSRF 跨站请求伪造_第2张图片
受害者会看到密码修改的提示

3、构造攻击页面
Burp抓包生成POC,复制到html里面,上传到服务器

DVWA——CSRF 跨站请求伪造_第3张图片
DVWA——CSRF 跨站请求伪造_第4张图片
DVWA——CSRF 跨站请求伪造_第5张图片

4、这样,还是明显,可以尝试打开页面为404


    
    

404

Not Found

在这里插入图片描述
DVWA——CSRF 跨站请求伪造_第6张图片
此时,密码已经修改成功,而用户不知情。可以使用新密码登录DVWA验证。

这种情况源代码可以看到修改密码的脚本

DVWA——CSRF 跨站请求伪造_第7张图片

5、页面跳转
(1)在脚本中加入


页面会卡顿一下然后跳转到百度页面,为了显示效果,中间会出现一个404页面

DVWA——CSRF 跨站请求伪造_第8张图片

(2)
还有别的页面跳转方式,可以自行百度。

Medium

在这里插入图片描述

可以看到,Medium级别的代码检查了保留变量HTTP_REFERER(http包头的Referer参数的值,表示来源地址)中是否包含SERVER_NAME(http包头的Host参数,及要访问的主机名,这里是192.168.153.130),希望通过这种机制抵御CSRF攻击。

我们可以将攻击页面命名为 受害者ip.html,上传、访问
或者
可以用Burp抓包,修改refer头部信息,文件名改为受害者ip,便可完美绕过

High

可以看到,High级别的代码加入了Anti-CSRF token机制,用户每次访问改密页面时,服务器会返回一个随机的token,向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。
在这里插入图片描述

获取token代码


 

 

  

当受害者点击这个页面,脚本会通过一个看不见的框架偷偷修改访问修改密码的页面,获取页面的token,并向服务器发送改密请求,完成CSRF攻击。
然而,这里牵扯到了跨域问题,而现在的浏览器是不允许跨域请求的。所以攻击脚本是不可能取到改密界面的token。
因此,我们要将攻击代码注入到目标服务器,才可能完成攻击。利用High级别的XSS漏洞协助获取Anti-CSRF token(因为这里的XSS注入有长度限制,不能够注入完整的攻击脚本,所以只获取Anti-CSRF token)。

Impossible
添加了二次认证,必须知道原密码。

DVWA——CSRF 跨站请求伪造_第9张图片

防御
1、采用原始密码认证;
2、验证refer,即HTTP请求的来源地址。比如,黑客A想让受害者B转账给他,A会自己搭建一个网站构造HTTP请求,诱使B点击,从而使B处罚转账操作,此时refer值为A自己搭建的网站地址。
3、验证token(存在于服务器端session中)
4、在HTTP头部自定义属性并验证(XMLHttpRequest)

你可能感兴趣的:(DVWA)