freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Shiro漏洞复现(CVE-2016-4437)
李小白不是李白 2023-10-07 13:00:13 109423

介绍

Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。

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

区别

shiro有550和721,两者都是使用 Java 序列化 ---> 使用密钥进行 AES 加密 ---> Base64 加密 ---> 得到加密后的 remember Me 内容(解密原理反过来) 详细解读:问题出在 AES 加密的密钥 Key 被硬编码在代码里,这意味着攻击者只要通过源代码找到 AES 加密的密钥,就可以构造一个恶意对象,对其进行序列化,AES 加密,Base64 编码,然后将其作为cookie 的 remember Me 字段发送,Shiro 将 rememberMe 进行解密并且反序列化。550的话他的key是固定的,我们可以去大量收集之后爆破,而721的key是随机生成的,所以721的漏洞利用要比550复杂。

漏洞环境搭建

创建一台新的虚拟机,我这里使用的是centos7,具体配置如下:1696648140_6520cbcc778668836ea25.png!small?1696648140192

之后使用xshell去连接虚拟机,按一下步骤去安装docker后去部署vulhub靶场。

# 安装dokcer

curl -s https://get.docker.com/ | sh

# 安装docker-compose

curl -s https://bootstrap.pypa.io/get-pip.py | python3

pip install docker-compose

# 安装完成后,执行docker-compose -v,有返回则说明安装成功。

# 部署vulhub

git clone https://github.com/vulhub/vulhub.git

启动靶场

systemctl start docker

cd shiro/CVE-2016-4437

docker-compose up -d

漏洞特征

靶场启动后浏览器访问ip:8080,默认账号密码:admin:vulhub

1696649058_6520cf62ce017e0014a3d.png!small?1696649058591

我们先将cookie删除,然后重新登录,用错误的账号密码登录,然后将抓包内容打到burp中分析

1696649870_6520d28e042a992002597.png!small?1696649869783

请求中发现rember-me,响应中回rememberMe=deleteMe。

我们中心用正确的账号密码登录尝试

1696649991_6520d3071b441081c0fcd.png!small?1696649991492

我们可以看到响应中返回set-cookie。

漏洞复现

这里我们使用shiro利用工具:

Release ShiroExploit v2.51 Final · feihong-cs/ShiroExploit-Deprecated · GitHub

1696649203_6520cff3f15cb51cea2ae.png!small?16966492037521696649259_6520d02bab60a7909f2a4.png!small?1696649259584

爆破成功,我们去执行命令查看下

1696649337_6520d079d30047b19a66f.png!small?1696649337687

ok利用成功。

我们使用完靶场之后执行docker-compose down去关闭靶场,释放虚拟机的资源。

总结

这里我们是已经知道shiro漏洞是550,如果是721的话使用这个工具没办法去利用,因为他的key是随机的。

# 渗透测试 # shiro反序列化漏洞
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 李小白不是李白 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
李小白不是李白 LV.1
这家伙太懒了,还未填写个人描述!
  • 1 文章数
  • 1 关注者
文章目录