CVE-2020-1957 漏洞复现

先声明一下,免杀还是会更的,不过中间可能会穿插一下渗透的内容!!!

踩坑点:

在一开始翻阅了CSDN之后,发现不同文章之间存在出入,于是最后去了CVE的官方文档,和参考一些国外的底层代码审计人员的报告,发现原理和CSDN上的部分文章存在出入,但是POC是相同的。最后在参考国外文章之后修正了报告

CVE-2020-1957原理:

在Spring和Shiro(版本<1.5.2)搭配使用的时候会产生权限绕过漏洞。

在黑客传入的POC : https://........./test/..;/admin/ 中,它的框架检验代码如下:

  1. 先通过这段代码,在uri.indexOf(“;”)中,将截断 ;后面的请求。
  2. 然后通过normalize()这个函数,对反斜线进行替换,///.//../ 都替换为 /
  3. 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

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值