Nginx修復CORS漏洞的實現(xiàn)方法
漏洞描述
CORS 不安全配置漏洞指的是在跨域資源共享過程中,由于資源服務器的響應頭 Access-Control-Allow-Origin 配置不當導致本應該受限訪問的請求網(wǎng)站可以繞過訪問控制策略讀取資源服務器的數(shù)據(jù),造成用戶隱私泄露,信息竊取甚至賬戶劫持的危害。
漏洞細節(jié)
經過對以下目標進行掃描測試:https://xxx.com/external/
發(fā)現(xiàn)存在該漏洞。
發(fā)現(xiàn) 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漏洞的實現(xiàn)方法的文章就介紹到這了,更多相關Nginx修復CORS漏洞內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
nginx將https協(xié)議反向代理到http協(xié)議請求上
在項目正式上線時,一般會申請域名和證書來實現(xiàn)https的服務,本文主要介紹了nginx將https協(xié)議反向代理到http協(xié)議請求上,具有一定的參考價值,感興趣的可以了解一下2024-05-05
keepalived?+?nginx?實現(xiàn)高可用方案
這篇文章主要介紹了keepalived?+?nginx?實現(xiàn)高可用方案的相關資料,需要的朋友可以參考下2022-12-12

