做室内设计特别好的网站,杭州企业管理咨询有限公司,优化英语,wordpress 画廊 插件先声明一下#xff0c;免杀还是会更的#xff0c;不过中间可能会穿插一下渗透的内容#xff01;#xff01;#xff01;
踩坑点#xff1a;
在一开始翻阅了CSDN之后#xff0c;发现不同文章之间存在出入#xff0c;于是最后去了CVE的官方文档#xff0c;和参考一些国…先声明一下免杀还是会更的不过中间可能会穿插一下渗透的内容
踩坑点
在一开始翻阅了CSDN之后发现不同文章之间存在出入于是最后去了CVE的官方文档和参考一些国外的底层代码审计人员的报告发现原理和CSDN上的部分文章存在出入但是POC是相同的。最后在参考国外文章之后修正了报告
CVE-2020-1957原理
在Spring和Shiro(版本1.5.2)搭配使用的时候会产生权限绕过漏洞。
在黑客传入的POC https://........./test/..;/admin/ 中它的框架检验代码如下 先通过这段代码在uri.indexOf(“;”)中将截断 后面的请求。然后通过normalize()这个函数对反斜线进行替换///.//../ 都替换为 /过getPathWithinApplication()函数的处理,最终Shiro 需要校验的URL 就是 /test/..
然后传入到getChain()函数中进行校验 其中Shiro组件只对/admin/** 这样的path进行了匹配其他都会放行。
所以我们最原始的请求 https://........./test/..;/admin/ 就成功进入到了SpringBoot的校验中这也是整个漏洞的产生原理
然后SpringBoot就会对这个URL进行检查 又因为SpringBoot的getPathWithinServletMapping函数通常是返回的Servletpath
所以就直接返回了/admin/ 这样的URL 至此就饶过了身份验证。
漏洞复现
本次复现环境使用的是Vulhub靶场 首先对登录界面进行抓包。 这时候我们直接去访问/Admin 这个界面是肯定会有拦截的因为被Shrio的过滤器匹配到了 302跟进之后发现他又跳转到了我们的登录界面 然后我们用我们的POC去访问成功绕过身份验证。 检测工具
由于此漏洞并没有特别大的影响在网上并没有搜索到对应的工具。
本人尝试了使用渊龙SEC曾哥spring工具以及其他Shiro工具也并未能检测出漏洞。 所以只能收录为一个POC在后续的武器开发之中能加入这一POC检测。 修复建议
将Shiro版本进行升级。在新版本的Shiro中GetRequestURL是由contextPath() servletPath() pathinfo() 这三个函数组合而成当黑客传入https://........./test/..;/admin/ POC之后在Shiro的过滤之下返回的路径将会变成/admin/成功匹配不会放行成功防止了权限的绕过。
参考文章
Shiro权限绕过漏洞分析CVE-2020-1957 - FreeBuf网络安全行业门户
https://www.cnblogs.com/backlion/p/14055274.html
shiro权限绕过漏洞分析(cve-2020-1957) | Spoock