Home

Awesome

Memory Shell

JavaWeb MemoryShell Inject/Scan/Killer/Protect Research & Exploring

文章:JavaWeb 内存马一周目通关攻略

项目介绍

本项目用来学习和研究 JavaWeb 内存马添加和防御模式,共包含以下几个模块。

memshell-test

模块 memshell-test 中,针对各个常用中间件实现了至少一种 Servlet-API 类型的内存马。

包含几乎全部常见中间件的内存马写入测试文件,部分文件来自各位师傅们的分享,经修改和调整后已经全部经过测试。开箱即用。

目前包含的实现方式有:

中间件测试版本内存马实现方式
apusicAAS Enterprise Edition 9.0Filter
besBES-LITE-9.5.0.382Filter
glassfishGlassFish 5.0.0Filter<br />Grizzly Filter
inforsuiteInforSuiteAS_10Filter
jbossJBoss/WildFly 18.0.0.FinalServlet<br />Filter
jettyJetty 9.4.22Servlet<br />Filter
resinResin 4.0.65Servlet<br />Filter
tomcatTomcat 8.5.31Servlet<br />Filter<br />Listener<br />Tomcat Valve
tongwebTongWeb 7.0.25Servlet
weblogicWebLogic 12.2.1.3.0Filter
websphereWebSphere/Liberty 20.0.0.12Filter

由于重点关注内存马的写入方式,因此上下文的获取、关键类的定位这里没有讨论。

欢迎测试和补充。

memshell-inject

模拟冰蝎的写入内存马测试项目。

使用 JavaAgent 技术配合 javassist 写入字节码,项目 Hook 了 javax.servlet.http.HttpServletRequestgetQueryString 方法,返回指定字符串,配合 memshell-test-tomcat 的 QueryStringServlet 使用。

memshell-spring

spring controller 内存马以及 interceptor 内存马动态添加测试项目。

memshell-loader && memshell-scanner

suagent 项目,使用 JavaAgent 技术来检测和防御内存马。

SuAgent

使用 JavaAgent 技术配合 ASM 字节码编织,获取系统中全部加载的 class,并判断其是否为内存马,如果匹配检测逻辑,将插入字节码绕过内存马逻辑,达到防御内存马的目的。

使用方法:

测试视频:

Memory Shell Test

广告

Suagent 提供了 Servlet-API 内存马的查杀和清除能力,但是代码过于儿戏,覆盖不全是一方面,添加防御也是一方面,我会随缘更新这个项目不断完善主流内存马的查杀、检测及防御,但较为完整和成熟的 JavaWeb 内存马防御能力代码,请关注 RASP 安全产品:安百科技-灵蜥