Nginx修复CORS漏洞的实现方法

 更新时间:2024年11月15日 11:55:10   作者:范一刀  
本文主要介绍了CORS不安全配置漏洞的修复方法,通过修改Nginx配置,将Access-Control-Allow-Origin设置为正确的域名,以防止跨域资源共享时的隐私泄露风险

漏洞描述

CORS 不安全配置漏洞指的是在跨域资源共享过程中,由于资源服务器的响应头 Access-Control-Allow-Origin 配置不当导致本应该受限访问的请求网站可以绕过访问控制策略读取资源服务器的数据,造成用户隐私泄露,信息窃取甚至账户劫持的危害。

漏洞细节

经过对以下目标进行扫描测试:https://xxx.com/external/

发现存在该漏洞。

发现 Access-Control-Allow-Origin 的值为 https://xxx.com.qa5bnet.cn

漏洞探测过程的请求流为
第 1 个请求为

GET /external/ HTTP/1.1
Host: xxx.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: en
Origin: https://xxx.com.qa5bnet.cn
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
Accept-Encoding: gzip

第 1 个响应为

HTTP/1.1 401 
Access-Control-Allow-Methods: GET,POST,OPTIONS,PUT,DELETE
Access-Control-Allow-Origin: https://xxx.com.qa5bnet.cn
Connection: keep-alive
Content-Length: 0
Date: Mon, 13 Nov 2023 02:07:00 GMT
Www-Authenticate: BASIC realm="application"

漏洞修复

        set $flag 0;

        if ($http_origin = ''){
            set $flag "${flag}1";
        }

        if ($http_origin !~* ^(http|https)://test\.test\.com$){
            set $flag "${flag}1";
        }

        if ($flag = "01"){
            return 403;
        }

        if ($http_origin ~* ^(http|https)://test\.test\.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;
}

具体配置如下:

  server {
        listen 80;
        server_name test.test.com;

        location / {
            set $flag 0;
    
            if ($http_origin = ''){
                set $flag "${flag}1";
            }
    
            if ($http_origin !~* ^(http|https)://test\.test\.com$){
                set $flag "${flag}1";
            }
    
            if ($flag = "01"){
                return 403;
            }
    
            if ($http_origin ~* ^(http|https)://test\.test\.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;
    				}
        
            #将IP和端口改为DataEase服务器的访问地址和端口
            proxy_pass   http://192.168.110.251:81/;
            server_name_in_redirect off;

            # websocket 代理
            proxy_http_version      1.1;
            proxy_set_header        Upgrade         $http_upgrade;
            proxy_set_header        Connection "upgrade";

            proxy_set_header           Host $host:$server_port;
            proxy_set_header           X-Real-IP $remote_addr;
            proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header           X-Forwarded-Proto $scheme;

           
        }
  }

到此这篇关于Nginx修复CORS漏洞的实现方法的文章就介绍到这了,更多相关Nginx修复CORS漏洞内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • linux设置Nginx自动重启的实现

    linux设置Nginx自动重启的实现

    在Linux系统中,设置Nginx服务开机自动启动及意外停止后自动重启是保持服务稳定运行的关键步骤,本文详细介绍了如何使用systemctl命令和配置systemd服务文件来实现这一功能,感兴趣的可以了解一下
    2024-09-09
  • 负载均衡下的webshell上传+nginx解析漏洞的过程

    负载均衡下的webshell上传+nginx解析漏洞的过程

    这篇文章主要介绍了负载均衡下的webshell上传+nginx解析漏洞,首先介绍了负载均衡下webshell上传的四大难点及环境搭建教程,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • 使用nginx实现动静分离

    使用nginx实现动静分离

    这篇文章主要为大家详细介绍了使用nginx实现动静分离,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • nginx将https协议反向代理到http协议请求上

    nginx将https协议反向代理到http协议请求上

    在项目正式上线时,一般会申请域名和证书来实现https的服务,本文主要介绍了nginx将https协议反向代理到http协议请求上,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • Nginx实现流量拷贝的示例代码

    Nginx实现流量拷贝的示例代码

    在生产环境中,我们经常需要将流量拷贝到预上线环境或测试环境,以便进行各种验证和测试,本文主要介绍了Nginx实现流量拷贝,具有一定的参考价值,感兴趣的可以了解一下
    2025-07-07
  • Nginx会话保持的具体实现

    Nginx会话保持的具体实现

    会话保持是指在会话持续或会话完成一个任务或一个事务的时间段内,将客户端请求引导至同一个后端Web服务器或应用服务器,本文主要介绍了Nginx会话保持的具体实现,感兴趣的可以了解一下
    2024-07-07
  • Debian7编译安装nginx简明教程

    Debian7编译安装nginx简明教程

    这篇文章主要介绍了Debian7编译安装nginx简明教程,本文直接给出操作命令和步骤,需要的朋友可以参考下
    2015-03-03
  • Nginx如何安装withSSL模块

    Nginx如何安装withSSL模块

    这篇文章主要介绍了Nginx如何安装withSSL模块,Nginx 配置文件,开启ssl访问时经常报错,原因是由于nginx缺少http_ssl_module模块,编译安装的时候带上 --with-http_ssl_module 配置就行了,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • keepalived + nginx 实现高可用方案

    keepalived + nginx 实现高可用方案

    这篇文章主要介绍了keepalived + nginx 实现高可用方案的相关资料,需要的朋友可以参考下
    2022-12-12
  • Nginx新增http_ssl_module模块的解决方案

    Nginx新增http_ssl_module模块的解决方案

    这篇文章主要介绍了Nginx新增http_ssl_module模块的解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11

最新评论