【Java安全】保护Java应用程序:如何嗅探JVM的变量

news/2025/1/26 17:18:36/文章来源:https://www.cnblogs.com/o-O-oO/p/18691997

在这篇文章中,我们回顾如何嗅探JVM的变量可能的方法。这篇文章的主要目的是解释如何保护你的应用程序。计划是进行下一步的攻击。

从Dump中读取敏感数据。通过在外部依赖中注入恶意软件来窃取源代码。

从Java Dump中窃取数据, 如果有人获得了对Java进程的访问权,他可能会读取敏感信息,如密码或数据库地址。

让我们来看看下一个数据源的配置:

@Bean
public DataSource dataSource(){MysqlDataSource mysqlDataSource = new MysqlDataSource();mysqlDataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe");mysqlDataSource.setUser("xxmySqlUser");mysqlDataSource.setPassword("xxsecretPassword");return mysqlDataSource;
}

现在,如果黑客攻击我们的服务器并获得了对JVM进程的访问权,那么他可以通过使用jcmd程序来Dump JVM的内存。比如:

jcmd 20932 GC.heap_dump d:\dump\JVM_DUMP.bin

当他得到JVM的Dump时,他可以用VisualVM剖析器用QOL语言来查询它。

例如,为了获取所有以 "JDBC "开头的字符串,他可以进行下一步查询:

select s from java.lang.String s where s.toString().startsWith("jdbc")

或者作为一种选择,他可以获取MysqlDataSource对象

select filter(heap.classes(), "/com.mysql.cj.jdbc.MysqlDataSource/.test(it.name)")

如何防止从Dump中读取数据?

为了防止这个攻击需要这么做:

  • 在JVM启动时添加参数-XX:+DisableAttachMechanism。

  • 在Linux中通过禁用trace syscall来禁用jcmd调用(如果你使用ubuntu)

  • 对于非root用户,通过设置hidepid=1来禁止对进程的访问

  • 在Java端对数据进行加密

原创 Peter Megadotnet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/876030.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二讲 二分法

第一题 二分查找 输入一个整数 n 和 n 个整数,保证这 n个整数已经按照从小到大进行排序。 然后输入一个整数 q( q≤100000)代表 q次查询。接下来 q 行,每行含有一个整数 m ,代表一次查询。对于每次查询,使用二分查找判断 m 是否在之前输入的 n个整数中出现过。如果出现,…

draw.io(免费流程图制作工具) v26.0.7 中文绿色版

draw.io是一款免费的在线图表绘制工具,它提供了强大的功能和易于使用的界面,适用于各种绘图需求。 软件功能 1. 多种类型的图表:draw.io支持创建各种类型的图表,包括流程图、组织结构图、UML图、网络拓扑图、平面图等。2. 自定义图表元素:用户可以根据自己的需求,自定义…

Svelte 最新中文文档翻译(6)—— if、each、key、await 逻辑区块

前言 Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1:Svelte 以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构…

java中的集合ArrayList

创建集合对象有3种形式 1,不需要传递构造参数,直接new就可以,此时底层数组为空数组。 2,构造参数需要传递一个int类型的值, 用于设置底层数组的长度 3,构造参数需要传递一个Collection集合类型的值,用于将集合中的数据放置在当前的集合中。 第1种方式创建数组 package goodSt…

IDM下载器(Internet Download Manager) v6.42.27 直装破解版

Internet Download Manager(IDM)是一款功能强大的下载管理软件,可以帮助用户加快下载速度,管理下载任务,并能够恢复中断或损坏的下载任务。 软件功能 多线程下载:IDM支持多线程下载,可以同时下载多个文件,提高下载速度。定时下载:用户可以设置定时下载任务,方便管理…

Exadata磁盘写入性能差,导致数据库出现大量free buffer waits

1、故障概述 某客户的Exadata上,运行着很多套ORACLE数据库,在每个月的征期内,业务系统经常出现卡顿的现象,主要表现为业务数据写入慢,甚至出现业务写入超时的情况。2、故障分析 2.1 AWR分析 (1).分析数据库的AWR报告。(本报告取自于业务高峰期)从数据库的TOP10等待事件…

zkap_春节赛

题目情况web welcome_to_zkaqctf nodejs题目。给出附件包含后端源码,app listen部分根据本地nodejs监听调式需要,自行添加,用node --inspect app.js命令启动调试监听 // const host = 127.0.0.1; // 主机名或IP地址 // const port = 9999; // const app = fastify(); app.l…

AI 语音独角兽 ElevenLabs C 轮融资估值超 30 亿美元;港科大 Llasa TTS:15 秒声音克隆支持中英双语

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

The Locker Puzzle

The Locker Puzzle 今天刷到一个很有趣的著名概率题,如果有和我一样闲的人可以一起看看。 Philippe Flajolet和Robert Sedgewick在2009年提出了“百囚犯问题(The Locker Puzzle)”。 问题描述 在监狱中有100名囚犯,被编号为1-100号。典狱长决定给囚犯们一次特赦的机会,条件…

DDR3 memory type not supported

问题现象 电脑开机之后无法进入系统,而是显示下图: 解决方法 以为是内存条金手指有灰尘导致无法正常读取,插拔擦拭之后问题依旧。在网上查阅资料之后发现可能是内存条的电压与原装的不同,把加装的第二根内存取下之后,电脑正常。hp技术支持中心:https://h30434.www3.hp.co…

Python数据格式转换神器-提高办公效率

Python办公技巧,数据转换神器,提升工作效率一、引言在工作日常里,数据转换总是让人头疼?别急,今天揭秘一个超级实用的Python技巧,帮你轻松搞定各种数据格式转换,提升工作效率不是梦! 场景1:你手头有一堆CSV格式的(逗号分隔符)数据,其他部门或公司需要你提供其中几列关…

Python Functools模块

代码:#coding=utf-8import functools from functools import cache from functools import cached_property, lru_cache from functools import partial, partialmethod from functools import singledispatch, singledispatchmethod from functools import update_wrapper, w…