2021-08-05


前言

CSRF----Cross-site request forgery,跨站请求伪造漏洞,利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。

简单来说,假设你是受害者,攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

原理图解:
在这里插入图片描述
要完成一次CSRF攻击,受害者必须依次完成两个步骤:

1.登录受信任网站A,并在本地生成Cookie。

2.在不登出A的情况下,访问危险网站B。
  
SRF漏洞检测
最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。

针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。

以CSRFTester工具为例,CSRF漏洞检测工具的测试原理如下:
使用CSRFTester进行测试时,首先需要抓取我们在浏览器中访问过的所有链接以及所有的表单等信息,然后通过在CSRFTester中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求。如果修改后的测试请求成功被网站服务器接受,则说明存在CSRF漏洞,当然此款工具也可以被用来进行CSRF攻击。

防御CSRF攻击

(1)验证 HTTP Referer 字段;
(2)在请求地址中添加 token 并验证;
(3)在 HTTP 头中自定义属性并验证。


一、CSRF–low

bp抓包;
在这里插入图片描述
也就是说访问http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=12&password_conf=12&Change=Change 这个链接,密码就会改变,那么就可以伪造这条链接,发送给受害者,在不知不觉中对方的密码就会被修改。

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、CSRF–Medium

查看源码可知,在Low级别的基础上,加上了对用户请求头的中的Referer字段进行验证。
在这里插入图片描述
抓包看不出区别
在这里插入图片描述
但是去访问url:http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=111&password_conf=111&Change=Change# 时,发现:
返回错误,提示Http Referer字段没有定义索引
在这里插入图片描述
先正常访问网站,抓包,查看Referer
在这里插入图片描述
重新打开一个页面,访问:http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=12&password_conf=12&Change=Change ,可以看到包里面没有Referer;
在这里插入图片描述
可以自己加一个Referer字段,然后值只要设置成包含了主机头127.0.0.1就可以,可以看到密码修改成功。
在这里插入图片描述

三、CSRF–High

查看源码,可以看到有Anti-CSRF token机制,用户每次访问改密页面时,服务器都会返回一个随机的token,当浏览器向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。这里因为对请求的token进行了验证,所以比上两个等级的更加的安全。
在这里插入图片描述
因为该请求是get请求,所以token验证会被放在请求URL中,我们随便输入密码验证一下,可以看到,在请求的URL中最末尾加入了token。
在这里插入图片描述
要想进行CSRF攻击就必须获取到用户的token,而要想获取到 token 就必须利用用户的 cookie 值去访问修改密码的页面,然后截取服务器返回的token值。然后再利用CSRF漏洞构造URL进行密码的修改。

利用脚本去构造相似网站的时候,注意同源策略。框架ifame要访问的链接是 http://127.0.0.1/dvwa/vulnerabilities/csrf ,这是漏洞网站服务器的链接。而要的脚本执行的位置是自己搭的一个服务器,所以攻击脚本是不可能跨域取到改密界面中的user_token。

接下来,要想获取到用户的token,并提交修改密码的表单的话,就必须得把我们的攻击脚本注入到目标服务器中 。而要想注入到目标服务器,同时得发挥作用,获取用户的 token修改密码的话,就得和XSS漏洞一起结合实现了。`将如下代码通过存储型XSS插入到数据库中,这语句会弹出用户的token。

<iframe src="../csrf/" οnlοad=alert(frames[0].document.getElementsByName('user_token')[0].value)></iframe>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值