路径差异化可能引发一些安全问题(续)

Posted by bfpiaoran on May 20, 2019

之前研究了在jetty下得问题   不过现在公司大都使用spring-boot快速开发

spring-boot+tomcat得标配情况下   同样存在一些安全隐患

做个小实验

 

写一个简单得demo

 

 

写一个url过滤器

 

从规则来看  除了/open  开头得url   /lock得url是不能被访问得

其他url会返回failed

这里就出现了一个问题

如果我们访问/open/11是可以的  但是并不存在这个路径

这里就可以利用tomcat+spring得问题 绕过

tomcat得特性 会回溯到上一级目录

而过滤器实现是getRequestURI   获取到的地址是原始地址

所以当我们请求为http://127.0.0.1:8080/open/..;/lock

过滤器判断我们请求得地址为  放过得地址

所以没做拦截    但是spring解析到得地址为http://127.0.0.1:8080/lock

绕过了过滤器从而访问到了  不应该被访问得内容

 

 

而这个过滤不一定是对  url做过滤 也有可能对url做验证token得操作  但是通过以上得方法很有可能使用一个open的地址绕过token的效验

避免以上为题也有两种方法 一种是简单粗暴直接把 “.”    “;”  过滤了 但是参数变化多端 谁能保证传参中不会出现 “.”  或者 “;”  呢

还有一种方法就是normalize