在 Nginx 中修复 CORS 不安全配置漏洞至关重要。可在 Nginx 配置文件的对应 location 块内,添加 “add_header Access-Control-Allow-Origin [允许的域名]” 指令,精确设定允许跨域访问的域名,避免使用通配符 “*”。同时,可按需设置 “Access-Control-Allow-Methods” 指定允许的 HTTP 方法,“Access-Control-Allow-Headers” 规定允许的请求头,以此严格控制跨域资源共享权限,保障数据安全。
CORS漏洞描述
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; } }
本文核心聚焦于 CORS 不安全配置漏洞的修复策略。具体而言,借助修改 Nginx 配置这一关键手段,把 Access-Control-Allow-Origin 精准设定为恰当的域名,从而有效规避在跨域资源共享过程中可能出现的隐私泄露隐患,为保障数据安全与用户隐私筑牢坚实防线。
@版权声明:
本网站所展示的图片均来源于互联网,我们致力于尊重原创作者的版权。若图片涉及版权问题,或图片所有者不希望图片被展示,请与我们联系,我们将在第一时间进行处理,包括但不限于删除图片。我们对图片的版权问题持开放态度,并愿意与版权所有者进行沟通协商。感谢您的理解与支持。