Skip to content

Commit 26d1145

Browse files
committed
open source
1 parent 78a9cdb commit 26d1145

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+4200
-123
lines changed

README.md

+18-23
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1-
2-
3-
4-
51
# Java Echo Generator
62

7-
8-
## 0x01 Introduce
3+
## 0x01 简介
94

105
**jEG (Java Echo Generator )** 是一款支持高度自定义的 Java 回显载荷生成工具。
116

@@ -16,25 +11,29 @@
1611
* 支持的输出格式 (BASE64/BCEL/BIGINTEGER/CLASS/JAR/JS)
1712

1813

19-
20-
14+
> [!WARNING]
2115
> 此工具仅限于安全研究和教学,用户承担因使用此工具而导致的所有法律和相关责任! 作者不承担任何法律和相关责任!
2216
2317

18+
## 0x02 编译
19+
20+
```shell
21+
mvn package assembly:single
22+
```
2423

25-
## 0x02 Usage
24+
## 0x03 使用
2625

2726
**图形化**
2827

2928
1. 下载 jEG-GUI-1.0.0.jar 运行即可
3029

31-
![image-20230928161217950](./img/image-20230928161217950.png)
30+
![image-20230928161217950](./img/gui.png)
3231

3332
**Woodpecker 插件**
3433

3534
1. 下载 jEG-Woodpecker-1.0.0.jar 到 woodpecker 插件目录下即可
3635

37-
![image-20230928153330494](./img/image-20230928153330494.png)
36+
![image-20230928153330494](./img/woodpecker-plugin.png)
3837

3938
**第三方库**
4039

@@ -74,22 +73,18 @@ System.out.println("请求头: " + config.getReqHeaderName());
7473
System.out.println(generator.getPayload());
7574
```
7675

77-
## 0x03 Reference
76+
77+
---
78+
7879

7980
使用手册
8081

8182
- [jEG - 高度自定义的 Java 回显生成工具](https://mp.weixin.qq.com/s/_TmPJnKtstL3KeysoyLcVA)
8283

8384

85+
参考项目
8486
```
85-
- https://gv7.me/articles/2020/semi-automatic-mining-request-implements-multiple-middleware-echo/
86-
- https://gist.github.com/fnmsd/8165cedd9fe735d7ef438b2e977af327
87-
- https://github.com/feihong-cs/Java-Rce-Echo
88-
```
89-
90-
91-
92-
93-
94-
95-
87+
https://gv7.me/articles/2020/semi-automatic-mining-request-implements-multiple-middleware-echo/
88+
https://gist.github.com/fnmsd/8165cedd9fe735d7ef438b2e977af327
89+
https://github.com/feihong-cs/Java-Rce-Echo
90+
```
File renamed without changes.

img/sglab.svg

-100
This file was deleted.
File renamed without changes.

jeg-common/pom.xml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<parent>
5+
<groupId>jeg</groupId>
6+
<artifactId>java-echo-generator</artifactId>
7+
<version>${reversion}</version>
8+
</parent>
9+
<artifactId>jEG-common</artifactId>
10+
<build>
11+
<finalName>${artifactId}-${reversion}</finalName>
12+
</build>
13+
14+
<dependencies>
15+
<dependency>
16+
<groupId>me.gv7.woodpecker</groupId>
17+
<artifactId>woodpecker-bcel</artifactId>
18+
<version>0.1.0</version>
19+
</dependency>
20+
</dependencies>
21+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package jeg.common.config;
2+
3+
public class Config {
4+
private String serverType;
5+
private String formatType;
6+
private String gadgetType;
7+
private String loaderClassName;
8+
private String classNameInFormatter;
9+
private byte[] classBytesInFormatter;
10+
private String classBase64InFormatter;
11+
12+
public String getOutputDir() {
13+
return outputDir;
14+
}
15+
16+
public void setOutputDir(String outputDir) {
17+
this.outputDir = outputDir;
18+
}
19+
20+
private String outputDir;
21+
public String getLoaderClassName() {
22+
return loaderClassName;
23+
}
24+
25+
public void setLoaderClassName(String loaderClassName) {
26+
this.loaderClassName = loaderClassName;
27+
}
28+
29+
public String getClassNameInFormatter() {
30+
return classNameInFormatter;
31+
}
32+
33+
public void setClassNameInFormatter(String classNameInFormatter) {
34+
this.classNameInFormatter = classNameInFormatter;
35+
}
36+
37+
public byte[] getClassBytesInFormatter() {
38+
return classBytesInFormatter;
39+
}
40+
41+
public void setClassBytesInFormatter(byte[] classBytesInFormatter) {
42+
this.classBytesInFormatter = classBytesInFormatter;
43+
}
44+
45+
public String getClassBase64InFormatter() {
46+
return classBase64InFormatter;
47+
}
48+
49+
public void setClassBase64InFormatter(String classBase64InFormatter) {
50+
this.classBase64InFormatter = classBase64InFormatter;
51+
}
52+
53+
54+
55+
public String getServerType() {
56+
return serverType;
57+
}
58+
59+
public void setServerType(String serverType) {
60+
this.serverType = serverType;
61+
}
62+
63+
public String getFormatType() {
64+
return formatType;
65+
}
66+
67+
public void setFormatType(String formatType) {
68+
this.formatType = formatType;
69+
}
70+
71+
public String getGadgetType() {
72+
return gadgetType;
73+
}
74+
75+
public void setGadgetType(String gadgetType) {
76+
this.gadgetType = gadgetType;
77+
}
78+
79+
public boolean isImplementsASTTransformationType() {
80+
return implementsASTTransformationType;
81+
}
82+
83+
public void setImplementsASTTransformationType(boolean implementsASTTransformationType) {
84+
this.implementsASTTransformationType = implementsASTTransformationType;
85+
}
86+
87+
public boolean isImplementsScriptEngineFactory() {
88+
return implementsScriptEngineFactory;
89+
}
90+
91+
public void setImplementsScriptEngineFactory(boolean implementsScriptEngineFactory) {
92+
this.implementsScriptEngineFactory = implementsScriptEngineFactory;
93+
}
94+
95+
private boolean implementsASTTransformationType = false;
96+
private boolean implementsScriptEngineFactory = false;
97+
98+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package jeg.common.config;
2+
3+
public interface Constants {
4+
5+
String FORMAT_CLASS = "CLASS";
6+
String FORMAT_BCEL = "BCEL";
7+
String FORMAT_JSP = "JSP";
8+
String FORMAT_JAR = "JAR";
9+
String FORMAT_JS = "JS";
10+
String FORMAT_BASE64 = "BASE64";
11+
String FORMAT_BIGINTEGER = "BIGINTEGER";
12+
13+
String GADGET_NONE = "NONE";
14+
String GADGET_JDK_TRANSLET = "JDK_AbstractTranslet";
15+
String GADGET_XALAN_TRANSLET = "XALAN_AbstractTranslet";
16+
17+
String SERVER_TOMCAT = "Tomcat";
18+
String SERVER_JETTY = "Jetty";
19+
String SERVER_RESIN = "Resin";
20+
String SERVER_SPRING_MVC = "SpringMVC";
21+
String SERVER_STRUTS2 = "Struts2";
22+
String SERVER_UNDERTOW = "Undertow";
23+
String SERVER_WEBLOGIC = "WebLogic";
24+
String SERVER_WEBSPHERE = "WebSphere";
25+
26+
String SERVER_UNKNOWN = "Unknown";
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package jeg.common.format;
2+
3+
import jeg.common.config.Config;
4+
import jeg.common.util.Base64Util;
5+
6+
public class BASE64Formatter implements IFormatter {
7+
@Override
8+
public byte[] transform(byte[] bytes, Config config) throws Exception {
9+
return Base64Util.encodeToBase64(bytes).replace("\n", "").replace("\r", "").getBytes();
10+
}
11+
}

0 commit comments

Comments
 (0)