前言
转眼两个月过去了,博客一直都没有更新。重新捡起自己的博客,在写写自己的学习过程。
这次要说的是由于CORS配置不当而引起的跨域问题。CORS,翻译过来就是”跨域资源共享”,这里的重点在于跨域,要知道在网络安全里面,同源策略是一个很重要的东西。而这个跨域就打破了这个特性,从而可能会造成一些问题。但其实CORS本意是用来避免这些安全问题的。
这里就不重复说一些原理类的问题了。毕竟百度上面很多。
漏洞原因
由于配置不当,Origin源未严格,从而造成跨域问题。
这样说可能有点抽象,我来举个实例。
这里假设以下访问都是基于自己的博客bywalks.com这个源,当我们发送下面这个请求包时
1 2 3 4 5 6 7
| GET /c/user HTTP/1.1 Host: bywalks.com User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:46.0) Gecko/20100101 Firefox/46.0 Accept: */* Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Content-Type: application/json origin: http://evil.com
|
返回包如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| HTTP/1.1 304 Not Modified Date: Thu, 08 Mar 2018 02:48:00 GMT Connection: close ETag: "ba948d94315604d965963bffecb2582a" Cache-Control: max-age=0, private, must-revalidate X-Request-Id: f2b00bc9-8cc5-493c-86e9-2c4e0f438553 Access-Control-Allow-Origin: http://evil.com Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS, DELETE Access-Control-Expose-Headers: Access-Control-Max-Age: 1728000 Access-Control-Allow-Credentials: true Vary: Origin Strict-Transport-Security: max-age=631152000 Referrer-Policy: origin-when-cross-origin X-Content-Type-Options: nosniff X-Download-Options: noopen X-Frame-Options: SAMEORIGIN X-Permitted-Cross-Domain-Policies: none X-XSS-Protection: 1; mode=block
|
上面的请求包,我们只要关注Origin
即可。当我们把Origin
设置为evil.com
时,返回包的Access-Control-Allow-Origin
也为evil.com
,也就是evil.com
可以跨域获取我的个人博客bywalks.com
的资源。从而产生了CORS
配置不当的漏洞。
Access-Control-Allow-Credentials: true
这个设置是请求包中是否携带cookie
。
漏洞危害
造成跨域问题,可能造成信息泄露等危害。
这里在给大家两个网址,一个是讲CORS原理,一个是hackerone上面的漏洞挖掘例子。
http://www.ruanyifeng.com/blog/2016/04/cors.html
https://bugbountypoc.com/exploiting-cross-origin-resource-sharing/