Vulnreport 是一个用于管理渗透测试并生成格式良好、可操作的漏洞报告的平台,省去了通常占用安全工程师时间的额外工作。该平台旨在支持流程每个阶段的自动化,并允许针对你渗透测试流程中使用的其他系统进行自定义。
Vulnreport 由 Salesforce 产品安全团队构建,旨在消除我们花在编写、格式化和校订渗透测试报告上的时间。我们的目标(并将继续是)构建出色的安全工具,让渗透测试人员和安全工程师能够专注于发现和修复漏洞。
Vulnreport 是一个 Ruby Web 应用程序(Sinatra/Rack 栈),后端使用 PostgreSQL 数据库,并带有 Redis 缓存层。
Vulnreport 可以安装在本地 VM 或服务器上(后面使用 nginx 等),也可以部署到 Heroku。
要在本地部署,你需要确保已安装依赖项:
克隆仓库并打开 .env 文件,根据需要更新。然后运行 bundle install。你可能需要修改 start.sh 以适应你的环境——仓库中包含的脚本旨在用于调试/开发期间的本地使用。
你还应该基于 .env.example 创建一个 .env 文件,或者在环境中设置与 .env 中相同的环境变量。
你可以自动部署到 Heroku。完成后,按照下面的说明登录 Vulnreport 并完成配置。
要部署到 Heroku(假设你已经创建了一个 Heroku 应用并安装了 toolbelt):
git clone [Vulnreport 仓库 URL]
heroku git:remote -a [Heroku 应用名称]
heroku addons:create heroku-postgresql:hobby-dev
heroku addons:create heroku-redis:hobby-dev
heroku addons:create rollbar:free
heroku addons:create sendgrid:starter
然后,你需要打开 .env 文件,将其中的键/值(必要时更新值)复制到 Heroku 应用设置中。这也可以通过 toolbelt CLI 命令完成。请注意,运行 addons 后的默认环境变量应该没问题,但你可以再检查一下。你肯定需要更新 VR_SESSION_SECRET。如果这不是你的生产环境安装,应将 RACK_ENV 改为 development。
heroku config:set VR_SESSION_SECRET=abc123456
heroku config:set RACK_ENV=production
git push heroku master
现在,你可以像在本地运行 Vulnreport 一样,按照安装说明进行操作。
要处理 Vulnreport 的初始配置,请运行 SEED.rb 脚本。如果你部署在 Heroku 上,请通过 heroku run ./SEED.rb 运行。
如果你使用了自动化的“部署到 Heroku”功能,此步骤应已自动为你处理。
Running ./SEED.rb on ⬢ vulnreport-test... up, run.8035
Vulnreport 3.0.0.alpha seed script
WARNING: This script should be run ONCE immediately after deploying and then DELETED
Setting up Vulnreport now...
Setting up the PostgreSQL database...
Done
Seeding the database...
Done
User ID 1 created for you
ALL DONE! :)
Login to Vulnreport now and go through the rest of the settings!
现在,删除 SEED.rb 文件。
已为你创建默认管理员用户,用户名为 admin,密码为 admin。应立即更换此密码和/或配置 SSO。
此时,你应该访问 Vulnreport 的 URL(例如 https://my-vr-test.herokuapp.com),使用创建的用户登录。然后进入 Vulnreport 和用户设置,配置你的 Vulnreport 实例。
一切准备就绪——关于如何使用你新安装的 Vulnreport 实例的文档,请参阅 http://vulnreport.io/documentation 上的完整文档。
Vulnreport 设计并旨在与外部系统一起使用。有关如何实现允许与外部系统集成/同步的接口的更多信息,请参阅 http://vulnreport.io/documentation#interfaces 上的自定义接口文档。
要生成代码文档,只需运行 Yard:
yard doc
yard server
目前,Vulnreport 支持一种 XML 格式,用于将漏洞导入到特定测试中。如果你希望 Vulnreport 与进行渗透测试时所在的网络不同(因此你在主动渗透测试时使用其他客户端记录发现),或者依赖于你特定 Vulnreport 实例和 Vuln类型 配置,这将非常有用。
我们正在努力支持其他几种 XML 导入格式(例如 ZAP 和 Burp),以及允许在 Vulnreport 实例之间进行任意 XML 导出/导入。请继续关注,我们希望尽快推出这些功能。
Vulnreport 当前支持的 XML 格式为:
<?xml version="1.0" encoding="UTF-8"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Vuln>
<Type>[Vulntype ID]</Type>
<File>[File Vuln Data]</File>
<Code>
[Code Vuln Data]
</Code>
<File>clsSyncLog.cls</File>
<Code>
hello world
</Code>
...etc...
</Vuln>
<Vuln>
<Type>6</Type>
<File>clsSyncLog.cls</File>
<File>CommonFunction.cls</File>
<Code>
12 Public Class CommonFunction{
</Code>
</Vuln>
</Test>
<?xml version="1.0" encoding="UTF-8"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"">
<Vuln>
<Type>REQUIRED - EXACTLY 1 - INTEGER - ID of VulnType. 0 = Custom</Type>
<CustomTypeName>OPTIONAL - EXACTLY 1 - STRING if TYPE == 0</CustomTypeName>
<BurpData>OPTIONAL - UNLIMITED - STRING - Burp req/resp data encoded in our protocol</BurpData>
<URL>OPTIONAL - UNLIMITED - STRING - URL for finding</URL>
<FileName>OPTIONAL - UNLIMITED - STRING - Name/path of file for finding</FileName>
<Output>OPTIONAL - UNLIMITED - STRING - Output details</Output>
<Code>OPTIONAL - UNLIMITED - STRING - Code details</Code>
<Notes>OPTIONAL - UNLIMITED - STRING - Notes for vuln</Notes>
<Screenshot>
OPTIONAL - UNLIMITED - Screenshots of vuln
<Filename>REQUIRED - EXACTLY 1 - STRING - Filename with extension</Filename>
<ImageData>
REQUIRED - EXACTLY 1 - BASE64 - Screenshot data
</ImageData>
</Screenshot>
</Vuln>
....unlimited vulns....
<Vuln>
</Vuln>
</Test>