我对URL中使用点-点-分号模式(访问部署在apache tomcat webapps文件夹中的servlet应用程序(没有什么疑问。使用点-点分号(/..;/
(使url返回到一个步骤。最初的问题(仅点-点模式(是一个目录遍历漏洞,该漏洞已在tomcat6.0.18
、domainname/../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。