Skip to content

Commit 55632cd

Browse files
committed
chains-plugin-demo-fr
0 parents  commit 55632cd

17 files changed

+476
-0
lines changed

.gitignore

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
target/
2+
!.mvn/wrapper/maven-wrapper.jar
3+
!**/src/main/**/target/
4+
!**/src/test/**/target/
5+
6+
### IntelliJ IDEA ###
7+
.idea/modules.xml
8+
.idea/jarRepositories.xml
9+
.idea/compiler.xml
10+
.idea/libraries/
11+
*.iws
12+
*.iml
13+
*.ipr
14+
15+
### Eclipse ###
16+
.apt_generated
17+
.classpath
18+
.factorypath
19+
.project
20+
.settings
21+
.springBeans
22+
.sts4-cache
23+
24+
### NetBeans ###
25+
/nbproject/private/
26+
/nbbuild/
27+
/dist/
28+
/nbdist/
29+
/.nb-gradle/
30+
build/
31+
!**/src/main/**/build/
32+
!**/src/test/**/build/
33+
34+
### VS Code ###
35+
.vscode/
36+
37+
### Mac OS ###
38+
.DS_Store
39+
/.idea/
40+
/libs/chains-all-1.3.0.jar

README.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Chains 插件编写介绍
2+
3+
这里以帆软的历史反序列化链为例
4+
5+
## 配置环境
6+
7+
需要准备lib依赖包:
8+
9+
1. chains-all-xxx.jar SDK,在 https://github.com/Java-Chains/chains-plugin-demo 的 release 中下载
10+
2. 编写 gadget 链涉及的第三方依赖jar包,例如 fine-third-10.0-hibernate.jar
11+
12+
分别右键【Add as Library】添加到 lib 中,建议将以上两种分别进行【Add as Library】
13+
14+
![img_1.png](./img/img_1.png)
15+
16+
## 编写代码
17+
18+
可参考 Finereport_Hibernate、Finereport_Jackson 类中的注释
19+
20+
注意以下几点:
21+
22+
1. Gadget 类的包名以 com.ar3h 开始
23+
2. Gadget 类需要 GadgetTags、GadgetAnnotation 两个注解,缺一不可
24+
3. Gadget 类需要实现 com.ar3h.chains.common.Gadget 接口
25+
26+
## 验证
27+
28+
直接调用代码生成反序列化 Payload,然后再手动测试是否可用
29+
30+
![usage.png](./img/usage.png)
31+
32+
## 打包
33+
34+
测试没有问题后就可以用 IDEA 自带的功能打包成jar包
35+
36+
把涉及的第三方依赖**全部提取**并打包进去
37+
38+
这里的 chains-all-xxx.jar sdk包不用打包进去
39+
40+
![img_2.png](./img/img_2.png)
41+
42+
配置好 Artifacts 后点击 Build 进行打包
43+
44+
![img.png](./img/package.png)
45+
46+
默认会在 out/artifacts/ 目录下生成 chains-plugin-demo-fr.jar
47+
48+
复制到 web-chains-xxx.jar 的 `./chains-config/plugins/` 目录下即可,没有这个目录需要自行创建
49+
50+
目录结构如下
51+
52+
```
53+
|── web-chains-1.3.0.jar
54+
|── chains-config
55+
|── plugins
56+
|── chains-plugin-demo-fr.jar
57+
```
58+
59+
## 插件的加载与使用
60+
61+
web-chains 启动时会自动加载 当前目录下的 ./chains-config/plugins/ 下的所有jar包
62+
63+
如果 web-chains 已是启动状态,方便起见,可以在 System -> ControlPanel 中点击【Reload】按钮重新加载 Gadget 插件
64+
65+
![img.png](./img/reload.png)
66+
67+
System -> ShowGadget 中找到相关描述信息
68+
69+
![img.png](./img/showGadget.png)
70+
71+
在 Generate -> JavaNativePayload 中找到并使用
72+
73+
![img.png](./img/load.png)

img/img_1.png

88.6 KB
Loading

img/img_2.png

145 KB
Loading

img/load.png

477 KB
Loading

img/package.png

44.9 KB
Loading

img/reload.png

75.9 KB
Loading

img/showGadget.png

179 KB
Loading

img/usage.png

234 KB
Loading

libs/fine-third-10.0-hibernate.jar

7.36 MB
Binary file not shown.

0 commit comments

Comments
 (0)