我们有一个网站托管在带有 nginx 网络服务器的服务器上。
现在,我们在 /var/www/html/ 中有一个名为 web.config 的文件
因此,当我们对服务器进行安全审计时,他们提出了如下建议:
web.config
文件信息泄露
确保设置了适当的限制,如果不需要该文件,则删除 web.config 文件。Nessus 能够使用以下请求利用此问题:
GET /web.config HTTP/1.1
因此,即使我将权限更改为只读,我也能够从浏览器下载数据。
这里可以做什么,我们应该删除该文件吗,或者我是否可以通过其他方式使该文件受到限制,以便该文件可以有限制地存在。
答案1
通常, web.config
用于配置 IIS 和 ASP.NET Web 应用程序,有点类似于.htaccess
使用文件配置 Apache httpd 的方式,尽管 web.config
通常包含更多特权信息,例如带有凭据的数据库连接字符串。
在 IIS 上,默认情况下阻止对 web.config 的公共访问,类似于 apache httpd 默认阻止对.htaccess
文件的访问。
对于 nginx 来说,web.config
这两个 .htaccess
文件都没有任何特殊含义,因此默认情况下不会阻止对它们的访问。
有几种解决方案:
该发现主要是误报,因为
web.config
对 nginx 没有任何用处。可以简单地将其删除以使审计员满意,但那里并没有真正的信息泄露。(也许这是应用程序仍在 IIS 上运行时留下的遗留物?)这个发现是真实的。有些开发人员使用
web.config
文件来存储其应用程序的设置,无论他们在项目中使用什么语言/平台。理想情况下,开发人员会调整他们的应用程序,使得设置不需要存储在 webroot 中。
使用文件系统权限来阻止对 nginx 的访问通常是不可能的,因为 Web 应用程序仍然需要访问该文件。
Nginx 可用于阻止公共访问和 URL 路径:
# Allow access to the ACME Challenge for Let's Encrypt location ~ /\.well-known\/acme-challenge { allow all; } # Deny all attempts to access hidden files # such as .htaccess, .htpasswd, .git etc. etc. location ~ /\. { deny all; } # Deny all attempts to access to web.config configurations location ~ /web.config { deny all; }