Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞。
错误的配置文件示例(原本的目的是为了让用户访问到/usr/share/nginx/test/目录下的文件。
1. 测试场景
测试版本:nginx version: nginx/1.20.1
user nginx; ...... location /test1 { autoindex on; #alias /home/; alias /usr/share/nginx/test/; } |
2. 访问结果

目录穿越到上一级

3. 正确配置
user nginx; ...... location /test1/ { autoindex on; #alias /home/; alias /usr/share/nginx/test/; } |
路径后面加个斜杠
不能穿越

4. 其他说明
另外如果编译时指定了排除自动索引,也可以防止此类目录访问漏洞,例如编译时加上 --without-http_autoindex_module
5. 更坏的情况
测试版本:nginx version: nginx/1.20.1
如果权限足够大,比如root运行worker进程
user root; ...... location /test1 { autoindex on; alias /test/; } |
可以通过穿越到上一级后,查看到passwd文件

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




