CVE-2016-4437 - Shiro反序列化
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