Skip to content

chains 插件编写指南,插件可适用于 Web-Chains 以及 chains-all (sdk) 中使用

Notifications You must be signed in to change notification settings

Java-Chains/chains-plugin-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chains 插件编写介绍

这里以帆软的历史反序列化链为例

配置环境

需要准备lib依赖包:

  1. chains-all-xxx.jar SDK,在 https://github.com/Java-Chains/chains-plugin-demo 的 release 中下载
  2. 编写 gadget 链涉及的第三方依赖jar包,例如 fine-third-10.0-hibernate.jar

分别右键【Add as Library】添加到 lib 中,建议将以上两种分别进行【Add as Library】

img_1.png

编写代码

可参考 Finereport_Hibernate、Finereport_Jackson 类中的注释

注意以下几点:

  1. Gadget 类的包名以 com.ar3h 开始
  2. Gadget 类需要 GadgetTags、GadgetAnnotation 两个注解,缺一不可
  3. Gadget 类需要实现 com.ar3h.chains.common.Gadget 接口

验证

直接调用代码生成反序列化 Payload,然后再手动测试是否可用

usage.png

打包

测试没有问题后就可以用 IDEA 自带的功能打包成jar包

把涉及的第三方依赖全部提取并打包进去

这里的 chains-all-xxx.jar sdk包不用打包进去

img_2.png

配置好 Artifacts 后点击 Build 进行打包

img.png

默认会在 out/artifacts/ 目录下生成 chains-plugin-demo-fr.jar

复制到 web-chains-xxx.jar 的 ./chains-config/plugins/ 目录下即可,没有这个目录需要自行创建

目录结构如下

|── web-chains-1.3.0.jar
|── chains-config
    |── plugins
        |── chains-plugin-demo-fr.jar

插件的加载与使用

web-chains 启动时会自动加载 当前目录下的 ./chains-config/plugins/ 下的所有jar包

如果 web-chains 已是启动状态,方便起见,可以在 System -> ControlPanel 中点击【Reload】按钮重新加载 Gadget 插件

img.png

System -> ShowGadget 中找到相关描述信息

img.png

在 Generate -> JavaNativePayload 中找到并使用

img.png

About

chains 插件编写指南,插件可适用于 Web-Chains 以及 chains-all (sdk) 中使用

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages