CVE-2016-4437 - Shiro反序列化

less than 1 minute read

CVE-2016-4437 - Shiro反序列化

0x00 漏洞概述

Apache Shiro是一款开源的java安全框架,执行身份验证、授权、密码和会话管理。 Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为rememberMe的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。

0x01 影响范围

Apache Shiro <=1.2.4

0x02 环境搭建

使用vulhub搭建环境

$ docker-compose up -d

0x03 漏洞原理

Shiro的身份认证工作流程:

通过前端传入的值–>获取remenberMe cookie–>base64加密–>AES加密–>反序列化

以上流程中AES加密的密钥存在padding oracle攻击及密钥泄露。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞

0x04 漏洞检测

尝试登录,登录的返回包中有rememberMe=deleteMe字段

或者不登录,发送一个GET请求登录页面的包,把cookie改成rememberMe=1,返回包中也存在rememberMe=deleteMe字段

则可判断使用了shiro框架,接下来使用工具ShiroExploit 检测是否存在shiro反序列化漏洞

https://github.com/feihong-cs/ShiroExploit-Deprecated/releases/tag/v2.51

当命令框可输入,代表存在漏洞

可以勾选便捷操作,反弹shell,输入攻击机的ip和端口号,并在攻击机监听端口,可成功获取目标shell