shiro反序列化漏洞复现
shiro反序列化漏洞复现
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。
一、shiro550利用条件
知道aes加密的key且目标服务器含有可利用的攻击链。
原理:
在Shiro <= 1.2.4中,反序列化过程中所用到的AES加密的key是硬编码在源码中,当用户勾选RememberMe并登录成功,Shiro会将用户的cookie值序列化,AES加密,接着base64编码后存储在cookie的rememberMe字段中.
服务端收到登录请求后,会对cookie的rememberMe字段的值进行base64解码,接着进行AES解密,然后反序列化。由于AES加密是对称式加密(key既能加密数据也能解密数据),所以当攻击者知道了AES key后,就能够构造恶意的rememberMe cookie值从而触发反序列化漏洞。
在服务端接收cookie值时,按照如下步骤来解析处理:
获取RememberMe的值 —> Base64解密 —> ASE解密 –> 反序列化
1 |
|
影响版本:1.2.4以下
解决payload过长的方式:
- 使用urlclassloader加载远程字节码
- 将字节码放在post的body中,恶意类实现加载body中的字节码即可.
二、漏 洞 复 现
使用vulhub靶场进行复现,启动漏洞环境:
进入shiro漏洞目录,然后执行
1 |
|
然后等待一会儿就好~比如像下图这样
访问http://192.168.56.132:8080/正常登陆
使用burp进行抓包,查看返回包
- 响应包中出现<rememberMe=deleteMe>可以用来大概判断是否使用了Shiro
可以使用工具尝试爆破一下密钥以及利用链,如果可爆破出密钥及利用链,则可以命令执行,以及注入内存马。
vps监听本地端口
利用工具可以进行反弹shell
反弹成功
shiro反序列化漏洞复现
https://nan-918.github.io/2022/04/14/shiro反序列化漏洞/