URL中的两个连续点将URL导航后退一个

问题描述

我对URL中的点号-分号-分号模式的使用毫无疑问(以访问apache tomcat webapps文件夹中部署的servlet应用程序)。使用dot-dot-semicolon(public/external IP)可使网址返回一步。 最初的问题(仅是点-点模式)是目录遍历漏洞,相比于tomcat fs.readFile(dataString,(err,data) => { if (err) throw err; var parametrosPutObject = { Bucket: bucket,Key: dataString,Body: data,}; s3.putObject(parametrosPutObject,data) => { if (err) throw err; console.log("recorded file"); //obtenerURL(); }); }); /..;/,标准化为6.0.18的最新版本已解决404错误)。但是在domainname/../manager/html中,我们可以使用点分号与domainname/manager/html来重现相同的漏洞,然后我们可以访问tomcat内部文件夹,例如admin url,它提示我tomcat管理器的凭据用户名密码。这里的6.0.37是访问在tomcat中部署的servlet应用程序的客户端URL,并且在domainname/..;/manager/html中将客户端URL配置为

domainname

我们可以为httpd.conf使用任何表达式来避免以下请求URL的模式(<VirtualHost *:443> DocumentRoot /usr/local/apache/htdocs/EMPTY JkMount /* ajp13 RewriteEngine on RewriteRule ^/(.*) /he/$1 [PT] </VirtualHost *:80>

RewriteRule

请提出建议。

谢谢

解决方法

您无法更改此行为。

大多数浏览器会在将请求发送到服务器之前进行规范化(将/aaa/bbb/../ccc转换为/ aaa / ccc)。如果这样的请求到达Tomcat,则Tomcat将始终在处理之前对其进行规范化。这是为了安全起见,例如防止绕过安全约束。无法禁用此功能,几乎可以肯定会拒绝任何要求启用此功能的功能请求。

对于您引用的URL,在主机之后紧跟/../之后,Tomcat将返回400响应。同样,如果您尝试在地址栏中输入网址,浏览器可能会更改此类网址。