Java反序列化:Shiro-550反序列化漏洞深入剖析

💡 原文中文,约27300字,阅读约需65分钟。
📝

内容提要

Shiro 1.2.4版本之前存在反序列化漏洞,攻击者可利用固定加密Key伪造rememberMe Cookie,通过构造恶意序列化对象并利用commons-collections依赖进行攻击。

🎯

关键要点

  • Shiro 1.2.4版本之前存在反序列化漏洞,攻击者可伪造rememberMe Cookie。
  • 漏洞成因是内置了一个默认且固定的加密Key,导致攻击者可以伪造任意的rememberMe Cookie。
  • Shiro支持将持久化信息序列化并加密后保存在Cookie中。
  • 攻击者可以通过构造恶意序列化对象并利用commons-collections依赖进行攻击。
  • 环境搭建需要特定版本的jdk、Tomcat和相关依赖。
  • Shiro认证流程中,生成Cookie时使用了固定的加密key,导致反序列化漏洞。
  • 攻击者可以通过发送恶意Cookie来触发反序列化漏洞。
  • 利用Shiro Web中的commons-collections依赖构造payload进行攻击。
  • 成功弹计算机的攻击可以通过引入commons-beautils包实现。
  • POC的编写需要注意与环境中依赖版本的一致性。
  • 最终POC实现了通过优先队列和BeanComparator的组合来触发反序列化漏洞。

延伸问答

Shiro反序列化漏洞的成因是什么?

Shiro反序列化漏洞的成因是内置了一个默认且固定的加密Key,导致攻击者可以伪造任意的rememberMe Cookie。

如何利用Shiro的反序列化漏洞进行攻击?

攻击者可以通过构造恶意序列化对象并利用commons-collections依赖,发送伪造的rememberMe Cookie来触发反序列化漏洞。

Shiro 1.2.4版本之前的rememberMe Cookie是如何生成的?

在Shiro 1.2.4版本之前,rememberMe Cookie的生成使用了固定的加密key,对持久化信息进行序列化和加密后保存到Cookie中。

POC编写时需要注意哪些环境依赖?

POC编写时需要注意与环境中依赖版本的一致性,特别是commons-collections和commons-beanutils的版本。

Shiro反序列化漏洞的影响是什么?

Shiro反序列化漏洞可能导致攻击者伪造用户身份,获取未授权的访问权限,甚至执行任意代码。

如何搭建测试环境以复现Shiro反序列化漏洞?

搭建测试环境需要特定版本的jdk、Tomcat和相关依赖,如commons-collections和shiro-web等。

➡️

继续阅读