前言
在渗透测试中,经常需要复现中间件、操作系统、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-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字段
漏洞原理
在读取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也搭建了一个平台,目前还在内部试用阶段,也非常欢迎各位师傅前来试用,需要账号可以联系小编~(回复较慢)
复现过程
注意事项
-
根据不同版本的不同加密方式,选择相对应的爆破方式
-
X-ray对于这个漏洞的检测准确率非常高,如果遇到密钥无法爆破的情况,可以尝试使用X-ray
-
工具
链接:
https://pan.baidu.com/s/1cJGZt9yiEfy8N8EneehYGA?pwd=0zc3
-
提取码:
0zc3
-
解压密码后台回复关键字: Shiro
加固方法
1、升级shiro到最新版本(推荐)
2、变更RememberMe字段(缓解)
3、手动设置key值为随机或变更默认密钥(缓解)
往期回顾
后记
SpaceSec安全团队热衷分享网络安全相关的技术,希望能和各位师傅们一同成长,后续更新内容将会在公众号中持续更新,欢迎关注交流呀~
关注公众号 SpaceSec安全团队,回复关键字 "小程序",即可获得小程序解密工具,“子域名”-获取子域名工具,“先知”-获取先知社区文章合集,“病毒”-获取病毒分析系列工具包。
声明
-
本文初衷为分享网络安全知识,请勿利用技术做出任何危害网络安全的行为,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,与SpaceSec安全团队及作者无关!
-
文章中部分学习内容来自于网络,回馈予网络,如涉及版权问题,请联系删除。
-
SpaceSec 保留对文章绝对的解释权,转载与传播时须保证文章的完整性,同时标明出处。未经允许,禁止转载或用于商业用途。
原文始发于微信公众号(SpaceSec安全团队):追洞计划之渗透测试篇|Shiro反序列化
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论