CORS跨域资源共享漏洞和 jsonp劫持漏洞

同源策略
浏览器的一个安全策略
域名,端口,协议相同才算同源
不同源的不能相互获取cookie,document,不能相互发ajax请求
但这给开发造成了不便,所以就有了跨域问题,CORS和jsonp是解决跨域问题的一种方案,
如果配置的不规范,可能会造成CORS跨域资源共享漏洞和jsonp劫持漏洞
java不合法的设置(“Access-Control-Allow-Origin”,"*",允许任何域访问)
jsonp跨域设置
response.setHeader(“Access-Control-Allow-Origin”,"*");
callback
CORS跨域漏洞CORS跨域设置
response.setHeader(“Access-Control-Allow-Origin”,"*");
response.setHeader(“Access-Control-Allow-Credentials”,“true”);

CORS跨域资源共享漏洞
CORS,跨域资源共享(Cross-origin resource sharing),是H5提供的一种机制,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。(解决跨域问题的一种方案)
漏洞原理
当浏览器发现服务器的请求为简单请求时,会在头信息里加入Origin字段。Origin字段代表此次请求来自哪个域,服务器就可以检验是否来自该域。如果匹配,服务器就会在响应里增添三个字段:
Access-Control-Allow-Origin
Access-Control-Allow-Credentials
Access-Control-Expose-Headers
其中 Access-Control-Allow-Origin是必须有的,而剩下两个可有可无。Access-Control-Allow-Origin字段代表允许哪个域访问。当字段值为‘*’时,就代表任意域都可以访问,这样,就导致了Cors漏洞的产生。

具体攻击流程
假设用户登录一个含有CORS漏洞的网站http://vnlu.com,同时又访问了攻击者提供的一个链接http://evil.com,
恶意网站会向又cros漏洞的网站发起请求获取敏感数据,比如用户的身份信息
(相当于没有同源策略的csrf)
参考链接
https://zhuanlan.zhihu.com/p/410621052
https://blog.csdn.net/Askshhbs/article/details/124426525
1.不要将Access-Control-Allow-Origin字段设置为*
2.严格校验Origin字段的值
3.HTTPS 网站不要信任HTTP 域
4.不要信任全部自身子域,减少攻击面

 

jsonp劫持漏洞
JSONP( JSON with Padding)是json的一种“使用模式”,可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
JSONP劫持就是利用scirpt标签的src属性实现跨域请求,获取网站数据的过程
攻击流程
目标:获取victim在网站B的敏感信息,比如id,name,email等信息。
前提条件:注册并登录+无安全检查
victim在网站B注册并登录
网站B对来自网站A的JSONP请求没有进行安全检查就直接返回数据

参考链接
https://blog.csdn.net/weixin_41603028/article/details/119990437

 

posted @ 2022-07-24 20:06  lzstar-A2  阅读(484)  评论(0编辑  收藏  举报