mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-22 07:00:43 +08:00
44 lines
3.4 KiB
Plaintext
44 lines
3.4 KiB
Plaintext
---
|
||
title: 什么是 Java 内存马
|
||
---
|
||
|
||
Java 内存马是一种无文件 webshell,相较于传统的 webshell,它无须落地 JSP 文件即可实现 webshell 的所有功能。其唯一缺点可能就是服务重启即失效,不过也出现了附带的内存马复活相关技术。
|
||
|
||
## 什么是 webshell
|
||
|
||
> From [wikipedia](https://en.wikipedia.org/wiki/Web_shell)
|
||
|
||
webshell 是一种类似于 shell 的入口,攻击者可通过它来控制目标 web 服务器并实施网络攻击。由于 PHP 被广泛应用于 Web 应用,因此 PHP webshell 是最常见的,当然 ASP、Java、NodeJs 等框架与编程语言也存在 webshell。
|
||
|
||
常见的 webshell 功能包括:
|
||
|
||
1. 命令回显,反弹 unix shell。
|
||
2. 网站管理工具,例如蚁剑、哥斯拉和冰蝎等。
|
||
3. 代理隧道,例如 reGeorg、Neo-reGeorg、suo5 等。
|
||
|
||
## 演变历程
|
||
|
||
随着攻防对抗强度越来越高,主机安全(文件监控、防篡改、EDR),WAF 流量设备,webshell 查杀等专业的安全设备被广泛使用。**webshell 已经从大马、小马、一句话马、加密一句话马逐步进化到现在的加密内存马,不断突破安全设备的检测**。无文件这一特性使主机安全设备变得失效,而加密则是针对 WAF 等流量设备,因此内存马使用得越来越多,当前唯一真正有效的防护措施似乎只剩下了 **RASP(运行时应用安全防护)** — 这也是我目前所从事的方向 Java RASP 研发 — [靖云甲](https://www.boundaryx.com/category/product/adr)。
|
||
|
||
内存马也被称为内存 webshell,相较于传统 webshell 的文件落地方式,只是在攻防对抗中进化,换了个实现方式挂 webshell。
|
||
|
||
此项目 https://github.com/tennc/webshell 收集了超多不同编程语言的 webshell,或许当你遇到有意思的 webshell 时,可以考虑将其改造成内存马。
|
||
|
||
## 常见 Java 内存马
|
||
|
||
在 Java 中 webshell 常见的后缀有 jsp 和 jspx。根据 Servlet 的定义(这部分的知识强烈推荐:[Head First Servlets and JSP](https://www.amazon.com/Head-First-Servlets-JSP-Certified/dp/0596516681)),JSP 本质就是一个 Servlet,它提供了独特的 entrypoint 用于访问。因此一开始大家最常打的内存马就是 Servlet 内存马,通过 JSP 获取 request 拿到 ServletContext 进行 Servlet 的动态注册。
|
||
|
||
冰蝎工具后来提供了 Java Agent 内存马实现,使得内存马技术得到了广泛传播。
|
||
|
||
**任何能进行 Web 通信的组件都可以成为内存马依附的位置**。
|
||
|
||
Java EE 中的 Servlet 规范就提供了 Servlet、Filter 以及 Listener,Tomcat 通过挖掘已经有了 Upgrade、WebSocket、Executor、Valve、ApplicationFilterChain。并且 SpringWebMVC 中的 Controller、Interceptor,SpringWebFlux 中的 WebFilter 这种框架内存马也被广泛使用。
|
||
|
||
从技术实现的不同,分为非 Agent 内存马与 Agent 内存马,由于 Agent 内存马需要落地 Jar 包,冰蝎工具的作者后续也提供了无文件 Agent 内存马的实现方式,参考:[Java 内存攻击技术漫谈](https://xz.aliyun.com/news/9525)、[论如何优雅的注入 Java Agent 内存马](https://xz.aliyun.com/news/11086)。
|
||
|
||
## 延伸阅读
|
||
|
||
- [Shell 中的幽灵王者 — JAVAWEB 内存马【认知篇】](https://www.4hou.com/posts/zlkq)
|
||
- [JAVA 内存马的“一生”](https://xz.aliyun.com/news/10451)
|
||
- [一文看懂内存马](https://www.freebuf.com/articles/web/274466.html)
|