跨域漏洞【低危】
原理概述
此处的跨域漏洞是特指flash的配置文件crossdomainxml因配置不当导致的flash的行为不受控制从而产生安全隐患的问题以及jsonp跨域会存在的一些安全隐患。flash是通过目标网站的crossdomainxml文件来判断是否允许当前域的flash访问目标资源,而当crossdomainxml配置不当的时候,就有可能导致不受信任的第三方域的flash也能访问当前域的资源
危害
导致不受信任的第三方域的flash也能访问当前域的资源,绕过同源策略的限制,可为后续渗透攻击做准备
jsonp的跨域和flash的跨域均可能导致XSS,CSRF等问题
···
BadCase样例
/*
jsonp跨域本身没有问题,因为Jsonp本身就是为了跨域而存在的,只是跨域本身就存在安全隐患,如果
安全检查不够好,则会造成安全问题,假设本程序为wwwtestcom/jsonpphp,那么攻击者完全可以在自己的服务器上编写一个页面,用<script src="http://wwwtestcom/jsonpphp?callback=hacker"></script>的方式加载页面然后通过js去读取数据,此外由用户定义callback的也可能造成XSS
*/
$callback=$_GET['callback'];
echo $callback"({'id':'Test','email':'www@testcom'})";
修复建议
使用白名单策略,只允许特定网站进行跨域访问
jsonp的跨域,可以考虑使用以下方案:
对第三方域校验refer或者使用一次性token,请参考CSRF的防御
严格按照json格式输出content-type与编码,样例如下
header(‘ContentType:application/json;charset=utf-8’);
过滤callback函数名及JSON里数据的输出,参考XSS的防御
严格限制对JSONP输出callback函数名的长度