首页 > 其他分享 >CORS跨域漏洞修复

CORS跨域漏洞修复

时间:2024-08-08 09:09:26浏览次数:7  
标签:Control origin http 跨域 漏洞 CORS import servlet javax

原文链接: https://www.cnblogs.com/wenyoudo/p/14862701.html

漏洞介绍
概述:CORS,跨域资源共享(Cross-origin resource sharing),是H5提供的一种机制,WEB应用程序可以通过在HTTP增加字段来告诉浏览器,哪些不同来源的服务器是有权访问本站资源的,当不同域的请求发生时,就出现了跨域的现象。当该配置不当的时候,就导致资源被恶意操作
潜在危害:中


 

测试方法
1、可以通过浏览器的控制台的network,查看接口的请求包response头中Access-Control-Allow-Origin是否设置为*

2、 也可以通过抓包工具,查看接口返回的response中是Access-Control-Allow-Origin是否设置为*

漏洞案例
1、配置Access-Control-Allow-Origin为 *

 

 

 

 

 

 

2、配置Access-Control-Allow-Origin 但是该值可控

 


 

修复方案

tomcat CORS的配置

使用过滤器进行配置,代码如下:

 

复制代码
package filter;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.ws.http.HTTPException;

@WebFilter("/Cors")
public class CorsFilter implements Filter {

/**
     * Default constructor. 
     */
    public FilterConfig config;

 public CorsFilter() {
        // TODO Auto-generated constructor stub
    }

   /**
     * @see Filter#destroy()
     */
    public void destroy() {
        // TODO Auto-generated method stub
        this.config = null;
    }

  /**
     * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        //配置可信域名
        String[]  authhosts = {"http://www.abc.com:8008","http://www.abcyy.com"};
        String authost = "";
        HttpServletRequest httprequest = (HttpServletRequest) request;
        String origin = httprequest.getHeader("origin"); 
        HttpServletResponse httpresponse  =  (HttpServletResponse) response;
        if(origin != null &&  !Arrays.asList(authhosts).contains(origin)) {
            httpresponse.sendError(403);
            return;
        }
        else {
            for(int i=0;i<authhosts.length;i++) {
                if(i!=authhosts.length - 1) {
                    authost = authost + authhosts[i]+",";
                }else {
                    authost = authost + authhosts[i];
                }
            }
            httpresponse.addHeader("Access-Control-Allow-Origin", authost);
            httpresponse.addHeader("Access-Control-Allow-Methods",
                    "GET, POST");
            httpresponse.addHeader("Access-Control-Allow-Headers",
                    "origin, content-type, accept, x-requested-with, sid, mycustom, smuser");
                chain.doFilter(request, response);
        }

   }



  @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO 自动生成的方法存根
    }
}
复制代码

 

nginx CORS配置

复制代码
ocation / {
    set $flag 0;
    if ($http_origin = '')
    {
        set $flag "${flag}1";
    }
    if ($http_origin !~* ^(http|https)://www\.abc\.com$){
        set $flag "${flag}1";
    }
    if ($flag = "01"){
        return 403;
    }
    if ($http_origin ~* ^(http|https)://www\.abc\.com$) {
        add_header Access-Control-Allow-Origin $http_origin;
        add_header Access-Control-Allow-Methods GET,POST;
        add_header Access-Control-Allow-Credentials true;
        add_header Access-Control-Allow-Headers DNT,Keep-Alive,User-Agent,If-Modified-Since,Cache-Control,Content-Type;
   }
}
 

标签:Control,origin,http,跨域,漏洞,CORS,import,servlet,javax
From: https://www.cnblogs.com/fswhq/p/17661396.html

相关文章

  • 渗透测试实战-HFS远程RCE漏洞利用
    免责声明:文章来源于真实渗透测试,已获得授权,且关键信息已经打码处理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 一......
  • spring 代码执⾏ (CVE-2018-1273)漏洞
    一漏洞简介SpringData是⼀个⽤于简化数据库访问,并⽀持云服务的开源框架,SpringDataCommons是SpringData下所有⼦项⽬共享的基础框架。SpringDataCommons在2.0.5及以前版本中,存在⼀处SpEL表达式注⼊漏洞,攻击者可以注⼊恶意SpEL表达式以执⾏任意命令    ......
  • nextjs14 跨域该如何处理
    nextjs官方地址next.config.js和next.config.mjs他有什么区别next.config.js:使用的是CommonJS模块系统。这是Next.js默认的配置文件格式,也是大多数情况下使用的格式。使用require语法导入模块,使用module.exports导出对象。next.config.mjs:使用的是ESMod......
  • 漏洞复现--实验记录(MS12-020、MS14-064)
    漏洞复现一、MS12-020(蓝屏攻击)漏洞1.原理2.实验环境3.漏洞复现1、开启win2003的远程桌面:控制面板-->系统-->远程-->远程协助-->远程桌面2、控制面板-->windows防火墙-->例外-->远程桌面3、用nmap扫描靶机,发现靶机的3389端口已经打开4、在kali的终端中打开msfconsole5、......
  • Apache 中的新零日漏洞允许远程代码执行
    ApacheOFBiz开源企业资源规划(ERP)系统中披露了一个新的零日预认证远程代码执行漏洞,该漏洞可能允许威胁行为者在受影响的实例上实现远程代码执行。该漏洞编号为CVE-2024-38856,CVSS评分为9.8(满分10.0)。该漏洞会影响18.12.15之前的ApacheOFBiz版本。发现并报告该漏洞......
  • Goby漏洞发布 | CVE-2024-38856 Apache OFbiz /ProgramExport 命令执行漏洞【已复现】
    漏洞名称:ApacheOFbiz/ProgramExport命令执行漏洞(CVE-2024-38856)EnglishName:ApacheOFbiz/ProgramExportCommandExecutionVulnerability(CVE-2024-38856)CVSScore:9.0漏洞描述:ApacheOFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的......
  • Apache OFBiz 授权不当致远程代码执行漏洞(CVE-2024-38856)
    0x01产品简介ApacheOFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类应用系统。是美国阿帕奇(Apache)基金会的一套企业资源计划(ERP)系统。该系统提供了一整套基于Java的Web应用程序组件和工具。0x02漏洞概述2024年8月......
  • 契约锁电子签章平台 /param/edits 远程代码执行漏洞复现(XVE-2024-18394)
    0x01产品简介契约锁电子签章平台是上海亘岩网络科技有限公司推出的一套数字签章解决方案。契约锁为中大型组织提供“数字身份、电子签章、印章管控以及数据存证服务”于一体的数字可信基础解决方案,可无缝集成各类系统,让其具有电子化签署的能力,实现组织全程数字化办公。通......
  • SpringBoot常用配置类——跨域配置
    一、什么是跨域跨域是指在网页中通过JavaScript请求不同域名、协议或端口的资源。由于浏览器出于安全考虑,通常会限制这种请求,称为同源策略(Same-OriginPolicy)。同源策略要求请求的资源与当前页面必须具有相同的协议、域名和端口。如我们页面当前地址为http://www.testAAA.co......
  • CVE-2023-7130漏洞靶场复现
    CollegeNotesGallery2.0允许通过“/notes/login.php”中的参数‘user’进行SQL注入。利用这个问题可能会使攻击者有机会破坏应用程序,访问或修改数据.抓登录包放sqlmap爆破直接--dump一把梭哈......