项目场景:
安全团队预警,提示服务器上的地图服务有目录遍历(目录穿越)bug,地图服务使用了nginx代理。
问题描述
安全团队报告说可以通过浏览器直接看到地图的目录,会造成目录遍历(目录穿越)
原因分析:
在linux中一切皆文件,可以看到每个文件夹下面都是存在着./以及…/两个文件的,用来表示当前文件目录和上一级的文件目录,因此可以使用cd命令对这两个字符进行操作
在web服务中,URL是访问文件的路径标识,该路径和后台web服务器上的文件路径有着某种对应的关系
在定位到该IP服务器之后,则会根据URL到相应的目录下去查找对应的文件。/xxx/xx/是对外显示的文件目录,实际的服务器后台绝对路径可能是web目录+/xxx/xx/,例如/var/www/html/xxx/xx/。如果不对输入的URL进行限制,则存在着构造特殊的URL路径,映射到具体的服务器目录则导致访问回溯,最常见的后果是导致任意文件访问。
报告中提到了直接通过url可以看到文件目录,首先考虑nginx中配置问题。
查询nginx配置说明,发现autoindex配置开启,查阅文档得知。
nginx autoindex 是一种生成目录列表 html 页面的功能,用于在请求目录而非文件时浏览文件、查看文件信息。它可通过配置选项定制,如显示确切文件大小、本地时间和自定义页面格式。优点包括方便浏览、易于配置和提供文件信息。
解决方案:
将nginx配置文件中的autoindex设置为off,再次漏扫测试,显示已修复