码农知识堂 - 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
  • 相关阅读:
    音频类型转换工具-可执行文件exe/dmg制作
    kafka术语
    java/golang/csharp/c++/python生成pb文件的方法
    在Gin框架中加入Zap日志中间件
    3.1python基础01
    【语音识别】搭建本地的语音转文字系统:FunASR
    存档-链表设计JS/TS版
    VUE指令语法解析标签属性
    My Ninety-fifth Page - 最大子序和 - By Nicolas
    【unity2023打包安卓工程】踩坑记录
  • 原文地址: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号