码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • heapdump泄露Shiro key从而RCE


    1. 简介

    我搭建了一个Spring heapdump泄露shiro key从而RCE的漏洞环境,Github地址:https://github.com/P4r4d1se/heapdump_shiro_vuln
    漏洞利用条件:

    • Spring Shiro环境
    • 存在heapdump文件泄露
    • 存在可利用链

    2. 漏洞原理

    Shiro相关的漏洞原理和调试分析已经有很多大佬分享过了,这里不再赘述,这里主要针对这个漏洞环境进行说明:
    (1)Spring其实是有自己默认安全框架的,叫Spring Security,但可能有的开发用Shiro用习惯了,将Spring Securiy替换成了Shiro,这种情况并不少见,比如若依就是Spring shiro。

    (2)在有key的情况下,即使是最新版的Shiro也一样存在漏洞,而且在很多时候都会因为开发、部署等问题导致shiro key的泄露。
    (3)Shiro大于1.2.4的版本中,在没有开发人员人工干预的情况下key改为了随机生成,这个随机生成是在每次启动Web环境的时候,重启前这个key不会改变,可以在JVM虚拟机内存里找到。

    (4)Spring的heapdump文件就是从JVM虚拟机内存导出的。
    综上所述导致了这个组合漏洞的产生。

    3. 漏洞演示

    加载漏洞环境后,可以看到Shiro版本为1.8.0:

    访问8080端口的/actuator/heapdump获取heapdump文件:


    获取其中的shiro key,我常用的有两种方式:
    (1)JDumpSpider:
    https://github.com/whwlsfb/JDumpSpider
    这个小工具可以自动爬取heapdump中的变量信息,比较方便,坏处是可能会漏掉没在爬取列表中的信息。
    直接运行:java -jar JDumpSpider.jar heapdump即可自动获取变量信息,这里获取到ShiroKey:
    (2)jvisualvm.exe:Java自带的工具,默认路径为:JDK目录/bin/jvisualvm.exe
    这个工具需要手动去找想要的信息,在过滤里输入org.apache.shiro.web.mgt.CookieRememberMeManager,圈出来的16个字节的值就是key:
    用一个Python小脚本转成base64编码后的Shiro key:

    用一个Python小脚本转成base64编码后的Shiro key:

    1. import base64
    2. import struct
    3. print(base64.b64encode(struct.pack(', 109,-96,12,-115,33,59,24,112,44,124,56,110,-15,59,1,-41)))

    使用获得的key进行利用成功:

    重新启动服务器再次获取shiro key,可以看到key改变了,验证了漏洞原理的第3点,每次启动生成一个随机key:

    改用新的key仍然可进行利用:

    转自原文链接 :  https://xz.aliyun.com/t/11908
  • 相关阅读:
    串口中断(10)自定义通讯协议-协议带数据长度及接收应答处理
    【数据库三大范式】让我们来聊一聊数据库的三大范式和反范式设计
    【云原生之k8s】Pod 基础概念
    寻找合作伙伴,兼职制作软件
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java高校师生党建管理系统4d8du
    前后端数据接口协作提效实践
    2. 线程管控
    Ubuntu20.04 下编译和运行 FreeSWITCH的问题汇总
    基于springboot实现校园台球厅人员与设备系统项目【项目源码+论文说明】计算机毕业设计
    RISCV学习笔记7.10(开源虚拟机篇)--AlmaLinux虚拟机安装python与labview自动化软件
  • 原文地址:https://blog.csdn.net/m0_64910183/article/details/128185525
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号