CTF实战10 CSRF跨站请求伪造漏洞

依旧先拜祖师爷~


CTF实战10 CSRF跨站请求伪造漏洞
CTF实战10 CSRF跨站请求伪造漏洞
CTF实战10 CSRF跨站请求伪造漏洞

重要声明


该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

CTF实战10 CSRF跨站请求伪造漏洞
CTF实战10 CSRF跨站请求伪造漏洞


CTF实战10 CSRF跨站请求伪造漏洞


(不是有同学问XSS弹个框框有啥用咩?这时候你就可以有用了~)


CTF实战10 CSRF跨站请求伪造漏洞



我们今天开始学习新的内容


CTF实战10 CSRF跨站请求伪造漏洞
CSRF概述


CSRFCross Site Request Forgery的缩写(也缩写为XSRF


直译过来就是<跨站请求伪造>的意思,也就是在用户会话下对某个CGI做一些<GET/POST>的事情


也可以将CSRF理解成为高级的XSS


网站是通过cookie来识别用户的,当用户成功进行身份验证之后浏览器就会得到一个标识其身份的cookie,只要不关闭浏览器或者退出登录,以后访问 这个网站会带上这个cookie


如果这期间浏览器被人控制着请求了这个网站的url,可能就会执行一些用户不想做的功能(比如修改个人资料)


这个请求并不是用户真正想发出的请求,这就是所谓的<请求伪造>


因为这些请求也是可以从第三方网站提交的,所以前面加上<跨站>二字


CTF实战10 CSRF跨站请求伪造漏洞

CTF实战10 CSRF跨站请求伪造漏洞
CSRF例子



比如我们打算攻击一个存在问题的Blog,那就先去目标Blog留言,留下一个网址,诱其Blog的主人点击(当然,这是一种方法,也可以使用我们上节课讲的XSS),然后构造个HTML表单提交些数据过去。


多窗口浏览器便捷的同时也带来了一些问题,因为多窗口浏览器新开的窗口是具有当前所有会话的


即我用Firefox登陆了我的Blog,然后我想看新闻了,又运行一个Firefox窗口进程(不是打开一个新的标签页,而是重新点击一遍Firefox打开另一个浏览器)


这个时候两个Firefox窗口的会话是彼此独立的,从看新闻的Firefox发送请求到Blog不会有我登录的cookie


但是多窗口浏览器(意指在同一个浏览器进程中打开一个新的标签页)永远都只有一个进程,各窗口的会话是通用的,即看新闻的窗口发请求到Blog是会带上我在Blog登录的cookie(当然,现在的浏览器安全性比以前高很多了,一般不会发生这种事~)


CTF实战10 CSRF跨站请求伪造漏洞

sdfd


CTF实战10 CSRF跨站请求伪造漏洞
攻击的条件


要进行CSRF攻击


被攻击的受害者必须依次完成以下两个步骤:


  • 用户已经完成身份认证

  • 新请求的提交不需要重新身份认证或确认机制

  • 攻击者必须了解Web APP请求的参数构造

  • 用户会被吸引去点击链接

CTF实战10 CSRF跨站请求伪造漏洞
CTF实战10 CSRF跨站请求伪造漏洞

sdfd


CTF实战10 CSRF跨站请求伪造漏洞
几种常见的CSRF方式


  • <img>标签属性

  • <iframe>标签属性

  • <script>标签属性

  • JavaScript方法:Image对象、XMLHTTP对象

CTF实战10 CSRF跨站请求伪造漏洞


这里大概简单的用OWASP演示一下CSRF


CTF实战10 CSRF跨站请求伪造漏洞

sdfd


CTF实战10 CSRF跨站请求伪造漏洞
简单的演示


我们打开OWASP里面关于CSRF的界面


CTF实战10 CSRF跨站请求伪造漏洞

这里题目的大概意思是这样的:


你的目标是向newsgroup发送一个email,其中email中包含URL指向恶意请求的图像


尝试包含网址的1×1像素图片


然后将该URL应该指向CSRF课程页面,并带有一个额外的参数<transferFunds=4000>


您可以从左侧菜单中复制快捷方式,方法是右键单击左侧菜单并选择复制快捷方式


无论谁收到这封电子邮件并恰好在那个时候进行认证,他的资金都将被转移


当您认为攻击成功时,刷新页面,您会在左侧菜单中找到绿色检查

CTF实战10 CSRF跨站请求伪造漏洞


这个攻击思路可以很传统了,而且题目已经提示我们可以加<transferFunds=4000>来进行攻击,也省去了我们分析我们希望被攻击者执行哪个链接的操作


假设现在我们用某宝来做例子


我们在发送给马粑粑的一个email中的<img>属性中包含了一个以恶意的URL,这个URL指向的是一个某宝商品


马粑粑一天没事,用自己账户余额3亿的的某宝账户登录某宝随便逛逛,然后打开邮件查看新的邮件


就在他打开邮件的时候,我们的隐藏在<img>中的代码就执行,瞬间就把马粑粑账户转了5000过来


那我们就来试试这个攻击思路


我们构造如下的Payload



CTF实战10 CSRF跨站请求伪造漏洞


之后我们假设我们现在成了马粑粑


在自己的邮箱里面发现了这个新邮件,然后好奇,打开来看看


CTF实战10 CSRF跨站请求伪造漏洞


在点击这个链接的时候,我们用BurpSuite来截包看看


这是第一个Request


可以看到,我们的第一个Request是要去打开这个邮件


CTF实战10 CSRF跨站请求伪造漏洞


网站返回了一个Response之后,我们下一个Request也就是第二个Request就是这样的


CTF实战10 CSRF跨站请求伪造漏洞


这个流量的逻辑意义是要去加载我们的那个<img>图片,但是这个图片是不存在的,而且我们还在这个地址上加了一个希望马粑粑执行的&transferFunds=5000


也就是让马粑粑给我们转了5000的意思


之后当然会出来一个404error,因为这个图片并不存在


然后我们可以来看看这个加载之后的页面


CTF实战10 CSRF跨站请求伪造漏洞

<img>因为是不存在的,所以是不会显示的,但是我们的账户上已经有了马粑粑转来的5000啦~~~


CTF实战10 CSRF跨站请求伪造漏洞


CTF实战10 CSRF跨站请求伪造漏洞


本文完


下期内容:任意下载漏洞


CTF实战10 CSRF跨站请求伪造漏洞


CTF实战10 CSRF跨站请求伪造漏洞


CTF实战10 CSRF跨站请求伪造漏洞



发表评论

电子邮件地址不会被公开。 必填项已用*标注