shiro 漏洞复现

850次阅读
没有评论

一、漏洞简介

1.1 shiro 简介

Apache Shiro 框架,作为一款集大成者的 Java 安全框架,以其卓越的性能、高度的灵活性和用户友好的设计而著称。它不仅集成了身份验证、细粒度的授权控制、强健的加密机制以及会话管理等核心安全功能于一体,还通过其直观易懂的 API 接口,极大地简化了安全功能的集成过程,让开发者能够轻松驾驭从轻量级移动应用到复杂庞大的 Web 及企业级应用的全方位安全保护需求。Apache Shiro 框架凭借其全面的安全功能、简洁易用的 API 接口以及卓越的性能表现,成为了 Java 开发者在构建安全应用程序时的首选工具。无论是小型项目还是大型企业级应用,Shiro 都能提供强大的安全支持,助力开发者轻松应对各种安全挑战。

1.2 shiro 漏洞原理

Apache Shiro 框架提供了记住密码的功能(RememberMe),用户登录成功后会将用户信息加密,加密过程: 用户信息 => 序列化 =>AES 加密 =>base64 编码 =>RememberMe Cookie 值。如果用户勾选记住密码,那么在请求中会携带 cookie,并且将加密信息存放在 cookie 的 rememberMe 字段里面,在服务端收到请求对 rememberMe 值,先 base64 解码然后 AES 解密再反序列化,这个加密过程如果我们知道 AES 加密的密钥,那么我们把用户信息替换成恶意命令。
判断一个页面的登录是否使用了 shiro 框架:勾选记住密码选项后,点击登录,抓包,观察请求包中是否有 rememberme 字段,响应包中是否有 Set-cookie:rememberMe=deleteMe 字段。

二、漏洞复现

2.1 CVE-2010-3863

2.1.1 漏洞原理

Apache Shiro 是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro 框架直观、易用,同时也能提供健壮的安全性。在 Apache Shiro 1.1.0 以前的版本中,shiro 进行权限验证前未对 url 做标准化处理,攻击者可以构造 /、//、/./、/…/ 等绕过权限验证。

2.1.2 影响版本

shiro < 1.1.0 和 JSecurity 0.9.x

2.1.3 漏洞复现

# 启动环境
cd /opt/vulhub-master/shiro/CVE-2010-3863
docker-compose up -d

访问地址 http://localhost:8080/

shiro 漏洞复现

用 burp 抓包

shiro 漏洞复现

直接请求访问 /admin,无法访问,将会被重定向到登录页面。

shiro 漏洞复现

构造恶意请求 /./admin,即可绕过权限校验,访问到管理页面。

shiro 漏洞复现

2.2 CVE-2016-4437

2.2.1 漏洞原理

Apache Shiro 1.2.4 及以前版本中,加密的用户信息序列化后存储在名为 remember-me 的 Cookie 中。攻击者可以使用 Shiro 的默认密钥伪造用户 Cookie,触发 Java 反序列化漏洞,进而在目标机器上执行任意命令。
shiro 默认使用 CookieRememberMeManager,对 rememberMe 的 cookie 做了加密处理,在 CookieRememberMeManaer 类中将 cookie 中 rememberMe 字段内容先后进行序列化、AES 加密、Base64 编码操作。在识别身份的时候,需要对 Cookie 里的 rememberMe 字段解密。根据加密的顺序可以推断出解密的顺序为获取 cookie-base64 解码 -AES 解密 - 反序列化。

2.2.2 影响版本

Apache Shiro <= 1.2.4

2.2.3 漏洞复现

# 启动环境
cd /opt/vulhub-master/shiro/CVE-2016-4437
docker-compose up -d

这里利用工具 shiro_attack 完成实验。
工具地址:https://github.com/SummerSec/ShiroAttack2/releases/download/4.7.0/shiro_attack-4.7.0-SNAPSHOT-all.zip

打开工具,输入目标地址,首先爆破密钥,得到密钥,再爆破利用链及回显。

shiro 漏洞复现

成功后输入命令执行

shiro 漏洞复现

2.3 CVE-2020-1957

2.3.1 漏洞原理

CVE-2020-1957,Spring Boot 中使用 Apache Shiro 进行身份验证、权限控制时,可以精心构造恶意的 URL,利用 Apache Shiro 和 Spring Boot 对 URL 的处理的差异化,可以绕过 Apache Shiro 对 Spring Boot 中的 Servlet 的权限控制,越权并实现未授权访问。

2.3.2 影响版本

Apache Shiro < 1.5.1

2.3.3 漏洞复现

# 启动环境
cd /opt/vulhub-master/shiro/CVE-2020-1957
docker-compose up -d

使用 BurpSuite 抓取数据包,访问 /admin/ 目录,回显 302 并跳转到登录页面。

shiro 漏洞复现

构造恶意请求/xxx/..;/admin/,即可绕过权限校验,访问到管理页面。

shiro 漏洞复现
正文完
 0
zdq
版权声明:本站原创文章,由 zdq 于2024-09-03发表,共计2024字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
热评文章
养龙虾-推荐一些有用的Openclaw Skills

养龙虾-推荐一些有用的Openclaw Skills

一、前言 OpenClaw(人称“小龙虾”)自 2025 年底发布以来,凭借其模块化的 Skills 扩展机制...
评论(没有评论)