ApacheShiro反序列化漏洞(CVE-2016-4437)
Apache Shiro反序列化漏洞(CVE-2016-4437)
漏洞描述
Apache Shiro是⼀个强⼤且易⽤的Java安全框架,执⾏⾝份验证、授权、密码和会话管理。使⽤Shiro的易于理解的API,您可以快速、轻松地获得任何应⽤程序,从最⼩的移动应⽤程序到最⼤的⽹络和企业应⽤程序。
shiro官⽅描述:
⼤概意思是,shiro在登录处提供了Remember Me这个功能,来记录⽤户登录的凭证,然后shiro使⽤了CookieRememberMeManager类对⽤户的登陆凭证,也就是Remember Me的内容进⾏⼀系列处理:
使⽤Java序列化 ---> 使⽤密钥进⾏AES加密 ---> Base64加密 ---> 得到加密后的Remember Me内容
同时在识别⽤户⾝份的时候,需要对Remember Me的字段进⾏解密,解密的顺序为:
Remember Me加密内容 ---> Base64解密 ---> 使⽤密钥进⾏AES解密 --->Java反序列化
问题出在AES加密的密钥Key被硬编码在代码⾥,这意味着攻击者只要通过源代码到AES加密的密钥,就可以构造⼀个恶意对象,对其进⾏序列化,AES加密,Base64编码,然后将其作为cookie的Remember Me字段发送,Shiro将RememberMe进⾏解密并且反序列化,最终造成反序列化漏洞。
漏洞特征
shiro反序列化的特征:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段
影响范围
只要rememberMe的AES加密密钥泄露,Apache Shiro <= 1.2.4版本均存在威胁
漏洞复现
1. docker环境启动
docker-compose up -d
2. 浏览器访问⽹址172.16.100.170:8080
GitHub上下载exp可视化⼯具
下载apache
github/insightglacier/Shiro_exploit 3. 使⽤图形化界⾯ exp 检测利⽤漏洞3.1⽅式⼀:
3.1.1 输⼊⽬标地址,点击“下⼀步”
3.1.2 使⽤ceye.io进⾏检测
3.1.3 检测完成,尝试执⾏命令,命令执⾏,但没有反应,没有获得回显
⽅式⼆:
3.2.1 尝试反弹shell 到kali(IP 172.16.100.169 端⼝:4444)
3.2.2 反弹 shell 成功,命令执⾏成功

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。