漏洞原理
-
CORS,即跨源资源共享( Cross-Origin Resource Sharing
)。同源策略(Same OriginPolicy
)要求不同源之间是无法通信的,而CORS则是放宽同源策略以通过浏览器实现网站之间通信的机制。 -
CORS全称为 Cross-Origin Resource Sharing
即跨域资源共享,用于绕过SOP(同源策略)来实现跨域资源访问的一种技术。CORS漏洞则是利用CORS技术窃取用户敏感数据,CORS漏洞的成因是服务端配置的规则不当所导致的,服务器端没有配置Access-Control-Allow-Origin
等字段。
漏洞危害
1、获取用户数据
2、客户端缓存中毒:这种配置允许攻击者利用其他的漏洞,更改没有验证的字段,看是否正常回显。比如,一个应用返回数据报文头部中包含“X-User
”这个字段,这个字段的值没有经过验证就直接输出到返回页面上,此时就可以结合XSS漏洞来利用。
3、服务端缓存中毒:利用CORS的错误配置注入HTTP头部,这可能会被服务器端缓存下来,比如制造存储型xss
测试方法
-
查看是否存在get请求的json形式敏感信息,在请求头中添加任意Origin值,如
https://evil.com
,查看返回头是否返回:Access-Control-Allow-Origin:https://evil.com和Access-Control-Allow-Credentials:true
,若返回,则构造poc.html进行跨域读取数据。 -
CORS配置不当通常会导致的危害是用户敏感信息泄露,场景大多数是get请求方式返回的json形式的敏感信息(密钥、
token,key
等)。CORS配置不当属于响应头中的一种,其他还有X-Frame-Options、Content-Security-Policy
等。漏洞利用成功的前提是,两个返回头必须为:Access-Control-Allow-Origin:https://evil.com
更改响应头Access-Control-Allow-Origin或Origin
字段等,看返回头是否返回CORS配置字段
漏洞发现
关键判断是否存在cors漏洞
公有资源:Access-Control-Allow-Origin:*
授权信息:Access-Control-Allow-Credentials: true
同时 Access-Control-Allow-Origin:不为*
方式一:自动化扫描工具
https://github.com/chenjj/CORScanner
方式二
1、curl命令,输入curl http://127.0.0.1/DoraBox-master/csrf/userinfo.php -H "Origin:https://example.com/" -I
2、如果出现这种组合,说明存在CORS漏洞
Access-Control-Allow-Origin: foo.example.org
Access-Control-Allow-Credentials: true
修复建议
1、仔细评估是否开启CORS,如果不必要就不要开启CORS。
2、如果是绝对必要的话,要定义“源”的白名单。尽量不使用正则表达式配置,不要配置“Access-Contol-Allow-Origin”为通配符“*”,同时严格校验来自请求的Origin值。
3、仅仅允许安全的协议,有必要验证协议以确保不允许来自不安全通道(HTTP)的交互,否则中间人(MitM)将绕过应用是所使用的HTTPS。
4、要尽可能的返回”Vary: Origin”这个头部,以避免攻击者利用浏览器缓存。
5、如果可能的话避免使用“Credentials”头,由于“Access-Control-Allow-Credentials”标头设置为“true”时允许跨域请求中带有凭证数据,因此只有在严格必要时才应配置它。此头部也增加了CSRF攻击的风险;因此,有必要对其进行保护。
6、限制使用的方法,通过“Access-Control-Allow-Methods”头部,还可以配置允许跨域请求的方法,这样可以最大限度地减少所涉及的方法。
7、限制缓存的时间,通过“Access-Control-Allow-Methods”和“Access-Control-Allow-Headers”头部,限制浏览器缓存信息的时间。可以通过使用“Access-Control-Max-Age”标题来完成,该头部接收时间数作为输入,该数字是浏览器保存缓存的时间。配置相对较低的值(例如大约30分钟),确保浏览器在短时间内可以更新策略(比如允许的源)。
8、仅配置所需要的头,仅在接收到跨域请求的时候才配置有关于跨域的头部,并且确保跨域请求是合法的(只允许来自合法的源)。
参考连接
https://libai.blog.csdn.net/
《网络¥安全联盟站》—网络技术推荐关注
★
免责声明由于传播、利用本公众号李白你好所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号李白你好及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
”
end
网络¥安全联盟站—李白你好
欢迎关注[李白你好]-文章内容涉及网络¥安全,web渗透测试、内网安全、二进制安全、工业控制安全、APP逆向、CTF、SRC等。
微信:libaisec
微信交流群:加我微信拉你进群和工程师们学技术聊人生
原文始发于微信公众号(李白你好):跨域资源共享漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论