这里使用莫CMS的审计,基于;的绕过漏洞是java里带有的漏洞
@WebFilter(filterName = "LogCostFilter", urlPatterns = {"/*"},
initParams = {@WebInitParam(name = "ignoredUrl", value = ".ico"),
@WebInitParam(name = "filterPath",
value = "*/user/login#/*/user/registerUser#/*/user/randomImage#" +
"/*/platformConfig/getPlatform#/*/v2/api-docs#/*/webjars#" +
"/*/systemConfig/static")})
可以看到对.ico是白名单
当后台程序使用getRequestURI()或getRequestURL()函数来解析用户请求的URL时,若URL中包含了一些特殊符号,则可能会造成访问限制绕过的安全风险
如果代码使用的是
HttpServletRequest
中的函数,在tomcat下会存在漏洞
- request.getRequestURL():返回全路径;
- request.getRequestURI():返回除去Host(域名或IP)部分的路径;
- request.getContextPath():返回工程名部分,如果工程映射为/,则返回为空;
- request.getServletPath():返回除去Host和工程名部分的路径;
那么如何利用呢
/;xxx/实现分割目录 (;xxx导致的匹配问题)
/…;/实现跨目录,常用在…/被禁用的场景下(不能被识别)
;.css或;.js等利用白名单绕过认证鉴权
最终结果就是绕过鉴权的拦截器