浅谈shiro反序列化漏洞


环境搭建
kali下利用docker搭建shiro环境

1、kali部署docker环境
获取docker镜像

docker pull medicean/vulapps:s_shiro_1

2、重启docker

systemctl restart docker

3、启动docker镜像

docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1

4、访问http://localhost:8081/

将localhost换成实际IP地址访问

Shiro反序列化漏洞利用
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。Shiro框架直观、易用,同时也能提供健壮的安全性。

Shiro remrmberMe反序列化漏洞(Shiro-550)
1、漏洞原理
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64编码再进行AES解密再反序列化,而用户传入的值可以被用户控制,就导致了反序列化RCE漏洞。
漏洞利用的过程如下:
命令>序列化>AES加密>base64编码>RememberMe Cookie值>base64解码>AES解密>反序列化>命令
在整个漏洞利用的过程中,重点在于AES加密的密钥,构造Payload的重点在于猜测AES加密使用的密钥。

2、影响的版本
Apache Shiro<1.2.4

3、特征判断
返回包中set-cookie中包含RememberMe=deleteMe字段
如果返回包里不存在RememberMe=deleteMe字段,可尝试在请求包中cookie字段添加RememberMe=1

4、漏洞利用
工具下载

https://github.com/j1anFen/shiro_attack/releases/tag/2.2

可能出现java版本过高导致报错无法运行,可使用下列命令调整java版本

update-alternatives --config java 

(1)漏洞利用
工具启动

java -jar shiro_attack-2.2.jar

输入目标地址
点击爆破密钥,检查是否存在默认的key
发现存在shiro框架,key值为 kPH+bIxk5D2deZiIxcaaaA==

点击爆破利用链及回显
获取到可以进行攻击的利用链和回显方式
发现构造链:CommonsCollections2 回显方式: TomcatEcho

执行命令

尝试打一个内存马
抓取一个静态文件的路径(该路径需要可以访问的到),就是你了,/favicon.ico

注入成功

哥斯拉启动

执行下命令


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM