Nginx 配置错误导致漏洞(add_header被覆盖)——漏洞复现

543 阅读1分钟

一、漏洞描述

Nginx配置文件子块(server、location、if)中的add_header,将会覆盖父块中的add_header添加的HTTP头,造成一些安全隐患。

二、漏洞原理

如下列代码,整站(父块中)添加了CSP头:

add_header Content-Security-Policy "default-src 'self'";
add_header X-Frame-Options DENY;

location = /test1 {
    rewrite ^(.*)$ /xss.html break;
}

location = /test2 {
    add_header X-Content-Type-Options nosniff;
    rewrite ^(.*)$ /xss.html break;
}

但/test2的location中又添加了X-Content-Type-Options头,导致父块中的add_header全部失效:

三、环境搭建

在这里插入图片描述
运行成功后,Nginx将会监听8080/8081/8082三个端口,分别对应三种漏洞。

四、漏洞复现

在这里插入图片描述
XSS可被触发
在这里插入图片描述
访问test1与test2数据包对比
在这里插入图片描述
在这里插入图片描述

五、漏洞防御

/test2的location中删除X-Content-Type-Options头

更多web安全工具与存在漏洞的网站搭建源码,收集整理在知识星球。
在这里插入图片描述