Java内存马攻防实战——攻击基础篇

一文深度学习java内存马 java内存马注入一般分为两种动态注册添加新的listener/filter/servlet/controller等等agent注入修改已有class,插入恶意代码在理解内存马注入前,有几个概念需要掌握的。类加载双亲委派问题以及context类反射。 阅读详情

​

在红蓝对抗中,攻击方广泛应用webshell等技术在防守方提供的服务中植入后门,防守方也发展出各种技术来应对攻击,传统的落地型webshell很容易被攻击方检测和绞杀。而内存马技术则是通过在运行的服务中直接插入运行攻击者的webshell逻辑,利用中间件的进程执行某些恶意代码,而不依赖实体文件的存在实现的服务后门,因此具有更好的隐蔽性,也更容易躲避传统安全监测设备的检测。

本文以Java语言为基础讨论内存马技术的攻防,分为两个篇章,分别是攻击基础篇和防护应用篇。本篇攻击基础篇介绍了Java Servlet技术前置知识,并重点讨论了Java内存马的注入点和注入方式。下一篇文章将会针对这些注入方式的拦截防御手段展开讨论,进一步探索Java内存马的攻防实战。

JAVA Servlet技术前置知识

Servlet/Filter/Listener JAVA WEB三大件

1. Servlet

Servlet 是服务端的 Java 应用程序,用于处理HTTP请求,做出相应的响应。

​

2. Filter

Filter 是介于 Web 容器和 Servlet 之间的过滤器,用于过滤未到达 Servlet 的请求或者由 Servlet 生成但还未返回响应。客户端请求从 Web 容器到达 Servlet 之前,会先经过 Filter,由 Filter 对 request 的某些信息进行处理之后交给 Servlet。同样,响应从 Servlet 传回 Web 容器之前,也会被 Filter 拦截,由 Filter 对 response 进行处理之后再交给 Web 容器。

​

3. Listener

Listener 是用于监听某些特定动作的监听器。当特定动作发生时,监听该动作的监听器就会自动调用对应的方法。下面是一个HttpSession的Listener示意图。

​

该 Listener 监听 session 的两种状态,即创建和销毁。当 session 被创建时,会自动调用 HttpSessionListener 的 sessionCreated() 方法,我们可以在该方法中添加一些处理逻辑。当 session 被销毁时,则会调用 sessionDestroyed() 方法。

当我们在请求一个实现servlet-api规范的java web应用时,程序先自动执行 listener 监听器的内容,再去执行 filter 过滤器,如果存在多个过滤器则会组成过滤链,最后一个过滤器将会去执行 Servlet 的 service 方法,即 Listener -> Filter -> Servlet。

内存马的攻击面

webshell实际上也是一种web服务,那么从创建web服务的角度考虑,自顶向下,有下面几种手段和思路:

  1. 动态注册/字节码替换 interceptor/controller(使用框架如 spring/struts2/jfinal)

  2. 动态注册/字节码替换 使用责任链设计模式的中间件、框架的实现(例如 Tomcat 的 Pipeline & Valve,Grizzly 的 FilterChain & Filter 等等)

  3. 动态注册/字节码替换 servlet-api 的具体实现 servlet/filter/listener

  4. 动态注册/字节码替换一些定时任务的具体实现 比如 TimeTask等

另外,换一个角度来说,webshell作为一个后门,实际上我们需要他完成的工作是能接收到恶意输入,执行恶意输入并回显。那么我们可以考虑启动一个进程或线程,无限循环等待恶意输入并执行代码来作为一个后门。

环境准备

我们首先从Tomcat这一使用广泛的中间件开始说起,在其他中间件如weblogic中对servlet-api规范的实现略有不同,但其思想是一致的。

实验环境如下 jdk 8u102 springboot 2.5.5 (Tomcat embedded) fastjson 1.2.47

下面我们构造一个简单的JAVA 任意代码注入点

​

通过fastjson 1.2.47 rmi反序列化的方式进行注入,因为重点是注入内存马所以选择了jdk 1.8u102<121的版本进行实验。

fastjson使用的exp为:

JAVA安全—手搓内存马 首先什么是内存马呢,顾名思义就是把木马打进内存中。传统的webshell一旦把文件删除就断开连接了,而Java内存马则不同,它将恶意代码直接加载到内存中运行。因为代码是直接在内存中执行的,它不需要保存到硬盘上,这使得它很难被传统的杀毒软件发现和检测。至此结束。 阅读详情

相关推荐

学习了解内存马,看这篇就够了!(精华版)

目录 介绍: 一、内存马简介 1.1 webshell变迁 1.2 如何实现webshell内存马 1.3 内存马类型 二、背景知识 2.1 Java web三大件 2.2Tomcat 2.3 其他java背景知识 三、内存马实现 四、内存马检测与排查 4.1源码检测 4.2 内存马排查 介绍: 内存马,也被称为无文件马,是无文件攻击的一种常用手段。虽然由来已久,但是在此之前并未“大红大紫”。近年来盛行于攻防演练之中,攻防演练从2016年的几家参演单位,到2020年扩充到..

MachineGunJoe666 1万+

java Filter内存马分析

内存马就是无文件木马,无文件落地,它通常会存在进程,内存或者java虚拟机中,特点更加隐蔽,难以排查,并且也难以删除。而今天学习的Filter内存马是传统web应用型内存马,主要将恶意代码注入到过滤器中,当过滤器拦截servlet请求的参数时,过滤器中的恶意代码就会执行。

hackzkaq的博客 1008

Shell中的幽灵王者—JAVAWEB 内存马 【认知篇】

目前主流的防御措施针对Webshell的静态检出率在90%以上,在部分环境下甚至完全无法落地,防御方可以做到快速应急响应。正因为这些限制,内存马技术得以诞生并快速发展,无文件攻击、内存Webshell、进程注入等基于内存的攻击手段也受到了越来越多的师傅青睐,在实战环境中已占得一席之地。可以毫不夸张的说,内存马相关技术将会是未来渗透工程师必须要会使用的安全技术。本篇名为《JavaWeb内存马【认知篇】》,为什么是Java?

2501_90252289的博客 950

内存马涉及基础知识整理

Tomcat 简介 http服务器+servlet容器 部署和运行 mansger 密码文件配置 第一次如果不改都登录不进去 springboot打包 jar war的区别 Tomcat架构设计 Tomcat架构原理 几乎所有Web框架都是基于Servlet的封装,Sping应用本身就是一个Servlet,Tomcat是容器负责加载和运行Servlet 整体架构设计 一个Tomcat只有一个Server,一个Server至少一个Service 两个核心组件 A Connector----- B Co

vlogFeynman的博客 1859

Java内存马攻防实战:从Filter注入到检测与防御

在Java Web安全领域,内存马是一种高级攻击技术,它利用Java的类加载和反射机制,将恶意代码直接注入到JVM运行时内存中,实现无文件持久化。其核心原理是通过动态注册Filter、Servlet或Listener等Web组件,将恶意逻辑嵌入正常的请求处理流程。这种技术让传统基于文件特征的安全检测手段失效,对应用安全构成严重威胁。从技术价值看,理解内存马有助于构建纵深防御体系,提升对应用运行时安全的监控能力。在实际应用场景中,内存马常与哥斯拉、冰蝎等WebShell管理工具结合,通过Shiro、Fastj

weixin_33719619的博客 472

内存马基础知识 Java

Java中有三种类加载器:引导类加载器(Bootstrap Class Loader)、扩展类加载器(Extension Class Loader)和应用程序类加载器(Application Class Loader)。内存马(Memory Shellcode)是一种恶意代码注入技术,它利用软件漏洞或者其他方式将恶意代码加载到受感染的进程内存中,并在执行过程中劫持程序的控制流。在Java中,我们可以自定义类加载器,通过继承ClassLoader类并实现自己的加载逻辑来加载类。内存马基础知识 Java。

CodeShiftZ的博客 588

工业级隔离CAN FD收发器ISO1042设计实战:从原理到EMC防护

在工业自动化与伺服驱动系统中,CAN总线是实现设备间可靠通信的关键技术。其核心原理是通过差分信号传输和仲裁机制,在复杂电磁环境中实现多节点实时数据交换。这项技术的核心价值在于为高噪声、高干扰的工业现场提供了稳定、确定性的通信基础,是构建分布式控制系统不可或缺的环节。其典型应用场景包括新能源汽车电池管理、工业机器人伺服控制以及光伏逆变器集群通信等。本文将聚焦于如何通过高性能隔离CAN FD收发器(如TI的ISO1042)来应对地电位差、浪涌和高压串扰等现场挑战,深入解析其集成的电气隔离、±70V总线故障保护和

weixin_26834815的博客 385

生物信息学投稿避坑指南:如何根据影响因子和审稿速度选择最适合的期刊

本文为生物信息学研究者提供全面的期刊投稿策略,重点解析影响因子、审稿速度等关键指标,帮助选择最适合的期刊。涵盖算法开发类和应用型研究的投稿路径,分析不同出版社特点及开放获取的利弊,并提供投稿全流程优化建议,助力高效发表研究成果。

weixin_42652674的博客 378

DeepSeek高阶应用:DeepSeek+Coze构建智能文献综述与趋势分析自动化系统

本文详细介绍了如何利用DeepSeek与Coze构建智能文献综述与趋势分析自动化系统。通过DeepSeek的深度语义理解和结构化信息提取能力,结合Coze的可视化工作流编排,实现学术论文的自动解析、分类整理与知识入库。该系统能7x24小时自动追踪领域前沿,将研究人员从繁琐的文献处理中解放出来,专注于更高层次的思考与创新。

weixin_29050271的博客 179

在Modelsim中手动添加仿真库

缘由:在使用rom ip核的时候发现仿真需要altera_mf库的支持,而我的ModelSim没有这个库,所以想写一篇手动添加仿真库的文章方便自己以后使用:首先新建一个库,名字叫做altera_mf:然后编译对应的库文件:这里altera_mf.v文件是在quartus安装路径下quartus\eda\sim_lib文件夹下,点击编译后退出:最后在modelsim->example文件夹下可以找到编译好的库文件:

欢迎一起交流问题! 3402

论文学习:Towards Automated Infographic Design:Deep Learning-based Auto-generation of Extensible Timeline

title: “Towards Automated Infographic Design:Deep Learning-based Auto-generation of Extensible Timeline” tags: [“论文评述”, “报告”] date: 2019-08-22 author: 叶慧 mathjax: true 论文:Towards Automated Infograph...

xiaoyehahaha的博客 731

Linux内核模块开发实战指南(2025版)

2025年Linux内核模块开发迎来革命性突破!本文将从零开始手把手教你构建可动态加载的AI加速驱动模块,揭秘最新内核特性与开发技巧,更包含独家性能调优方案与跨架构移植秘籍。文末附赠价值百万的调试脚本,助你轻松突破开发瓶颈!

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 1807

Ubuntu操作系统等保测评指南

Ubuntu操作系统等保测评指南

qq_40181198的博客 7025

【乐鑫】唤醒词修改方法

乐鑫科技的语音识别模块(如ESP-SR)支持自定义唤醒词,但需通过官方工具链完成。

以实战经验介绍行业知识 825

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: Java 面向对象之类和对象
下一篇: Java项目中玩转Redis6.0客户端缓存
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值