Skip to content

Commit

Permalink
更新文档
Browse files Browse the repository at this point in the history
  • Loading branch information
iSafeBlue committed May 17, 2019
1 parent b90f38e commit c98be72
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 15 deletions.
2 changes: 1 addition & 1 deletion docs/安装说明.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ Linux 下运行 `package.sh`

没有抛出异常或`ERROR`日志,访问 8080 端口正常。

服务启动正常后,登录 iZone 社区账号即可
服务启动正常后,登录 iZone 社区账号



Expand Down
66 changes: 52 additions & 14 deletions docs/扩展开发.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,9 @@
│ │ │ │ ├─inner # 内部插件包
│ │ │ │ │ ...
│ │ │ │ │
│ │ │ │ ├─mvc # MVC插件包
│ │ │ │ │ ...
│ │ │ │ │
│ │ │ │ └─plugin # 普通插件包
│ │ │ │
│ │ │ └─resources # 资源包
Expand All @@ -140,7 +143,7 @@
│ │ │ │ index.html
│ │ │ │ result.html
│ │ │
├─resources # module 模块 resources 包释放出来的目录
├─resources # 外部资源目录
└─web
│ pom.xml # WEB模块依赖配置文件
Expand All @@ -155,7 +158,7 @@
│ │ │ └─web
│ │ │ ├─api
│ │ │ │
│ │ │ ├─config # 配置包
│ │ │ ├─config # Springboot 配置包
│ │ │ │
│ │ │ ├─handle
│ │ │ │ ScannerJob.java
Expand Down Expand Up @@ -187,7 +190,7 @@
│ │ │ │
│ │ │ └─js
│ │ │
└─└────└─templates
│ │ ├─templates # 网页模板目录
```

Expand All @@ -199,7 +202,7 @@

**BASE常量**

其中的静态常量 `BASE` 是 /resources/include/ 的所在目录
其中的静态常量 `BASE` 是 /resources/include/ 的所在目录绝对路径

如果你的插件需要额外的静态资源,那么你可以在 `/resources/include` 目录里创建一个和插件 KEY 相同的文件夹,便于识别,如果没有在 @Plugin 注解中设置 value 则默认的插件 KEY 就是当前类名首字母小写。

Expand All @@ -215,7 +218,7 @@ public abstract boolean check(Map<String,Object> param);

param 参数是从前台传过来的参数键值对。

常被用于检验参数格式是否正确或漏洞是否存在
用于检验参数格式是否正确或漏洞是否存在

**after()**

Expand Down Expand Up @@ -354,7 +357,7 @@ public abstract class CommonPlugin<E> extends AbstractPlugin<E> {

交互式插件由 Websocket 实现,想要写一个交互式插件,首先要继承 `WebSocketPlugin` 类。

同时设置 `@Rule` 注解的 websocket 参数为 true ,如果需要异步交互需要将 sync 也设置为 true。
同时设置 `@Rule` 注解的 websocket 参数为 `true` ,如果需要异步交互需要将 `sync` 也设置为 `true`

```
@Rule(sync = true,websocket = true)
Expand Down Expand Up @@ -384,7 +387,12 @@ public abstract class CommonPlugin<E> extends AbstractPlugin<E> {

还有用于检测 SSRF 等漏洞用的 `FuckCeye` 插件也属于内部插件。

通过 spring 的自动注入,来注入内部插件到当前对象。
如果你的插件里需要使用内部插件,可以通过 spring 的自动注入 `@Autowired` 注解,来注入内部插件到当前对象。

```
@Autowired
private FuckCeye fuckceye;
```

例子可参考 `WebLogicWLSRCE.java`

Expand Down Expand Up @@ -535,19 +543,41 @@ MVC 插件的特点在于,他可以像是在写一个功能一样,而非简

MVC 插件需要继承 MVCPlugin 类,并使用 `@Rule`,`@Plugin` 注解。

`@Rule` 注解可以配置`defaultPage`来指定当前插件的首页路径,如果不配置,则默认该插件的首页路径为 `index`

例子:
```
/*
默认首页:/plugin/mvc/testplugin/test123
*/
@Rule(defaultPage = "test123")
@Plugin(title = "Test", value = "testplugin" )
public class Test extends MVCPlugin{
@Override
public void index() {
model.setViewName("indexPage");
}
@Function(value="test123")
public void index() {
model.setViewName("testPage");
}
}
```


MVCPlugin 内置了一个 `ModelAndView` 对象, 是 SpringMVC 提供的。

可以通过 setViewName() 来指定视图层的网页模板。
可以通过 `setViewName()` 来指定视图层的网页模板。

通过 addObject(key,value) 向视图层网页模板注入参数。
通过 `addObject(key,value)` 向视图层网页模板注入参数。

这里的视图层是使用 thymeleaf 实现的,需要懂 thymeleaf 的语法。
这里的视图层是使用 freemarker 实现的,需要懂 freemarker 的语法。

例子可以参考:com.trackray.module.inner.JSONPlugin
例子可以参考:`com.trackray.module.inner.JSONPlugin`

继承 MVCPlugin 必须要重写一个 index 方法,这是插件的入口。
继承 `MVCPlugin` 必须要重写一个 `index` 方法,这是插件的入口。

如果需要写其他的功能,就得再创建一个 public 返回值为 void 的无参方法。
如果需要写其他的功能,就得再创建一个 `public` 返回值为 `void` 的无参方法。

并且要在该方法上使用 `@Function` 注解,该注解的 value 参数如果不填写的话则默认的 requestMapping 地址为方法名。

Expand Down Expand Up @@ -575,6 +605,11 @@ public class Pentest extends MVCPlugin{

里面存放扩展名为 `.html` 的模板文件。

以刚才的代码为例

`fooTest()` 方法对应模板文件路径为`/module/src/main/resources/templates/pentest/fooPage.html`


![1557660576(1).jpg][1]

## Python 插件
Expand All @@ -588,7 +623,7 @@ python 插件有两种实现方式。

案例可参考 `com.trackray.module.plugin.windows.smb.MS17010`

但这样还需要再写 java 的代码,对于没有学过 java 的人来说很不友好
但这样还需要再写 java 的插件代码

**2.通过jython实现**

Expand All @@ -612,6 +647,8 @@ def verify(args):
return args
```

**建议 python 插件使用原生类库依赖,如要使用第三方依赖,请先安装到python**

![1557661673(1).jpg][2]


Expand All @@ -633,6 +670,7 @@ public @interface Rule {
CommonPlugin.Charset charset() default CommonPlugin.Charset.UTF8; //使用commonplugin时返回给浏览器的文本编码
String[] headers() default {}; //返回给浏览器时的response header
String filename() default ""; //插件用于下载功能时返回的文件名
String defaultPage() default "index";//MVC插件的默认页面
}
```
`params()` 最为常用,它用来声明这个插件需要哪几个参数。
Expand Down

0 comments on commit c98be72

Please sign in to comment.