Skip to content

Commit fdb1627

Browse files
committed
update README
1 parent 2a65e42 commit fdb1627

2 files changed

Lines changed: 103 additions & 99 deletions

File tree

README.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,17 @@ extent.
2525

2626
## Quick Start
2727

28-
**Special Note: We only provide random password login protection for port 8011 by default. Other ports may have the risk
29-
of being counter-exploited. Please remember to close the corresponding ports after using the relevant functions.**
28+
> [!WARNING]
29+
> Special Note: We only provide random password login protection for port 8011 by default. Other ports may have the risk
30+
> of being counter-exploited. Please remember to close the corresponding ports after using the relevant functions.
3031
3132
### Method 1: Docker
3233

3334
You can start the `java-chains` project with a single `docker` command (recommended approach).
3435

3536
```shell
3637
docker run -d \
37-
--name web-chains \
38+
--name java-chains \
3839
--restart=always \
3940
-p 8011:8011 \
4041
-p 58080:58080 \
@@ -46,7 +47,7 @@ docker run -d \
4647
-p 50000:50000 \
4748
-e CHAINS_AUTH=true \
4849
-e CHAINS_PASS= \
49-
javachains/webchains:1.3.1
50+
javachains/javachains:1.4.0
5051
```
5152

5253
Authentication or password can be configured through environment variables;
@@ -77,7 +78,7 @@ Login page: `http://your-ip:8011`
7778

7879
⚠️ Only JDK8 is supported. Temurin8/Zulu8 JDK is recommended.
7980

80-
Use `java -jar web-chains.jar` to start. A randomly generated password will be printed after each startup.
81+
Use `java -jar java-chains.jar` to start. A randomly generated password will be printed after each startup.
8182

8283
Default listening address is 0.0.0.0. Login page: `http://your-ip:8011` (Use the username and password here to log in).
8384

@@ -86,13 +87,13 @@ You can set the web login password through environment variables, for example:
8687
Linux:
8788

8889
```bash
89-
export CHAINS_PASS=[your_password] && java -jar web-chains.jar
90+
export CHAINS_PASS=[your_password] && java -jar java-chains.jar
9091
```
9192

9293
Windows:
9394

9495
```cmd
95-
set CHAINS_PASS=[your_password] && java -jar web-chains.jar
96+
set CHAINS_PASS=[your_password] && java -jar java-chains.jar
9697
```
9798

9899
## Module Introduction

README.zh-cn.md

Lines changed: 95 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,76 @@ JNDI 注入、MySQL JDBC 反序列化、JRMP 反序列化等漏洞进行方便
2121
<img src="./img/main.zh-cn.png" />
2222
</p>
2323

24+
## 快速开始
25+
26+
> [!WARNING]
27+
> 特别注意:我们默认只对 8011 端口进行了随机密码的登陆保护。其他端口可能存在被反制的风险,使用完相关功能后记得及时关闭相应端口
28+
29+
### 方式一:Docker
30+
31+
你可以通过 `docker` 一条命令启动 `java-chains` 项目(这也是推荐做法)
32+
33+
```shell
34+
docker run -d \
35+
--name java-chains \
36+
--restart=always \
37+
-p 8011:8011 \
38+
-p 58080:58080 \
39+
-p 50389:50389 \
40+
-p 50388:50388 \
41+
-p 13999:13999 \
42+
-p 3308:3308 \
43+
-p 11527:11527 \
44+
-p 50000:50000 \
45+
-e CHAINS_AUTH=true \
46+
-e CHAINS_PASS= \
47+
javachains/javachains:1.4.0
48+
```
49+
50+
可通过环境变量配置鉴权或密码;
51+
52+
**CHAINS_AUTH**: true为开启鉴权,false为关闭鉴权,默认开启鉴权
53+
54+
**CHAINS_PASS**: 指定web密码,若该变量为空则随机生成密码,默认随机生成密码
55+
56+
备注:生成功能仅使用 `8011` 端口即可,其他端口为 `exploit` 模块使用
57+
58+
使用以下命令从docker中获取随机生成的强密码
59+
60+
```shell
61+
docker logs $(docker ps | grep javachains/webchains | awk '{print $1}') | grep -E 'password'
62+
```
63+
64+
输出示例
65+
66+
```text
67+
11-12 06:59:53.301 INFO [main] c.a.c.w.c.SecurityConfig | | password: XSsWerJFGcCjB8FU
68+
```
69+
70+
登录页面:`http://your-ip:8011`
71+
72+
### 方式二:Jar包启动
73+
74+
⚠️仅支持 JDK8,推荐使用 Temurin8/Zulu8 JDK
75+
76+
使用 `java -jar web-chains.jar` 即可启动,每次启动后会打印出随机生成的密码
77+
78+
默认监听 0.0.0.0 ,登录页面:`http://your-ip:8011` (使用这里的用户名密码登录)
79+
80+
可通过环境变量设置web登录密码,例如:
81+
82+
Linux:
83+
84+
```bash
85+
export CHAINS_PASS=[your_password] && java -jar web-chains.jar
86+
```
87+
88+
Windows:
89+
90+
```cmd
91+
set CHAINS_PASS=[your_password] && java -jar web-chains.jar
92+
```
93+
2494
## 模块介绍
2595

2696
`Java-Chains` 含有以下六大模块
@@ -34,56 +104,60 @@ JNDI 注入、MySQL JDBC 反序列化、JRMP 反序列化等漏洞进行方便
34104
`Hessian2Payload`: Hessian2 反序列化 Payload 生成
35105

36106
`ShiroPayload`: Shiro Payload 生成,在某些特殊环境下方便手动进行生成与测试
37-
- 支持自定义 AES KEY
38-
- 支持 AES GCM 模式
39-
- 支持插入 Base64 混淆字符
107+
108+
- 支持自定义 AES KEY
109+
- 支持 AES GCM 模式
110+
- 支持插入 Base64 混淆字符
40111

41112
`OtherPayload`
113+
42114
- `CharsetJarConvet`: 生成 charsets.jar 包,适用于 SpringBoot 下文件上传 RCE 场景
43115
- `GroovyJarConvert`: 生成 fastjson-groovy.jar 包,适用于 Fastjson 高版本下通过 Groovy 链加载特定格式 Jar 包实现 RCE)
44116
- `SnakeyamlJarConvert`: 生成 snakeyaml.jar 包,适用于 SnakeYaml 通过 SPI 加载特定格式 Jar 包实现 RCE
45117

46118
- `JDBCPayload`: JDBC Payload 生成
47-
- H2 JDBC
48-
- PostgresSQL
49-
- ...
119+
- H2 JDBC
120+
- PostgresSQL
121+
- ...
50122

51123
`ExpressionPayload`: 表达式 Payload 生成,本质上是将表达式加载字节码模板中的字节码部分进行替换,推荐手动实现
124+
52125
- `BcelConvert`: BCEL 格式字节码生成
53126
- `JsConvert`: Oracle Nashorn JS 表达式加载字节码
54127
- `VelocityConvert`: Velocity 通过 bcel 来加载字节码
55128
- ...
56129

57130
`BytecodePayload`: 字节码生成
58-
- 例如可生成执行命令字节码、Sleep字节码、DNSLog字节码,注入内存马字节码,回显字节码、中间件探测字节码、写文件字节码、下载文件字节码
59-
- 支持自定义字节码版本
60-
- 支持自定义字节码类名
61-
- 支持生成 TemplatesImpl 字节码格式 - 实现 AbstractTranslet 接口
62-
- 支持使用 Class-Obf 进行字节码混淆
131+
132+
- 例如可生成执行命令字节码、Sleep字节码、DNSLog字节码,注入内存马字节码,回显字节码、中间件探测字节码、写文件字节码、下载文件字节码
133+
- 支持自定义字节码版本
134+
- 支持自定义字节码类名
135+
- 支持生成 TemplatesImpl 字节码格式 - 实现 AbstractTranslet 接口
136+
- 支持使用 Class-Obf 进行字节码混淆
63137

64138
`XStreamPayload`: XStream 数据生成,暂未全面测试,部分Payload无法使用
65139

66140
---
67141

68142
本平台生成的 Payload 支持的一些混淆情况如下:
69143

70-
| | JavaNativePayload | HessianPayload | Hessian2Payload |
71-
|-----------------------| ----------------- | -------------- | --------------- |
72-
| 随机集合脏数据填充 ||||
73-
| 垃圾类填充 ||||
144+
| | JavaNativePayload | HessianPayload | Hessian2Payload |
145+
|-------------------------|-------------------|----------------|-----------------|
146+
| 随机集合脏数据填充 ||||
147+
| 垃圾类填充 ||||
74148
| UTF-8 Overlong Encoding ||||
75-
| TC_RESET 填充 ||||
149+
| TC_RESET 填充 ||||
76150

77151
---
78152

79153
注:若想通过 UserCustomByteArrayFromXXX 提供自定义的Java序列化字节流数据来进行混淆,那么目前暂不支持使用随机集合与垃圾类插入混淆,这与混淆的实现有关,具体支持情况如下:
80154

81155
| | JavaNativePayload(自定义序列化场景) |
82-
| ----------------------- | ----------------------------------- |
83-
| 随机集合混淆 | |
84-
| 垃圾类插入 | |
85-
| UTF-8 Overlong Encoding | |
86-
| TC_RESET 填充 | |
156+
|-------------------------|-----------------------------|
157+
| 随机集合混淆 | |
158+
| 垃圾类插入 | |
159+
| UTF-8 Overlong Encoding ||
160+
| TC_RESET 填充 | |
87161

88162
### JNDI 注入利用模块 (JNDI)
89163

@@ -127,83 +201,12 @@ JNDI 注入、MySQL JDBC 反序列化、JRMP 反序列化等漏洞进行方便
127201

128202
适用于 postgresql 远程加载 SpringBeanXML 文件等场景
129203

130-
131204
### 小工具(Tools)
132205

133206
底层调用了 SerializationDumper,能够解析序列化数据,并能实现手动更改类的 serialVersionUID 字段
134207

135208
![SerializationDumper.png](./img/SerializationDumper.png)
136209

137-
## 快速开始
138-
139-
**特别注意:我们默认只对 8011 端口进行了随机密码的登陆保护。其他端口可能存在被反制的风险,使用完相关功能后记得及时关闭相应端口
140-
**
141-
142-
### 方式一:Docker
143-
144-
你可以通过 `docker` 一条命令启动 `java-chains` 项目(这也是推荐做法)
145-
146-
```shell
147-
docker run -d \
148-
--name web-chains \
149-
--restart=always \
150-
-p 8011:8011 \
151-
-p 58080:58080 \
152-
-p 50389:50389 \
153-
-p 50388:50388 \
154-
-p 13999:13999 \
155-
-p 3308:3308 \
156-
-p 11527:11527 \
157-
-p 50000:50000 \
158-
-e CHAINS_AUTH=true \
159-
-e CHAINS_PASS= \
160-
javachains/webchains:1.3.1
161-
```
162-
163-
可通过环境变量配置鉴权或密码;
164-
165-
**CHAINS_AUTH**: true为开启鉴权,false为关闭鉴权,默认开启鉴权
166-
167-
**CHAINS_PASS**: 指定web密码,若该变量为空则随机生成密码,默认随机生成密码
168-
169-
备注:生成功能仅使用 `8011` 端口即可,其他端口为 `exploit` 模块使用
170-
171-
使用以下命令从docker中获取随机生成的强密码
172-
173-
```shell
174-
docker logs $(docker ps | grep javachains/webchains | awk '{print $1}') | grep -E 'password'
175-
```
176-
177-
输出示例
178-
179-
```text
180-
11-12 06:59:53.301 INFO [main] c.a.c.w.c.SecurityConfig | | password: XSsWerJFGcCjB8FU
181-
```
182-
183-
登录页面:`http://your-ip:8011`
184-
185-
### 方式二:Jar包启动
186-
187-
⚠️仅支持 JDK8,推荐使用 Temurin8/Zulu8 JDK
188-
189-
使用 `java -jar web-chains.jar` 即可启动,每次启动后会打印出随机生成的密码
190-
191-
默认监听 0.0.0.0 ,登录页面:`http://your-ip:8011` (使用这里的用户名密码登录)
192-
193-
可通过环境变量设置web登录密码,例如:
194-
195-
Linux:
196-
197-
```bash
198-
export CHAINS_PASS=[your_password] && java -jar web-chains.jar
199-
```
200-
201-
Windows:
202-
203-
```cmd
204-
set CHAINS_PASS=[your_password] && java -jar web-chains.jar
205-
```
206-
207210
## 详细使用
208211

209212
Github Wiki: https://github.com/vulhub/java-chains/wiki

0 commit comments

Comments
 (0)