长亭百川云 - 文章详情

浅谈XSSI漏洞

安全小黄鸭

48

2024-07-14

这是之前写的一篇文章,写到一半拖延了半年...

一句话总结:XSSI漏洞,并非开发逻辑错误而产生的,更应该算是浏览器的漏洞。

0x00 JSONP劫持漏洞

首先,从大家比较熟悉的 JSONP劫持 开始讲起。举个栗子,某站(xxx.yyy.com)需要从主站(www.yyy.com)跨域加载一些信息,所以有了下面的这段代码:

但是getinfo.php的代码没有对来源站做检查,再加上script的跨域特性,就让攻击者有机可乘了。攻击代码示例如下:

当用户点击了恶意链接之后,页面解析自动发出请求,然后执行攻击者设定好的代码,该接口返回的信息就被攻击者掌握了。攻击原理可以参考CSRF漏洞,利用姿势参考XSS漏洞,这里不再细讲。

这是 JSONP劫持 里比较经典的一个案例。而我们今天要讲的是 XSSI漏洞,跟这个有什么关系吗?

都是劫持敏感信息,但劫持的类型不一样。JSONP劫持的是callback函数名可以被攻击者控制/猜测的JSONP接口,开发人员背锅。而XSSI漏洞劫持的通常是一些AJAX请求的接口,需要配合浏览器漏洞才能成功利用

0x01 XSSI

XSSI -> Cross Site Script Include,漏洞到底是怎么产生的呢?

**原因之一,是你用了假的AJAX请求。**从开发的视角来看,AJAX请求只能通过 javascript 里的 XMLHttpRequest 对象发出,且在请求的时候浏览器会自动在请求头里加上 X-Requested-With: XMLHttpRequest。如果后台没有检查请求头里没有 “X-Requested-With: XMLHttpRequest” ,直接返回数据(AJAX失去了做人的尊严),就会出现问题。

也就是说,攻击者仍然可以用这种方法去加载存在问题的接口(就像JSONP劫持一样):

```

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2