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

漏洞描述

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
Apache Shiro 反序列化漏洞复现(CVE-2016-4437)
4、使用Shiro_exploit的poc进行漏洞利用

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

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

5、成功在服务器创建a.txt文件
Apache Shiro 反序列化漏洞复现(CVE-2016-4437)

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)

上一篇:android ndk cmake Invalid Android ABI


下一篇:Android第三课 联调华为手机