关于SSRF与CSRF漏洞的解释( 三 )


怎么可能这么神奇呢?其实这并不神奇 。主要是因为你的浏览器正处于与此网站的会话之中,那么一些操作都是合法的,而入侵者构造的这段代码只不过是正常的转账操作代码而已 。比如说你想给用户spisec转账1000元,那么点击提交按钮之后,可能会发送以下请求:
http://www.taobao.com/pay.jsp?user=spisec&money=1000
而攻击者仅仅是改变一下user参数与money参数即可完成一次“合法”的攻击,如:
http://www.taobao.com/pay.jsp?user=hack&money=10000
当你访问了这条URL之后,就会自动向hack这个账户里面转入10000元 。而这是你亲手造成的,并没因为有人去破解你的密码或者是Web服务器被入侵所导致的你的金钱丢失 。下面以CSRF攻击原理图给大家形象总结:

用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求 。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行 。
2、达成CSRF攻击的条件
  • 攻击建立在浏览器与Web服务器的会话之中
  • 会话期间需要受害者进行访问或者说是点击
如果以上任意一个不满足都不能达成跨站请求伪造攻击 。即目标必须处于会话状态,且需要点击
说白了,CSRF攻击也就是所谓的钓鱼攻击 。
3、CSRF分类
  • 站内
  • 站外
4、检测方法
  • 手工
检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞 。
  • 工具
burp
CSRF Request Builder
CSRFTester
工具检测的原理:
以CSRFTester工具为例,CSRF漏洞检测工具的测试原理如下:使用CSRFTester进行测试时,首先需要抓取我们在浏览器中访问过的所有链接以及所有的表单等信息,然后通过在CSRFTester中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求 。如果修改后的测试请求成功被网站服务器接受,则说明存在CSRF漏洞,当然此款工具也可以被用来进行CSRF攻击 。
5、如何挖掘CSRF漏洞
  • 扫描器(注意并不是每个页面爆没有token漏洞都是对的,因为前端的进行CSRF有毛用,主要就是对后台管理那一层的,所以不要盲目认为 。),
  • 修改密码的地方
  • 添加用户的地方
  • 数据库备份的地方
  • 数据交易、支付等
  • 其他一些对话框的钓鱼页面
  • CSRF一般与XSS结合使用
  • 注意页面是否带token或者包中有没得Referer,Referer在包中删除是否依然可以访问url目标等 。光靠一个Referer来说也没用,Referer也能伪造
注意可能有预测的token,即有规律的token,如果是随机的就放弃吧 。
6、常用攻击手段实例
一般的攻击思路:(首先,开源的web源码,攻击者了解网站的框架,搭建环境构造攻击url,例如数据备份的,下面实验中有过程 。
去目标网站创建普通用户,发帖插入url等待目标管理会话在线状态浏览帖子,中招,攻击者访问备份下来的数据库,脱裤,完事 。

1)、dz网站数据库备份(快速脱库)
两个ip:192.168.18.56:82攻击者自己的ip、192.168.18.62:86管理员的ip
整体思路:
实验步骤:攻击者自己搭建环境,以管理员身份登录,创建普通账户,以管理员身份进行数据备份,抓包,修改包的post数据,构造url为自己要求的 。(这里url的IP地址为目标的IP地址)
复制好url,前往目标网站,注册,以普通用户身份登录发帖带入url(试一下直接在文本中插入,按道理来说需要自动运行地址而不是文本内容),等待管理员登录且为会话状态点击查看攻击者发帖的内容,达成指定备份 。
攻击者访问构造的url,脱库 。
攻击者环境配置url(创建账号忽略,直接上关键步骤):


推荐阅读