追洞计划之渗透测试篇|Shiro反序列化

admin 2023年3月3日13:38:27评论84 views字数 2388阅读7分57秒阅读模式

前言

在渗透测试中,经常需要复现中间件、操作系统、Web组件、CMS等的历史漏洞。在对漏洞复现步骤和漏洞原理没有足够了解的情况下,直接打Exp,是存在一定的风险的,可能对生产环境造成一定的影响。通常的做法是,本地先测试exp无误后,再打生产环境,但是这样效率可能没那么高。

因此,SpaceSec推出追洞计划,帮助各位渗透测试工程师更好地了解漏洞原理,以及复现过程中需要注意的事项。需要注意的是,这个系列是渗透测试篇,因此更加注重漏洞的复现,(如复现过程中存在的问题,如何调试payload),以及复现过程中可能产生的风险,并不是漏洞挖掘篇,因此漏洞的审计、挖掘过程并不是重点,只会稍微提及。我们会看这系列的反响,去决定是否继续更新,以及是否开启漏洞挖掘篇。

Shiro基础

Apache Shiro是一个强大且易用的Java安全框架,能够用于身份验证、授权、加密和会话管理。

Shiro拥有易于理解的API,您可以快速、轻松地获得任何应用程序——从最小的移动应用程序到最大的网络和企业应用程序。在Spring框架中,集成了shiro

Subject:当前用户,主体,是shiro的入口(存储用户的认证信息,初始为空)

SecurityManager:管理所有Subject,SecurityManager 是 Shiro 架构的核心

Realms:用于认证、授权逻辑判断(账号密码是否正确)

  • Authentication(认证):用户身份识别,通常被称为用户“登录”

  • Authorization(授权):访问控制。比如某个用户是否具有某个操作的使用权限。

  • Session Management(会话管理):特定于用户的会话管理,甚至在非web 或 EJB 应用程序。

  • Cryptography(加密):在对数据源使用加密算法加密的同时,保证易于使用。

追洞计划之渗透测试篇|Shiro反序列化

shiro反序列化 | Shiro-550|CVE-2016-4437

RememberMe 字段反序列化漏洞,由于其加密机制,有着天然可过WAF的优势,所以即使在防护环境下,依然有利用的可能性。

rememberMe特征

  • 未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie里也没有deleteMe字段

  • 登陆失败的话,不管勾选RememberMe字段没有,返回包都会有rememberMe=deleteMe字段

  • 不勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段。但是之后的所有请求中Cookie都不会有rememberMe字段

  • 勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段,还会有rememberMe字段,之后的所有请求中Cookie都会有rememberMe字段

漏洞原理

追洞计划之渗透测试篇|Shiro反序列化

在读取Cookie过程中,对Cookie进行解密并反序列化,而 Cookie 用户可控,一旦密钥泄露,攻击者便可实现反序列化攻击

利用条件

Version <= Shiro 1.2.4 ,Shiro 秘钥是硬编码的一个值 kPH+bIxk5D2deZiIxcaaaA==

Version <  Shiro 1.4.2,采用了AES-128-CBC的加密模式,存在 Padding Oracle

Version >= Shiro 1.4.2,改用 GCM 加密,不少程序员习惯性的 copy/paste,一些 Github 示例代码被直接复制到了项目中,可以用key字典进行爆破

环境搭建

这里推荐使用vulhub,是一个非常优秀的开源漏洞复现项目:https://github.com/vulhub/vulhub/tree/master/shiro/CVE-2016-4437

当然,SpaceSec也搭建了一个平台,目前还在内部试用阶段,也非常欢迎各位师傅前来试用,需要账号可以联系小编~(回复较慢)

追洞计划之渗透测试篇|Shiro反序列化

复现过程

拉到底部点击原文可查看B站发布的视频

注意事项

  • 根据不同版本的不同加密方式,选择相对应的爆破方式

  • X-ray对于这个漏洞的检测准确率非常高,如果遇到密钥无法爆破的情况,可以尝试使用X-ray

  • 工具

    链接


          https://pan.baidu.com/s/1cJGZt9yiEfy8N8EneehYGA?pwd=0zc3

  • 提取码:

    0zc3

  • 解压密码后台回复关键字: Shiro

加固方法

1、升级shiro到最新版本(推荐)

2、变更RememberMe字段(缓解)

3、手动设置key值为随机或变更默认密钥(缓解)

往期回顾

病毒分析系列3 | 初步动态分析工具使用

病毒分析系列2 | 使用PE工具进行初步静态分析

病毒分析系列 _ 病毒分析环境搭建

【资源分享】先知社区文章合集

信息收集系列|子域名收集姿势总结

小程序渗透测试系列(一)解密与解包及抓包环境搭建

后记

SpaceSec安全团队热衷分享网络安全相关的技术,希望能和各位师傅们一同成长,后续更新内容将会在公众号中持续更新,欢迎关注交流呀~

欢迎加私人微信:SpaceSec_S(不定期发放粉丝福利!)

追洞计划之渗透测试篇|Shiro反序列化

关注公众号 SpaceSec安全团队,回复关键字 "小程序",即可获得小程序解密工具,“子域名”-获取子域名工具,“先知”-获取先知社区文章合集,“病毒”-获取病毒分析系列工具包。

声明

  1. 本文初衷为分享网络安全知识,请勿利用技术做出任何危害网络安全的行为,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,与SpaceSec安全团队及作者无关!

  2. 文章中部分学习内容来自于网络,回馈予网络,如涉及版权问题,请联系删除。

  3. SpaceSec 保留对文章绝对的解释权,转载与传播时须保证文章的完整性,同时标明出处。未经允许,禁止转载或用于商业用途。


原文始发于微信公众号(SpaceSec安全团队):追洞计划之渗透测试篇|Shiro反序列化

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月3日13:38:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   追洞计划之渗透测试篇|Shiro反序列化https://cn-sec.com/archives/1585464.html

发表评论

匿名网友 填写信息