以前一直知道怎么利用,但是重来没有自己手动复现过这个漏洞,今天心情好就做了一个demo开源给大家
链接:https://pan.baidu.com/s/15y426CUCA_wSAqYU1Ivw-w
提取码:wp95
CSRF概念:
CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:
攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。
CSRF漏洞检测:
检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。
随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。
以CSRFTester工具为例,CSRF漏洞检测工具的测试原理如下:使用CSRFTester进行测试时,首先需要抓取我们在浏览器中访问过的所有链接以及所有的表单等信息,然后通过在CSRFTester中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求。如果修改后的测试请求成功被网站服务器接受,则说明存在CSRF漏洞,当然此款工具也可以被用来进行CSRF攻击。
demo例子操作步骤
1、登录获取身份认证(这里用到session)
2、登录后点击跳转进入有漏洞的网站(这里模拟的是黑客发给受害者的地址)
3、点击跳转后是一个图片
注解:其中src的地址money.php是网站的转账接口 其中name是转给谁,money是转多少钱
一旦目标登录了网站访问了这个网页,就会利用session给jake转账100元
可以在目录下查看journal.txt查看转账日志//每刷新一次页面就会转一次账
防御CSRF攻击:
目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。
(1)验证 HTTP Referer 字段
(2)在请求地址中添加 token 并验证
(3)在 HTTP 头中自定义属性并验证
(4)改为POST传参