Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)

目录

1、Apache Shiro简介

2、漏洞原理

关键因素:

漏洞分析:

漏洞特征:

3、影响版本

4、漏洞复现

任意命令执行

GETSHELL

防御措施


1、Apache Shiro简介

Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。

2、漏洞原理

Apache Shiro框架提供了记住我(rememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManage类中将cookie中rememberMe字段内容分别进行序列化、AES加密、Base64编码。

  1. 检索RememberMe Cookie的值
  2. Base 64解码
  3. AES解密(加密密钥硬编码)
  4. 进行反序列化操作(未过滤处理)

攻击者可以使用Shiro的默认密钥构造恶意序列化对象进行编码来伪造用户的Cookie,服务端反序列化时触发漏洞,从而执行命令。

关键因素:

AES的加密密钥在Shiro的1.2.4之前版本中使用的是硬编码: KPH+blxk5D2deZilxcaaaA==,只要找到密钥后就可以通过构造恶意的序列化对象进行编码,加密,然后作为Cookie加密发送,服务端接收后会解密并触发反序列化漏洞。在1.2.4之后,ASE秘钥就不为默认了,需要获取到Key才可以进行渗透。

漏洞分析

Apache Shiro默认使用了CookieRememberMeManage,其处理cookie是的流程是:得到rememberMe的cookie值 > Base64解码 > AES解密 > 反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞

漏洞特征

在返回包的Set-Cookie中存在rememberMe=deleteMe字段

3、影响版本

Apache Shiro <= 1.2.4

4、漏洞复现

任意命令执行

(这里也可以使用收集的硬编码来做,我使用工具运行,其原理一样的)

漏洞环境搭建采用vulhub,具体方式,这里不在赘述。环境启动后,浏览器访问一下,8080端口映射

 使用BP工具查看下数据包,是否存在我们的漏洞条件:

 使用工具:

GitHub地址:GitHub - feihong-cs/ShiroExploit-Deprecated: Shiro550/Shiro721 一键化利用工具,支持多种回显方式Shiro550/Shiro721 一键化利用工具,支持多种回显方式. Contribute to feihong-cs/ShiroExploit-Deprecated development by creating an account on GitHub.https://github.com/feihong-cs/ShiroExploit工具使用后,我们可以输入些自己想要输入的命令:

这里我就简单创建个文件,以达到我们想要的效果

 进入docker容器,查看创建文件是否成功,很显然,成功创建czz

GETSHELL

不仅可以执行任意命令,也可以反弹shell:

使用kali来进行监听,并用我们的工具来做反弹shell;(这个工具比较简单方便)

 在kali下我们成功得到客户端的shell,成功getshell

复现成功!

防御措施

  • 升级Shiro到最新版本
  • WAF拦截Cookie中长度过大的rememberMe值

通过看了这位大佬的博客,学习到了shiro反序列化漏洞,也推荐给大家。

Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437) – 大鸟安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值