Apache Shiro 1.2.4反序列化漏洞(Shiro-550)--Shiro rememberMe反序列化漏洞(CVE-2016-4437)

本文详细介绍了Apache Shiro 1.2.4版本中的一个严重安全漏洞,该漏洞允许攻击者通过伪造Cookie中的rememberMe字段,利用Java反序列化机制执行任意命令。文章内容包括漏洞影响的版本、分析、环境搭建和漏洞复现步骤,展示了如何通过 ysoserial 工具生成payload并利用Shiro的默认密钥加密,最终实现命令执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。

影响版本

Apache Shiro <= 1.2.4

漏洞特征:
shiro反序列化的特征:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段

漏洞分析

●Apache Shiro如何记住我?

1.序列化用户身份对象.(这里为SimplePrincipalCollection)
2. 对序列化后的数据进行AES加密,密钥为常量.
3. base64编码
4.设置到cookie中,cookie name等于rememberMe.

●Apache Shiro如何解析我?

1.读取cookie中的rememberMe的值.
2.对其值进行base64解码
3.AES解密
4.反序列化

●如何利用,进行攻击:

整体流程大概就是:命令 => 序列化 =>AES加密 => base64编码 => RememberMe Cookie值 => base64解密 =>

<think>我们参考了提供的引用内容,特别是引用[2]和引用[4]中关于使用Docker搭建漏洞环境的步骤。 根据引用[2]和[4],我们可以总结出以下步骤: 1. 拉取漏洞环境的Docker镜像:docker pull medicean/vulapps:s_shiro_1 2. 启动Docker容器:将容器的8080端口映射到主机的某个端口(例如8081),使用命令:docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1 3. 访问搭建好的环境:http://<your_host_ip>:8081 注意:如果主机有防火墙,需要放行对应端口(如8081)。 另外,引用[5]提到可以使用shiro_exploit.py进行漏洞利用,但用户目前只需要搭建环境,所以先提供环境搭建步骤。 因此,回答将按照以下步骤进行: 1. 确保已安装Docker并启动Docker服务。 2. 拉取镜像。 3. 运行容器。 4. 验证环境。 同时,考虑到用户可能需要进行漏洞复现,我们可以在相关问题中提供漏洞复现的参考。 注意:由于引用中提到的镜像名称一致,我们使用同一个镜像。</think>### Docker搭建Apache Shiro反序列化漏洞环境(CVE-2016-4437) #### 环境搭建步骤: 1. **拉取漏洞镜像** 使用官方漏洞测试镜像(需提前安装Docker): ```bash docker pull medicean/vulapps:s_shiro_1 ``` 2. **启动容器** 将容器8080端口映射到主机端口(示例用8081): ```bash docker run -d -p 8081:8080 --name shiro_cve medicean/vulapps:s_shiro_1 ``` - `-d`:后台运行 - `-p 8081:8080`:主机端口:容器端口 - `--name`:指定容器名称 3. **防火墙配置** 若主机有防火墙(如CentOS): ```bash firewall-cmd --add-port=8081/tcp --permanent firewall-cmd --reload ``` 4. **验证环境** 访问 `http://<你的服务器IP>:8081`,出现Apache Shiro测试页面即搭建成功[^2][^4]。 --- #### 漏洞验证(可选) 使用工具验证漏洞(需额外安装Python3): ```bash # 下载利用工具 git clone https://github.com/feihong-cs/ShiroExploit.git # 执行命令检测(示例创建测试文件) python3 ShiroExploit.py -u http://<IP>:8081 -p "touch /tmp/success" ``` 若返回`[+] 漏洞存在`且在容器中查看到`/tmp/success`文件,则验证成功[^5]。 --- #### 关键说明 1. 漏洞原理:Shiro 1.2.4使用硬编码AES密钥,攻击者可通过伪造rememberMe Cookie触发Java反序列化执行任意命令[^3]。 2. 环境镜像包含: - Apache Shiro 1.2.4 - 存在漏洞Web应用 - 集成Tomcat服务 3. 停止环境:`docker stop shiro_cve` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaynell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值