如何实现Java的Filter权限绕过


这篇“如何实现Java的Filter权限绕过”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何实现Java的Filter权限绕过”文章吧。常见的实现方式,在不调用Spring Security、Shiro等权限控制组件的情况下,会使用Filter获取请求路径,进行校验。编写一个servlet定义一个Filter这里使用 request.getRequestURI();获取URI为 /system/login开头 则直接放行。结尾,为.do.action的请求去做校验,获取session有没有user的值,没有的话即返回unauthorized access,如果不为.do.action的请求或session中存在user即放行。访问main页面,显示未授权访问并且跳转到登录的页面在Java中通常会使用request.getRequestURL()request.getRequestURI()这两个方法获取请求路径,然后对请求路径做校验。../绕过方式这里采用../的方式绕过这里就绕过了,权限控制,直接能访问到main,而不是显示未授权访问。在绕过时候可以找一些白名单的路径,然后使用../去绕过。payload:/system/login/../../login/main.do上图可以看到我们前面为system/login开头符合匹配的规则,而匹配上该规则后则是直接放行,让系统认为访问路径是一个登录的路径,但在后面加入2个../进行跳转到根目录,并且拼接上login/main.do,这时候实际访问到的是http://127.0.0.1/login/main.do。但使用request.getRequestURL();该方法获取URL是携带http://127.xxx等信息的。其实这里比较废话,因为验证首部的字符路径的话,使用 request.getRequestURI();来获取请求路径部分来校验。URL截断绕过基于前面Filter代码将../进行过滤添加多了一个uri.contains("./")做过滤只要包含./字符直接报错。这时候会报错,可见上图。可进行绕过payload:/login/main.do;123绕过分析URL中有一个保留字符分号;,主要为参数进行分割使用,有时候是请求中传递的参数太多了,所以使用分号;将参数对(key=value)连接起来作为一个请求参数进⾏传递。再来看到代码,代码中识别.do.action的后缀的字符,而加入;加上随便内容后,代码中就识别不到了。则会走到最下面的chain.doFilter(request,resp);,而在后面添加分号不会对地址的访问有任何影响。多绕过创建一个后台接口,只允许admin用户登录访问而权限控制这步肯定是在Filter里面实现这时候去对/system/UserInfoSearch.do做了校验,获取URI地址后匹配如果是这个/system/UserInfoSearch.do,则验证用户身份,加入不为admin,则显示Unauthorized,越权访问。可直接访问到admin用户才可访问的页面下。payload: //system/UserInfoSearch.do;123绕过分析看到代码中只是对比了URI是否为/system/UserInfoSearch.do,而多加一个/并不影响正常解析,而又能让该规则匹配不到。URL编码绕过还是用上面的代码演示,绕过手法则是换成url编码绕过的方式。payload:/system/%55%73%65%72%49%6e%66%6f%53%65%61%72%63%68%2e%64%6f绕过分析当Filter处理完相关的流程后,中间件会对请求的URL进行一次URL解码操作,然后请求解码后的Servlet,而在request.getRequestURL()和request.getRequestURI()中并不会自动进行解码,所以这时候直接接收过来进行规则匹配,则识别不出来。这时候导致了绕过。Spring MVC中追加/绕过在SpringMVC中假设以如下方法配置:特定情况下Spring匹配web路径的时候会容免费云主机域名错后面的/如,/admin/main.do/修复使用该代码接受URI下面来尝试前面的几种绕过方式。分号阶段绕过 payload: /login/main.do;123/绕过payload: //system/UserInfoSearch.do;123URL编码绕过payload:/system/%55%73%65%72%49%6e%66%6f%53%65%61%72%63%68%2e%64%6f../绕过payload:/system/login/../../login/main.do均不可用,使用上面的方式接受URI后,接受过去的时候发送特殊字符一律被剔除了。打断点可见。关注点前面提到过request.getRequestURL()request.getRequestURI(),这些危险字符并不会自动剔除掉。可重点关注该方法。以上就是关于“如何实现Java的Filter权限绕过”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。

相关推荐: 微信小程序API绘图颜色有哪些

本篇内容主要讲解“微信小程序A免费云主机域名PI绘图颜色有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序API绘图颜色有哪些”吧! 可以用以下几种方式来表示 canvas 中使用的颜色: RGB 颜色…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 08/21 18:29
Next 08/21 18:29

相关推荐