目录
简介
文件马与内存马的比较
文件马原理
内存马原理
内存马使用场景
内存马分类
内存马注入方式
这篇文章主要是概念性的,具体技术细节不做探究,重点在祛魅。
简介
内存马(Memory Shellcode)是一种恶意攻击技术,旨在通过利用程序或操作系统的漏洞,将恶意代码注入到系统内存中并执行。与传统的攻击方式不同,内存马不需要将恶意代码写入磁盘上的文件,而是直接在内存中进行操作,从而避开传统的安全防护措施。
内存马的危害性在于它可以绕过许多传统的安全防护机制,例如防病毒软件和防火墙,因为恶意代码不会留下明显的痕迹或文件。此外,由于直接在内存中执行,内存马攻击也更难以被检测和追踪。
文件马与内存马的比较
文件马原理
查找jsp文件,转换为.java文件 -> 编译为.class文件 -> 加载到JVM运行时内存 -> 实例化Servlet对象 -> 调用_jspService()处理业务逻辑
内存马原理
1.获取上下文环境Context对象
2.调用Context的方法,动态添加对象
内存马使用场景
1、禁止外连,不能反弹shell的情况
2、禁止写入文件的情况
3、写入文件会告警的情况
4、不支持.jsp文件解析的情况
内存马分类
1、Servlet型内存马,Servlet、Filter、Listener(需要借助于.jsp文件)
2、框架类型内存马,SpringController、Interceptor(需要借助于Java代码)
3、Agent类型内存马(需要借助于.jar文件)
内存马注入方式
1、基于JSPWebShell植入内存马
2、通过JavaAgent植入内存马
3、基于JavaWebRCE漏洞植入内存马【如:Fastjon(反序列化、JNDI)、SpringCloudGateway(创建恶意路由)、Log4j2 (JNDI)、Shiro(反序列化)、FreeMarker(SSTI)】