shiro漏洞复现

shiro介绍

框架介绍

Apache Shiro提供了认证、授权、加密和会话管理功能,将复杂的问题隐藏起
来,提供清晰直观的API使开发者可以很轻松地开发自己的程序安全代码。
Shiro将目标集中于Shiro开发团队所称的“四大安全基石”-认证
(Authentication)、授权(Authorization)、会话管理(Session
Management)和加密(Cryptography)

  • 认证(Authentication):用户身份识别。有时可看作为“登录(login)”,它
    是用户证明自己是谁的一个行为。
  • 授权(Authorization):访问控制过程,好比决定“认证(who)”可以访问
    “什么(what)”.
  • 会话管理(SessionManagement):管理用户的会话(sessions),甚至在
    没有WEB或EJB容器的环境中。管理用户与时间相关的状态。
  • 加密(Cryptography):使用加密算法保护数据更加安全,防止数据被偷
    窥。

判断是否使用shiro框架

cookie中添加rememberMe字段,返回包中发现cookie信息中存在rememberMe=deleteMe
在这里插入图片描述

环境搭建

使用docker搭建vulhub靶场
下载vulhub文件

git clone https://github.com/vulhub/vulhub.git

在这里插入图片描述
下载之后,有很多的组件、cms漏洞类型
cd 到shiro 文件夹
在这里插入图片描述
在这里插入图片描述
进入要开启的环境
在这里插入图片描述
对靶场进行编译

docker-compose build

运行漏洞环境

docker-compose up -d

查看当前运行环境

docker ps

在这里插入图片描述
可以看到开放的端口号
在服务器上搭建时,记得添加一下防火墙策略
访问靶场的8080端口,搭建成功
在这里插入图片描述

CVE-2010-3863

漏洞原理

在Apache Shiro 1.1.0以前的版本中,shiro 进行权限验证前未对url 做标准化处
理,攻击者可以构造/、//、/./、/…/ 等绕过权限验证。

影响版本

shiro < 1.1.0和JSecurity 0.9.x

漏洞复现

直接访问/admin时,会重定向到登录页面
访问/./admin
在这里插入图片描述
成功登录admin页面
在这里插入图片描述

CVE-2016-4437

漏洞原理

属于shiro550漏洞。

Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为
remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,
触发Java反序列化漏洞,进而在目标机器上执行任意命令。
shiro默认使用CookieRememberMeManager,对rememberMe的cookie做了加密
处理,在CookieRememberMeManaer类中将cookie中rememberMe字段内容先后
进行序列化、AES加密、Base64编码操作。在识别身份的时候,需要对Cookie里
的rememberMe字段解密。根据加密的顺序可以推断出解密的顺序为获取cookiebase64解码-AES解密-反序列化。

影响版本

Apache Shiro <= 1.2.4

漏洞复现

在这里插入图片描述
工具:https://github.com/SummerSec/ShiroAttack2/releases
在这里插入图片描述
找到了key,再爆破利用链
在这里插入图片描述
执行命令,成功
在这里插入图片描述

CVE-2020-1957

漏洞原理

我们需要分析我们请求的URL在整个项目的传入传递过程。在使用了shiro的项目
中,是我们请求的URL(URL1),进过shiro权限检验(URL2),昀后到springboot项目
找到路由来处理(URL3)
漏洞的出现就在URL1,URL2和URL3 有可能不是同一个URL,这就导致我们能
绕过shiro的校验,直接访问后端需要首选的URL。本例中的漏洞就是因为这个原
因产生的。
Shiro框架通过拦截器功能来对用户访问权限进行控制,如anon, authc等拦截器。
anon为匿名拦截器,不需要登录即可访问;authc为登录拦截器,需要登录才可以
访问。

影响版本

Apache Shiro < 1.5.2

漏洞复现

点击login
在这里插入图片描述
访问/admin时会重定向
因为代码层面加上;就会识别成绕过 后面加个/也可以
URL改为/xxx/…;/admin/绕过了登录,直接访问成功!
在这里插入图片描述

shiro-721

拉取环境

文件里没有shiro-721,得自己下载一下
git clone https://github.com/3ndz/Shiro-721.git
cd Shiro-721/Docker
docker build -t shiro-721 .
docker run -p 8080:8080 -d shiro-721

漏洞原理

在用户进行登录的时候,Apache Shiro 提供 RemenberMe 功能,可以存储 cookie,期间使用的是AES-128-CBC进行加密,可以通过Padding Oracle加密生成的攻击代码来重新构造一个恶意的 rememberMe 字段,重新请求网站,进行反序列化攻击,最终导致任意代码的执行,攻击者无需知道 rememberMe 的加密密钥。

漏洞复现

在这里插入图片描述
在这里插入图片描述
直接使用工具
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值