shiro复现

环境搭建

以下漏洞都可以从vulhub下载
@https://github.com/vulhub/vulhub/tree/master/shiro

CVE-2010-3863

影响版本

1
2
Apache Shiro < 1.1.0
JSecurity 0.9.x

漏洞原理
shiro进行权限验证前未对url做标准化处理,可以通过构造/、//、/./、/../等绕过权限验证
docker启动

1
2
cd vulhub/shiro/CVE-2010-3863;
docker-compose up -d;

访问ip:8080
正常请求/admin会跳转回登录页面

构造/./admin绕过验证

CVE-2016-4437(Shiro-550)

影响版本

1
Apache Shiro <= 1.2.4

漏洞原理
在apache shiro 1.2.4以前的版本中,加密的用户信息序列化后存储在名为remember-me的cookie中。
攻击者可以使用shiro的默认密钥伪造用户cookie触发java反序列化漏洞,进而在机器中RCE
使用docker搭建环境

1
2
cd vulhub/shiro/CVE-2016-4437;
docker-compose up -d;

手动利用可以参考https://github.com/vulhub/vulhub/blob/master/shiro/CVE-2016-4437/README.zh-cn.md
通过手动构造恶意利用类
这里我使用shiro综合利用工具(https://github.com/SummerSec/ShiroAttack2)
先爆破密钥,再检测利用链

随后即可执行命令或者注入内存马

CVE-2020-1957

影响版本

1
Apache Shiro < 1.5.3

漏洞原理
在apache shiro 1.5.2以前的版本中,在使用spring动态控制器时,攻击者通过构造..;这样的跳转,可以绕过shiro中对目录的权限限制。
使用docker搭建环境

1
2
cd vulhub/shiro/CVE-2020-1957;
docker-compose up -d;

访问ip:8080
直接访问admin会被重定向

构造/xxx/..;/admin/绕过权限限制,也可以使用fuzz对其进行测试

CVE-2019-12422(Shiro-721)

影响版本

1
2
3
4
5
6
7
8
1.2.5,  
1.2.6,
1.3.0,
1.3.1,
1.3.2,
1.4.0-RC2,
1.4.0,
1.4.1

漏洞原理
Shiro使用了AES-128-CBC模式对cookie进行加密,导致恶意用户可以通过Padding Oracle攻击方式构造序列化数据进行反序列化攻击,例如SHIRO-550。(Shiro-721)
环境搭建

1
2
3
4
git clone https://github.com/inspiringz/Shiro-721.git
cd Shiro-721/Docker
docker build -t shiro-721 .
docker run -p 8080:8080 -d shiro-721

访问ip:8080

可参考https://github.com/inspiringz/Shiro-721 手工利用

我是脚本小子直接利用工具一把梭


shiro复现
https://rightevil.github.io/shiro复现/
作者
rightevil
发布于
2025年4月4日
许可协议