
Plataforma de código abierto para la gestión y automatización de pruebas de penetración por Salesforce Product Security.
Vulnreport es una plataforma para gestionar pruebas de penetración y generar informes de hallazgos bien formateados y procesables sin la sobrecarga normal que consume el tiempo de los ingenieros de seguridad. La plataforma está construida para admitir la automatización en cada etapa del proceso y permitir la personalización para cualquier otro sistema que utilices como parte de tu proceso de pentesting.
Vulnreport fue construido por el equipo de Seguridad de Producto de Salesforce como una forma de eliminar el tiempo que dedicábamos a escribir, formatear y revisar informes para pruebas de penetración. Nuestro objetivo era y sigue siendo construir excelentes herramientas de seguridad que permitan a los pentesters e ingenieros de seguridad centrarse en encontrar y corregir vulnerabilidades.
Vulnreport es una aplicación web Ruby (pila Sinatra/Rack) respaldada por una base de datos PostgreSQL con una capa de caché Redis.
Vulnreport se puede instalar en una máquina virtual local o servidor detrás de algo como nginx, o se puede desplegar en Heroku.
Para desplegar localmente, deberás asegurarte de tener instaladas las dependencias:
Clona el repositorio y abre el archivo .env, actualizándolo según sea necesario. Luego ejecuta bundle install. Probablemente quieras modificar start.sh para que funcione en tu entorno; el incluido en el repositorio está destinado a uso local durante depuración/desarrollo.
También deberías crear un archivo .env basado en .env.example, o establecer las mismas variables de entorno definidas en .env en tu entorno.
Puedes desplegar automáticamente en Heroku. Después de hacerlo, sigue las instrucciones a continuación para iniciar sesión en Vulnreport y completar la configuración.
Para desplegar en Heroku (asumiendo que has creado una aplicación de Heroku y tienes el toolbelt instalado)
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
Luego querrás abrir el archivo .env y copiar las claves/valores (actualizando los valores donde sea necesario) a la configuración de Heroku para tu aplicación. Esto también se puede hacer mediante los comandos CLI de toolbelt. Ten en cuenta que las variables de entorno predeterminadas después de ejecutar los addons deberían estar bien, pero puedes verificarlo. Definitivamente querrás actualizar VR_SESSION_SECRET. Si esta no es tu instalación de producción, deberías cambiar RACK_ENV a development.
heroku config:set VR_SESSION_SECRET=abc123456
heroku config:set RACK_ENV=production
git push heroku master
Ahora puedes seguir las instrucciones de instalación como lo harías si estuvieras ejecutando Vulnreport localmente.
Para manejar la configuración inicial de Vulnreport, ejecuta el script SEED.rb. Si estás desplegando en Heroku, ejecuta esto mediante heroku run ./SEED.rb.
Si usaste la función automatizada 'Deploy to Heroku', este paso debería haberse manejado automáticamente por ti.
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!
Ahora, elimina el archivo SEED.rb.
El usuario administrador predeterminado ha sido creado para ti con nombre de usuario admin y contraseña admin. Esto debe ser rotado inmediatamente y/o se debe configurar SSO.
En este punto, debes ir a la URL de tu Vulnreport (por ejemplo, https://my-vr-test.herokuapp.com anterior) e iniciar sesión con el usuario creado. Revisa la configuración de Vulnreport y de usuario para configurar tu instancia de Vulnreport.
Estás listo para comenzar: para obtener documentación sobre cómo usar tu instancia recién instalada de Vulnreport, consulta la documentación completa en http://vulnreport.io/documentation
Vulnreport está diseñado para ser utilizado con sistemas externos. Para obtener más información sobre cómo implementar las interfaces que permiten la integración/sincronización con sistemas externos, consulta la documentación de interfaces personalizadas en http://vulnreport.io/documentation#interfaces.
Para generar la documentación del código, simplemente ejecuta Yard:
yard doc
yard server
Actualmente, Vulnreport admite un formato XML para importar vulnerabilidades a una prueba específica. Esto es útil si deseas que Vulnreport esté en una red diferente a la de tus pruebas de penetración y, por lo tanto, estás utilizando un cliente diferente para registrar hallazgos mientras realizas el pentest activamente, pero depende de la configuración de tu instancia específica de Vulnreport y de los tipos de vulnerabilidad.
Estamos trabajando para admitir algunos otros tipos de importación XML (ZAP y Burp, por ejemplo), así como permitir la exportación/importación XML arbitraria entre instancias de Vulnreport. Mantente atento, esperamos lanzar estas funciones pronto.
El formato XML que admite Vulnreport actualmente es:
<?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>