
Платформа с открытым исходным кодом для управления пентестингом и автоматизации от Salesforce Product Security
Vulnreport — это платформа для управления тестированием на проникновение и создания хорошо отформатированных, практичных отчётов о найденных уязвимостях без обычных накладных расходов, отнимающих время у инженеров по безопасности. Платформа создана для поддержки автоматизации на каждом этапе процесса и позволяет настраивать взаимодействие с любыми другими системами, которые вы используете в рамках тестирования на проникновение.
Vulnreport была создана командой Salesforce Product Security, чтобы избавиться от времени, затрачиваемого на написание, форматирование и проверку отчётов по пентестам. Наша цель была и остаётся в том, чтобы создавать отличные инструменты безопасности, позволяющие пентестерам и инженерам по безопасности сосредоточиться на поиске и исправлении уязвимостей.
Vulnreport — это веб-приложение на Ruby (стек Sinatra/Rack) с базой данных PostgreSQL и слоем кэширования Redis.
Vulnreport может быть установлен на локальной виртуальной машине или сервере за nginx (или аналогичным прокси), а также развёрнут на Heroku.
Для локального развёртывания убедитесь, что установлены все зависимости:
Клонируйте репозиторий, откройте файл .env и обновите его по необходимости. Затем выполните bundle install. Вероятно, вам потребуется изменить start.sh под ваше окружение — версия в репозитории предназначена для локального использования в процессе отладки/разработки.
Также следует создать файл .env на основе .env.example или установить те же переменные окружения, определённые в .env, в вашем окружении.
Вы можете автоматически развернуть приложение на Heroku. После этого следуйте инструкциям ниже, чтобы войти в Vulnreport и завершить настройку.
Для развёртывания на Heroku (предполагается, что вы создали приложение Heroku и установили toolbelt)
git clone [Vulnreport repo url]
heroku git:remote -a [Heroku app name]
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. Это также можно сделать через CLI-команды toolbelt. Обратите внимание: переменные по умолчанию после установки аддонов должны подойти, но вы можете перепроверить. Обязательно обновите 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.
Если вы использовали автоматическую функцию 'Deploy to 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.
На этом этапе перейдите по URL вашего экземпляра Vulnreport (например, https://my-vr-test.herokuapp.com) и войдите с созданным пользователем. Пройдите по настройкам Vulnreport и пользователя, чтобы сконфигурировать ваш экземпляр.
Вы готовы к работе. Документацию по использованию вашего нового экземпляра Vulnreport смотрите в полном руководстве по адресу http://vulnreport.io/documentation
Vulnreport спроектирован и предназначен для использования с внешними системами. Дополнительную информацию о реализации интерфейсов, позволяющих интегрироваться/синхронизироваться с внешними системами, смотрите в документации по пользовательским интерфейсам по адресу http://vulnreport.io/documentation#interfaces.
Для генерации документации по коду просто запустите Yard:
yard doc
yard server
В настоящее время Vulnreport поддерживает XML-формат для импорта уязвимостей в конкретный тест. Это полезно, если Vulnreport находится в другой сети, чем та, в которой вы проводите пентесты, и вы используете другой клиент для записи находок во время активного тестирования. Однако этот формат зависит от настройки вашего экземпляра Vulnreport и конфигурации типов уязвимостей.
Мы работаем над поддержкой нескольких других типов XML-импорта (например, ZAP и Burp), а также над произвольным экспортом/импортом XML между экземплярами Vulnreport. Следите за обновлениями — мы надеемся выпустить эти функции в ближайшее время.
Формат XML, который в настоящее время поддерживается Vulnreport, выглядит так:
<?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>