mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-10 14:28:43 +02:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
# WebShell 管理
|
||||
|
||||
WebShell 管理用于保存授权目标的 WebShell 连接,并通过 Web 页面或 Agent 工具执行命令、文件操作和上下文分析。
|
||||
|
||||
## 基本流程
|
||||
|
||||
1. 在 WebShell 页面新增连接。
|
||||
2. 填写名称、URL、密码或请求参数。
|
||||
3. 测试连接。
|
||||
4. 执行命令或文件操作。
|
||||
5. 在对话中选择 WebShell 连接,让 AI 基于该连接辅助排查。
|
||||
|
||||
连接数据保存在 SQLite 中。
|
||||
|
||||
## 接口
|
||||
|
||||
主要 API:
|
||||
|
||||
- `GET /api/webshell/connections`
|
||||
- `POST /api/webshell/connections`
|
||||
- `PUT /api/webshell/connections/:id`
|
||||
- `DELETE /api/webshell/connections/:id`
|
||||
- `GET /api/webshell/connections/:id/state`
|
||||
- `PUT /api/webshell/connections/:id/state`
|
||||
- `POST /api/webshell/exec`
|
||||
- `POST /api/webshell/file`
|
||||
- `GET /api/webshell/connections/:id/ai-history`
|
||||
- `GET /api/webshell/connections/:id/ai-conversations`
|
||||
|
||||
## MCP 工具
|
||||
|
||||
系统会注册 WebShell MCP 工具,例如:
|
||||
|
||||
- `webshell_exec`:在连接上执行命令。
|
||||
- `webshell_file_list`:列目录。
|
||||
- `webshell_file_read`:读取文件。
|
||||
- `webshell_file_write`:写文件。
|
||||
- WebShell 连接管理工具。
|
||||
|
||||
Agent 使用这些工具时需要 `connection_id`。前端通常会把当前选中的连接注入上下文。
|
||||
|
||||
## 命令执行
|
||||
|
||||
执行命令前确认:
|
||||
|
||||
- 当前连接属于授权目标。
|
||||
- 命令不会破坏业务。
|
||||
- 输出中可能包含敏感信息。
|
||||
- 长命令和交互式命令不适合 WebShell 通道。
|
||||
|
||||
建议先执行只读命令确认环境:
|
||||
|
||||
```bash
|
||||
whoami
|
||||
pwd
|
||||
uname -a
|
||||
id
|
||||
```
|
||||
|
||||
Windows 目标可用:
|
||||
|
||||
```cmd
|
||||
whoami
|
||||
cd
|
||||
ver
|
||||
ipconfig
|
||||
```
|
||||
|
||||
## 文件操作
|
||||
|
||||
文件操作包括列目录、读取、写入。建议:
|
||||
|
||||
- 写入前先备份原文件。
|
||||
- 不在生产目标写入未经确认的脚本或二进制。
|
||||
- 大文件优先通过专用下载/上传通道处理。
|
||||
- 注意目标编码和换行符。
|
||||
|
||||
## AI 辅助
|
||||
|
||||
AI 可以帮助:
|
||||
|
||||
- 识别操作系统和当前权限。
|
||||
- 规划只读枚举步骤。
|
||||
- 分析命令输出。
|
||||
- 汇总风险和修复建议。
|
||||
|
||||
不建议让 AI 自动执行:
|
||||
|
||||
- 删除文件。
|
||||
- 修改业务配置。
|
||||
- 持久化。
|
||||
- 凭证抓取。
|
||||
- 大范围扫描内网。
|
||||
|
||||
这些操作应由人工确认,并配合 HITL。
|
||||
|
||||
## 安全建议
|
||||
|
||||
- 仅保存授权目标连接。
|
||||
- 给连接命名时包含项目、环境、目标。
|
||||
- 演练结束后删除连接。
|
||||
- 不把 WebShell 写入工具加入全局免审批白名单。
|
||||
- 重要输出及时纳入项目事实或报告,随后清理敏感原始数据。
|
||||
|
||||
## 排错
|
||||
|
||||
连接失败:
|
||||
|
||||
- URL 不可达。
|
||||
- 参数名或密码错误。
|
||||
- 目标 WAF 拦截。
|
||||
- 代理或 TLS 配置异常。
|
||||
|
||||
命令乱码:
|
||||
|
||||
- 检查目标系统编码。
|
||||
- 尝试切换命令输出编码或使用 base64 包装。
|
||||
|
||||
AI 找不到连接:
|
||||
|
||||
- 确认前端已选中 WebShell 连接。
|
||||
- 确认连接未被删除。
|
||||
- 检查 `connection_id` 是否正确。
|
||||
|
||||
## 操作分层
|
||||
|
||||
WebShell 操作建议分成四层,不同层级使用不同审批策略:
|
||||
|
||||
| 层级 | 操作 | 风险 | 建议 |
|
||||
| --- | --- | --- | --- |
|
||||
| 识别 | `whoami`、`pwd`、系统版本 | 低 | 可自动 |
|
||||
| 枚举 | 目录、进程、环境变量 | 中 | 限定路径和命令 |
|
||||
| 读取 | 配置、日志、源码 | 中高 | 人工确认敏感性 |
|
||||
| 写入/执行 | 写文件、运行脚本、删除 | 高 | 人工审批,说明回滚 |
|
||||
|
||||
不要把“WebShell 已经拿到了”理解成“后续操作都低风险”。WebShell 通常位于业务系统内部,误操作成本很高。
|
||||
|
||||
## 连接命名规范
|
||||
|
||||
建议命名:
|
||||
|
||||
```text
|
||||
<项目>-<环境>-<目标>-<权限>-<日期>
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```text
|
||||
acme-staging-web01-www-20260707
|
||||
```
|
||||
|
||||
糟糕命名:
|
||||
|
||||
```text
|
||||
test
|
||||
shell1
|
||||
客户机器
|
||||
```
|
||||
|
||||
AI 和人类审批都依赖上下文,连接名称含糊会直接放大误操作概率。
|
||||
|
||||
## AI 使用约束模板
|
||||
|
||||
给 WebShell 相关角色加一段约束:
|
||||
|
||||
```text
|
||||
使用 WebShell 前先确认 connection_id、目标名称、当前目录和权限。默认只执行只读命令。任何写入、删除、上传、权限修改、持久化、凭证读取、内网探测都必须先给出目的、影响和回滚方式,并等待审批。
|
||||
```
|
||||
|
||||
## 源码锚点
|
||||
|
||||
- Handler:`internal/handler/webshell.go`
|
||||
- 连接上下文:`internal/handler/webshell_context.go`
|
||||
- 探测逻辑:`internal/handler/webshell_probe.go`
|
||||
- OS/编码处理测试:`internal/handler/webshell_os_test.go`、`internal/handler/webshell_encoding_test.go`
|
||||
- MCP 工具注册:`internal/app/app.go` 中 `registerWebshellTools`
|
||||
Reference in New Issue
Block a user