若依框架下的Shiro反序列化漏洞

zkshine2024-01-23文章来源:SecHub网络安全社区


一、若依

若依是一个Java EE企业级快速开发平台,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf、Bootstrap),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、通知公告等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务。
我们也可以基于Spring Boot、Apache Shiro、MyBatis、Thymeleaf、Bootstrap等框架的漏洞从而进一步对该系统进行利用。

二、若依框架后台弱口令

通过弱口令操作,我们可以进入后台进行进一步操作,进而危害系统

2.1测绘指纹

Fofa语法:app=“若依-管理系统” && body=" admin "

默认弱口令:admin/admin123

1.png

登录成功,进入后台

2.png

3.png

2.2漏洞检测

1、首先若依系统就是基于spring、shiro等这些组件框架开发的,发现若依的网站,可以直接去尝试shiro反序列化的利用

2、可以通过数据包中的关键字段“rememberMe”

发现数据包里面没有rememberMe字段,如下

4.png

继续 手动在请求包的cookie中添加rememberMe=1,如果返回包出现了Set-Cookie: rememberMe=deleteMe,那么也可以证明网站使用了shiro组件

5.png

发现存在Shiro框架 并且获得默认key值

6.png

三、Shiro反序列化

3.1什么是Shiro?

Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。

3.2漏洞原理

Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后在使用base64编码处理形成的。

一般来说,在服务端接收cookie值时,按照如下步骤来解析处理:

1、检索RememberMe cookie 的值

2、Base 64解码

3、使用AES解密(加密密钥硬编码)

4、进行反序列化操作(未作过滤处理)

重点:

在调用反序列化时未进行任何过滤,导致可以触发远程代码执行漏洞。

3.3漏洞风险

攻击者可以使用Shiro的默认密钥构造恶意序列化对象进行编码 来伪造用户的 Cookie,服务端反序列化时触发漏洞,从而执行命令。

3.4漏洞利用

利用工具进行Shiro漏洞进行利用 发现构造链

7.png

进行功能区利用 可以执行命令ls,此外还可以进行内存马操作,获取对方系统

8.png