漏洞复现—Shiro rememberMe反序列化漏洞CVE-2016-4437

本文详细介绍了Apache Shiro的rememberMe功能存在的反序列化漏洞(CVE-2016-4437),该漏洞允许攻击者通过构造恶意数据触发远程代码执行。内容包括漏洞原理、影响版本、特征判断以及多种漏洞利用方法,如使用dnslog平台、命令执行和加密反弹。提供了一个GitHub链接以获取相关脚本。

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

基础知识

  Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。
  Apache Shiro默认使用了CookieRememberMeManager,用户登录成功后会生成经过加密并编码的cookie,在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。

漏洞原理

  Apache Shiro处理cookie的流程是:得到rememberMe的cookie值 > Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
攻击时,脚本对命令的处理过程如下:命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值
  在整个漏洞利用过程中,比较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很容易就知道密钥了,Payload构造起来也是十分的简单。

影响版本

Apache Shiro < 1.2.4

特征判断

返回包中包含rememberMe=deleteMe字段。

在这里插入图片描述

漏洞利用


  复现过程基于同一台云主机,云主机内部靶场镜像开启shrio-CVE-2016-4437,文章内所有IP为同一个,请自行区分攻击方和受害方

  本文涉及的

<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` ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值