首页 > Web开发 > 详细

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

时间:2020-05-27 11:37:58      阅读:318      评论:0      收藏:0      [点我收藏+]

漏洞描述

Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞。

漏洞原理

Apache 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进行解密并且反序列化,最终造成反序列化漏洞。

漏洞复现

1、进入vulhub-master/shiro/CVE-2016-4437目录下
2、docker环境启动

docker-compose up -d

3、浏览器访问http://192.168.2.147:8080
技术分享图片
4、使用Shiro_exploit的poc进行漏洞利用

python3 shiro_exploit.py -t 3 -u http://192.168.2.147:8080 -p "touch a.txt"

技术分享图片

5、成功在服务器创建a.txt文件
技术分享图片

POC

漏洞脚本地址:Shiro_exploit

利用nc反弹shell

待更新

参考链接

https://www.cnblogs.com/loong-hon/p/10619616.html
https://bacde.me/post/Apache-Shiro-Deserialize-Vulnerability/

免责声明

严禁读者利用以上介绍知识点对网站进行非法操作 , 本文仅用于技术交流和学习 , 如果您利用文章中介绍的知识对他人造成损失 , 后果由您自行承担 , 如果您不能同意该约定 , 请您务必不要阅读该文章 , 感谢您的配合 !

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

原文:https://www.cnblogs.com/renhaoblog/p/12971152.html

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