I have observed a path normalization issue in the tomcat when i was passing "..;" in the URL. I tested this out with Nginx and Apache-tomcat-10.0.0-M4. I was able to access file directories which are not allowed in the Nginx. Please find the below screenshots for more information,
- Nginx Configuration:
As per the above configuration i have enabled /app/ context path only in Nginx.
- I created two directories called App (contains test.html) and App2 (contains test2.html) in the Tomcat ROOT directory.
- As per the above Nginx configuration it allows access only to app/test.html. But using semicolon it is possible to access app2/test2.html file as well.
Normal behavior
Behavior with the semicolon
As per the above screenshot, it is allowed to access to the test2.html page via Nginx with semicolon even app2 context path is not define in the Nginx configuration. Also please note that i checked this behavior without the Nginx and it was noted the same behavior. I was able to reproduced this issue directly in the Tomcat 9.0.12 and Tomcat 10.0.0-M4.
Is this already a known issue? or is this the normal behavior in the Tomcat level? A Similar issue has discussed in Blckhat(See below link for more details).
/../
path segment? Will it servetest2.html
andindex.html
as shown in the "vulner" example? I'm asking about nginx's behavior when it's serving directly and not acting as a reverse-proxy.