DVWA环境实战演示“CSRF”漏洞原理及漏洞修复

概念

CSRF全称(Cross-site request forgery)跨站请求伪造,CSRF通过伪装成受信任用户的请求来利用受信任的网站,从而执行受害者非本意的操作,相对于XSS漏洞来说CSRF漏洞更具有危险性。

准备实战环境

在这里插入图片描述我们先将安全等级调成low,进入CSRF界面,它是一个常见的密码修改功能:
在这里插入图片描述先进行正常操作,输入新密码 hacker 确认后密码修改成功。
在这里插入图片描述返回到登录页面验证下,输入用户名admin,密码hacker,点击提交
在这里插入图片描述成功登录,我们知道在提交新密码时,浏览器向服务端会提交一个表单,发送一个数据包,我们用burpsuite抓包分析下在这里插入图片描述我们向浏览器提交的表单分别是password_ new 跟 password_conf,change,由此可见攻击者的原始思路是修改这几个参数的值构造url链接http://192.168.0.135/DVWA-master/vulnerabilities/csrf/?password_new=hacker&password_conf=hacker&change=change# 发给受害者,受害者点击之后密码就会被修改。但是一般受害者看到这样的链接是不会点的,攻击者往往会伪造,将这个链接包装一下。包装的过程其实就是重新构造HTML。方法如下,将url放到hackbar中分割url:在这里插入图片描述然后构造HTML表单,代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>csrf漏洞</title>
</head>

<body>
<form action="http://192.168.0.135/DVWA-master/vulnerabilities/csrf/">
<input type="hidden" name="password_new" value="hacker" />
<input type="hidden" name="password_conf" value="hacker" />
<input type="hidden" name="Change" value="change" />
<input type="submit" value="美女图片下载"/>
</form>

</body>
</html>

将生成的HTML文件放到phpstudy的根目录下;
在这里插入图片描述为了区分跟dvwa的区别我们把链接写成http://127.0.0.1/csrf.html,访问下;

在这里插入图片描述当受害者点击后相当于向dvwa发送数据包:
在这里插入图片描述直接将密码修改成hacker了,这个时候就算受害者发现了也已经晚了,攻击者已经可以用以hacker为密码的账号登陆了。
我们把等级调成medium,我们尝试low等级的方法点击图片,跳转到dvwa界面出现了一行提示:在这里插入图片描述我们继续抓包分析:首先试下手工输入是成功的查看下数据包:
在这里插入图片描述接着试下low等级失败的提交方式,查看数据包:

在这里插入图片描述通过对比发现两个数据包最大的不同在于referer这一行,我们在失败的数据包中添加referer,将正确数据包的referer加上,提交下,发现密码修改成功,经过不断缩减referer中url参数并不断尝试,发现referer参数只要包含host即可提交成功。我们验证下:在这里插入图片描述我们知道referer这个参数总是跟链接一模一样的。解决方法如下:在文件夹后面构造一个与host相同的文件夹将csrf.html放进去:在这里插入图片描述
这样链接中就包含host字段了,验证访问刚才的链接并点击图片:
在这里插入图片描述
在这里插入图片描述成功了
进入high等级的CSRF攻击:对比medium等级的url跟high等级的url,在hackbar中清楚地看到high等级的数据包中多了如图所示的参数:

在这里插入图片描述而且每次修改密码它都是在变化的。它是来源于上一个响应包的内容,使用low等级跟medium等级的方法都失效了:在这里插入图片描述它提示usertoken不正确,如果页面存在xss漏洞的话,我们就可以读取其中的usertoken的值,很显然受害者是当前用户,但攻击者不是当前用户,攻击者无法知道上一个请求的usertoken的值,因此这个地方是无解的。
进入impossible等级:
在这里插入图片描述它提示了要输入原始密码,这就保证了当前用户一定是本人,有效的确保了CSRF攻击,现在市场上大部分都是用的这个模块。

漏洞修复:

根据medium等级方法是可以校验referer,但校验不完全,只校验了是否包含域名,可以存在绕过。
high等级:是随机token值,这个是有效方法,如果不存在xss漏洞的话是相当安全的
最后一个是验证码,比较暴力但是确实有效。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值