我们的产品存在严重的安全问题,该问题在apache tomcat服务器上运行,侦听端口80和443.这些端口上的传入HTTP / HTTPS数据包的路由由我们的产品类配置,无法确保每个请求URL是指一个文件,它位于服务器的Web根目录中,并且是允许提供的类型。
特别是,在url中匹配'/ error / *'的数据包被配置为使用'docroot'文件夹作为服务文件的文档根。因此,也可以访问和下载使用URL编码反斜杠%5C
遍历/ error /(即docroot)目录的路径。例如,远程用户可以提供类似 -
https://MyDomain/error/..%5c..%5csettings.properties
访问与docroot处于同一级别的远程文件settings.properties。我们正试图通过防火墙规则和网络分段来克服这个问题。但是tomcat中是否有一个设置可用于阻止远程用户访问项目根文件夹之外的文件。那将非常有用。
答案 0 :(得分:1)
您可以使用漫游器限制对错误文件夹的访问。您还可以将条目映射到错误/ *到重定向页面。
编码所有请求和响应应解决/ - > %5c问题
答案 1 :(得分:1)
如果要限制对某些文件的直接URL访问,请将它们放在WEB-INF目录下。
从此处引用(注意:以下网址目前无法使用):
http://www.servletworld.com/servlet-tutorials/web-application-directory-structure.html
根目录包含名为WEB-INF的目录。任何事情都在 除了WEB-INF目录之外的根目录是公开的 可用,可以通过浏览器的URL访问。
WEB-INF目录是Web应用程序的私有区域, WEB-INF下的任何文件 通过指定,无法直接从浏览器访问目录 网址,如
http://somesite/WEB-INF/someresource.html
。 Web容器会 不提供此目录的内容。然而,内容 WEB-INF目录可由应用程序中的类访问。 因此,如果您有任何资源,如JSP或HTML文档 不希望直接从网络浏览器访问,你应该 将它放在WEB-INF目录下。