URL中的两个连续点将URL导航向后移动一步



我对URL中使用点-点-分号模式(访问部署在apache tomcat webapps文件夹中的servlet应用程序(没有什么疑问。使用点-点分号(/..;/(使url返回到一个步骤。最初的问题(仅点-点模式(是一个目录遍历漏洞,该漏洞已在tomcat6.0.18domainname/../manager/html标准化为domainname/manager/html的最新版本中得到解决(404错误(。但在6.0.37中,我们可以重新生成与domainname/..;/manager/html相同的带有句点分号的漏洞,然后我们可以访问tomcat内部文件夹,如admin url,它会提示我tomcat管理员用户名和密码的凭据。这里domainname是访问tomcat中部署的servlet应用程序的客户端URL,客户端URL在httpd.conf中配置为

<VirtualHost *:443>
DocumentRoot /usr/local/apache/htdocs/EMPTY
JkMount /* ajp13
RewriteEngine on
RewriteRule ^/(.*) /he/$1 [PT]
</VirtualHost *:80>

我们可以使用RewriteRule的任何表达式来避免以下请求URL的的模式(https://domainname/..;(吗

"https://domainname/..;======/xxx/yyyy"
"https://domainname/..;/xxx/yyyy"
"https://domainname/..;abcd/xxx/yyyy"

virtual host settings in apache httpd.conf
<VirtualHost :80>
DocumentRoot /usr/local/apache/htdocs/EMPTY ServerName client.website.com 
RewriteEngine On # Redirect all requests to the local Apache server to port 
8000 
RewriteRule ^/?(.) https://%{SERVER_NAME}/$1 [R,L] 
</VirtualHost>

请提出建议。

谢谢

您无法更改此行为。

大多数浏览器都会在请求发送到服务器之前进行规范化(将/aa/bbb/../ccc转换为/aa/ccc(。如果这样的请求到达Tomcat,Tomcat将始终在处理之前对其进行规范化。这是为了安全,例如,防止绕过安全约束。没有办法禁用它,任何允许禁用它的功能请求几乎肯定会被拒绝。

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

最新更新