Shiro未授权漏洞解析环境搭建

Shiro未授权漏洞解析环境搭建

查看源图像

为了深入了解一下这个漏洞的原理花了我好多时间, 又是麻麻的一次学习, 在这里先说一下怎么把环境搭起来吧, 网上很多漏洞解析文章但是搭建环境总是出现这样那样的问题, 先说一下, 完全照着操作也不一定能成功跑起来。我也是按照别人的指南部署项目之后还是运行失败, 最后自己修改了一些配置才跑起来的。

环境搭建

之前直接在 https://codeload.github.com/l3yx/springboot-shiro/ 下载的项目文件我直接打开运行有一些依赖加载不了, 所以我就替换和取消了一部分依赖, 如果出现问题的可以下载我下面这个修改过的项目: 传送门

完全不懂得建议可以参考一下我之前的Shiro1.2.4环境搭建的文章 : [穿越入口](http://h0cksr.xyz/archives/486)

需要注意的是我们这里如果是想验证Shiro的;导致的未授权访问漏洞的话需要修改一下LoginController.java文件,否则使用;绕过不会生效。

这是原本默认的LoginController.java文件:

image-20220405210259221

admin函数修改为:

    @GetMapping("/admin/{name}")
    public String admin() {
        return "admin page";
    }

修改后运行环境配置(我直接用应用程序的方式启动了,另外也可以选用Spring项目启动):

image-20220406202940469

实际上对JDK版本应该是没限制的, 我跑了七八个版本的JDK全跑起来了,我调试的时候使用的项目结构SDK为1.8.0.311

项目运行我直接选了默认的1.8(其实哪个版本都没关系)

image-20220406203257627

image-20220406203048683

然后我们Run一下将org.syclover.srpingbootshiro.SrpingbootShiroApplication运行起来即可,运行成功出现下图显示:

image-20220405182445308

运行起来之后的项目结构:

image-20220405203317383

变化比较

我这里默认是1.5.2, 可以自己手动修改一下复制文件夹另外再开一个项目修改Shiro版本为1.5.3然后在pom.xml文件下重新加载一下Maven项目就可以看到1.5.3的Shiro源码了:

image-20220405202437380

我们来看一下解析URL的org.apache.shiro.web.util.WebUtils#getPathWithinApplication函数:

环境说明:

在未登录的情况下访问admin目录下的资源会被服务器重定向到登录页面

image-20220405203959048

想要访问admin下面的资源需要先通过/doLogin?username=java&password=123登录:

image-20220405210221477

进行登录操作

image-20220405210317362

使用返回的session访问/admin/page

image-20220405210431860

漏洞利用

当我们使用的session没有经过身份验证的时候访问任何/admin下的任何资源都是非法请求的, 在这里我们将此次访问的目标定为/admin/page(也可以是其他的/admin/aaa之类的也行)

当我们直接访问/admin/page失败

但是访问/admin/%3bpage就会成功访问到/admin/page资源

image-20220405212214211

漏洞修复

官方已发布漏洞修复版本,更新 Apache Shiro >= 1.6.0

posted @ 2022-04-25 12:48  h0cksr  阅读(353)  评论(0编辑  收藏  举报