CSRF通过DVWA教你学会CSRF攻击

Posted 一名白帽的成长史

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSRF通过DVWA教你学会CSRF攻击相关的知识,希望对你有一定的参考价值。

点击上方 “公众号” 可以订阅哦!

Hello 各位小伙伴大家好~【CSRF】通过DVWA教你学会CSRF攻击【CSRF】通过DVWA教你学会CSRF攻击


【CSRF】通过DVWA教你学会CSRF攻击

话说小编身边又有朋友脱单了,今天依然是为别人爱情流泪的一天呢...

【CSRF】通过DVWA教你学会CSRF攻击
【CSRF】通过DVWA教你学会CSRF攻击


今天还是一起来看看,什么是CSRF攻击吧...

【CSRF】通过DVWA教你学会CSRF攻击


Part.1

什么是CSRF攻击?


基本概念

CSRF(Cross-Site Request Forgery)跨站点请求伪造。


是指利用受害者未失效的身份认证信息(cookie、session等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下,以受害人的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)的一种攻击行为。


读完很懵对不对?

【CSRF】通过DVWA教你学会CSRF攻击

我们先来看一张图:

【CSRF】通过DVWA教你学会CSRF攻击

为什么User点击了网站B的url,就会在不知情的情况下去网站A实施操作呢?【CSRF】通过DVWA教你学会CSRF攻击


往下看,我们通过实验来还原一下这个场景。


Part.2

CSRF攻击过程还原


攻击流程还原

依然是我们非常好用的DVWA平台,安全级别为Low,选择CSRF页面。

【CSRF】通过DVWA教你学会CSRF攻击

这是一个给我们修改用户密码的页面,为什么存在CSRF漏洞呢?


输入密码123,123 点击Change提示修改成功:

【CSRF】通过DVWA教你学会CSRF攻击

看一下浏览器此时网页的URL,变成了:

http://192.168.211.151/vulnerabilities/csrf/?passwordnew=123&passwordconf=123&Change=Change#

//用户名、密码直接就暴露了在ULR中。


我们直接输入URL:

http://192.168.211.151/vulnerabilities/csrf/?passwordnew=password&passwordconf=password&Change=Change#

点击回车,再次提示密码修改成功:

【CSRF】通过DVWA教你学会CSRF攻击

假设第二个URL是攻击者恶意发送给用户的,用户一旦在cookie没过期的情况下点击了,那密码不久被攻击者修改了吗?


这就是一个简单的CSRF攻击,这下明白了吗?


Part.3

CSRF攻击方法优化


利用短链接工具

我们来看看刚才构造的恶意链接:

http://192.168.211.151/vulnerabilities/csrf/?passwordnew=password&passwordconf=password&Change=Change#


链接中直接带passwordnew=password ,以及passwordconf=password这种字样。


一般有点安全意识的人应该都不会去点击,我们来对攻击方法进行一下优化。


方法一:利用短链接工具将URL缩短

网上有很多短链接生成网站,输入我们构造的恶意URL,如下:

【CSRF】通过DVWA教你学会CSRF攻击

点击生成,会就得到一个短链接:

【CSRF】通过DVWA教你学会CSRF攻击

访问这个短链接,就等同于访问了我们构造的恶意URL,是不是大大的增加了迷惑性呢?


但这种方法,有一个缺点,用户点击这个页面后,虽然成功被修改密码,但是会跳转到以下页面:

【CSRF】通过DVWA教你学会CSRF攻击

会直接暴露我们的攻击行为。


有没有不被用户发现的方法呢?有的,请往下看。


【CSRF】通过DVWA教你学会CSRF攻击


将恶意链接插入到网页中

方法二:将恶意链接插入到网页中

我们也可以建立一个网站,将恶意URL插入到网站中去,在网页中添加如下代码:

【CSRF】通过DVWA教你学会CSRF攻击

利用社会工程学,诱导用户访问我们的网站,就会触发这行代码,且不会出现网页跳转,不知不觉中,就被修改了密码。


【CSRF】通过DVWA教你学会CSRF攻击


结合存储型XSS进行攻击

方法三:结合存储型XSS进行攻击

我们也可以结合存储型XSS漏洞进行攻击,将CSRF代码写入XSS注入点中,如下:

【CSRF】通过DVWA教你学会CSRF攻击

用户一旦访问该站点,就会在不知不觉中执行我们的恶意代码,被修改密码,这种方式同样是具有隐蔽性,不会出现密码修改界面。


不了解存储型XSS漏洞的小伙伴可以看看我之前写的文章哦~


Part.4

如何防御CSRF攻击?


Referer字段验证

攻击方式我们都知道了,但是怎么来防护CSRF攻击呢?

方法一:添加HTTP Referer字段验证

我们来看看DVWA平台上Medium等级是如何进行防护的,部分源码如下:

【CSRF】通过DVWA教你学会CSRF攻击

在获取$passnew和$passconf这两个变量之前,先利用if语句以及eregi()函数来判断$_SERVER['HTTP_REFERER']是否包含$_SERVER['SERVER_NAME']。



$_SERVER['SERVER_NAME']则表示Host字段,即目标服务器。


我们从DVWA首页,跳转到密码修改页面,并抓个包看看:

【CSRF】通过DVWA教你学会CSRF攻击


但这种方法也是有缺陷的,如果我们的恶意网站命名为192.168.211.151.html,那么Referer字段就会包含192.168.211.151。


【CSRF】通过DVWA教你学会CSRF攻击


添加二次验证

我们来看看DVWA Impossible安全等级的页面:

【CSRF】通过DVWA教你学会CSRF攻击

修改密码前需要输入当前密码,这样就算用户访问我们的恶意URL,也不会被修改密码了。


所以说防护CSRF的最好方法就是添加二次验证,如修改密码时验证当前密码,支付时校验支付密码,或者是执行操作前要求输入验证码,又或者是删除用户时,产生一个提示对话框,提示“确定删除用户吗?”。

【CSRF】通过DVWA教你学会CSRF攻击


Part.5

结语


好啦,这就是今天的全部内容了,大家明白了吗?


端午节的最后一天,也要玩得开心哦~

【CSRF】通过DVWA教你学会CSRF攻击


peace!



以上是关于CSRF通过DVWA教你学会CSRF攻击的主要内容,如果未能解决你的问题,请参考以下文章

通过DVWA学CSRF

DVWA跨站请求伪造CSRF攻击全面分析

教你轻松解决CSRF跨站请求伪造攻击

DVWA [CSRF] 跨站请求伪造

DVWA CSRF 通关教程

DVWA之跨站请求伪造(CSRF)