需要为 web.config 文件授予哪些权限

需要为 web.config 文件授予哪些权限

我们有一个网站托管在带有 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;
      }
      

相关内容