
Sh00t
- 是一个任务管理器,让你专注于执行安全测试
- 提供待办清单形式的测试用例
- 通过可定制的漏洞模板帮助创建漏洞报告
功能特性:
- 动态任务管理器,取代那些并非为安全测试设计的简单编辑器或任务管理工具
- 自动化、可定制的安全测试用例清单,取代 Evernote、OneNote 等并非为安全测试设计的工具
- 管理用于不同目的的定制漏洞模板,并自动生成漏洞报告
- 支持多个评估与项目,逻辑上区分你的不同需求
- 像使用纸张一样——所有内容自动保存
- 将自动生成的漏洞报告导出为 Markdown 并直接提交到 HackerOne!(开发中)
- 与 JIRA、ServiceNow 集成——即将推出
- 将漏洞报告导出为 Markdown——即将推出
- 在底层自定义一切
安装:
- 如果尚未安装 Docker。Windows 10 家庭版用户或旧版本用户,请参考下面的替代安装说明。
- 拉取 Sh00t Docker 镜像:
docker pull pavanw3b/sh00t:latest
- 创建用于跨 Docker 容器持久化数据的卷:
docker volume create --name sh00t
- 运行容器:
docker run -d -p 8000:8000 --name sh00t -v sh00t:/root/sh00t/db pavanw3b/sh00t:latest
- 在你喜欢的浏览器中登录 http://127.0.0.1:8000/。
- 使用
sh00t / sh00t 凭据登录
- 停止:
docker stop sh00t
替代安装:
- 还不熟悉 Docker?我们为你考虑到了。无 Docker 安装
- 你是 Django 高手,想完全自己搭建?我们也考虑到了:手动安装
- 使用没有 Hyper-V 的机器,比如 Windows Home?你可以使用 Docker Toolbox 和 Docker Quickstart Terminal。你的 Sh00t 将在 Docker 的默认 IP 上运行:
http://YOUR_DOCKER_IP:8000/。IP 地址会在 Quickstart Terminal 启动时显示。你也可以通过 docker-machine ls 和 docker-machine ip MACHINE_NAME 查找。
- 如果你想从之前的设置迁移到 Docker 版本的 Sh00t 而不丢失任何现有数据,你需要手动将 Docker 容器中的 /root/sh00/db/db.sqlite3 文件替换为旧的 Sh00t 设置。
之后使用 Sh00t:
- 启动容器:
docker start sh00t
- 在你喜欢的浏览器中登录
http://YOUR_IP:8000/
- 使用
sh00t / sh00t 登录(如果你没有更改过)
- 如果你介意的话,停止容器:
docker stop sh00t
然后重复!
注意:始终使用 docker start 和 docker stop。如果你移除容器或卷,可能会丢失数据。
升级
保持 Sh00t 为最新版本以享受新功能和漏洞修复非常重要。
- 移除现有容器:
docker container rm -f sh00t
不用担心,除非你移除 Docker 卷,否则数据是安全的。
- 拉取最新 Docker 镜像:
docker pull pavanw3b/sh00t:latest
- 使用最新代码启动新容器,但保留旧数据:
docker run -d -p 8000:8000 --name sh00t -v sh00t:/root/sh00t/db pavanw3b/sh00t:latest
卸载
如果你想要删除所有 Sh00t 镜像、容器和卷,可以执行以下语句。注意: 这是破坏性操作,无法撤销。
- 移除镜像:
docker rmi pavanw3b/sh00t:latest
- 移除容器:
docker rm sh00t
- 移除卷:
docker volume rm sh00t:/root/sh00t/db
故障排除:
Sh00t 使用 Python 编写,由 Django Web 框架驱动。如果遇到错误,大多数情况下在网上搜索错误信息可以帮助你解决。如果不确定,请在 GitHub 上提交新问题。
术语表:
- Flag(标志): Flag 是被射击的目标。它是一个需要测试的测试用例。Flag 会根据选择的测试方法自动生成。可能发现漏洞也可能没有——但目标是瞄准并射击它。Flag 包含详细的测试步骤。如果确认存在漏洞,则称为 Sh0t。
- Sh0t(射击): Sh0t 就是漏洞。通常 Sh0t 包含漏洞的技术描述、受影响的文件/URL、复现步骤和修复建议。Sh0t 的大部分内容是一键生成的,只有像受影响参数、步骤这样的动态内容需要修改。Sh0t 可以归属于评估。
- Assessment(评估): 评估是一个测试评估。它可以是一个应用程序的评估、一个项目的评估——由用户根据需要管理。它是项目的一部分。
- Project(项目): 项目包含评估。项目可以是你在做什么的逻辑划分。可以是不同的工作、漏洞赏金,由你决定。
- Template(模板): 模板是你的漏洞模板。它们与
Sh0t 一起使用。这是为了在提交新漏洞时替代复制粘贴工作。为你所有的漏洞创建模板,留下实际漏洞报告中会变化的变量(如 URL、受影响区域等),当模板加载到你的 Sh0t 中时,这些变量会被替换。
- Case Master(用例主控): 用例主控是一组测试用例。这些是你在目标上执行的单个测试。配置测试用例有助于管理你的测试并覆盖评估中需要的一切。每个黑客都有自己的测试用例。保持简短易懂。在你的 Sh00t 中维护完整的测试用例列表是使用 Sh00t 最重要的事情。当你开始新的评估时,这些测试用例将成为需要测试的 Flags。
- Module Master(模块主控): 模块是测试的逻辑部分。例如,“用户和会话管理”就是一个模块。模块类似于测试的类别。
- Methodology Master(方法论主控): 方法论是你测试的方法。OWASP 测试指南 V4 和 Web 应用程序黑客手册(WAHH)是示例方法论,并随 Sh00t 默认提供。你可以创建自己的方法论、模块和测试用例。你可以为正式工作和个人漏洞赏金使用不同的方法论。方法论帮助你区分它们。
它是如何工作的?
从创建一个新的评估开始。选择你要使用的测试方法。目前有 330 个测试用例,分为 86 个 Flags,属于 13 个模块,这些模块参考了《Web 应用程序黑客手册》测试方法论创建。模块和 Flags 可以手动选择和定制。一旦评估创建了 Flags,测试人员就需要手动或借助扫描器、工具等进行半自动化测试,并在完成后标记为“完成”。在评估过程中,我们经常会遇到针对应用程序特定场景的自定义测试用例。可以在任何时候轻松创建新的 Flag。
只要一个 Flag 被确认为有效漏洞,就可以创建一个 Sh0t。你可以选择最匹配的漏洞模板,Sh00t 将根据所选模板自动填写漏洞报告。
谁可以使用 Sh00t?
- 应用安全工程师:渗透测试和漏洞评估
- 漏洞赏金猎人
- 独立安全研究人员
- 蓝队、修复漏洞的开发人员
- 任何想要进行黑客测试的人
截图:
仪表盘:

处理一个 Flag:

全屏编辑:

创建新评估时选择方法论和测试用例:

使用模板预填充的漏洞提交:

配置:

实现细节:
- 语言:Python 3
- 框架:Django Web 框架
- 依赖:Django REST Framework、djnago-tables2:由 /requirements.txt 管理
- 界面:Bootstrap - 响应式
贡献者:
致谢:
- Hari Valugonda
- Mohd Aqeel Ahmed
- Ajeeth Rakkappan