
Open-Source-Plattform für Pentesting-Management und Automatisierung von Salesforce Product Security
Vulnreport ist eine Plattform zur Verwaltung von Penetrationstests und zur Erstellung gut formatierter, verwertbarer Findings-Berichte, ohne den üblichen Overhead, der die Zeit von Sicherheitsingenieuren in Anspruch nimmt. Die Plattform ist darauf ausgelegt, Automatisierung in jeder Phase des Prozesses zu unterstützen und Anpassungen für andere Systeme zu ermöglichen, die Teil Ihres Pentesting-Prozesses sind.
Vulnreport wurde vom Salesforce Product Security Team entwickelt, um die Zeit zu reduzieren, die wir mit dem Schreiben, Formatieren und Prüfen von Berichten für Penetrationstests verbracht haben. Unser Ziel war und ist es, großartige Sicherheitstools zu bauen, die es Pentestern und Sicherheitsingenieuren ermöglichen, sich auf das Finden und Beheben von Schwachstellen zu konzentrieren.
Vulnreport ist eine Ruby-Webanwendung (Sinatra/Rack-Stack) mit einer PostgreSQL-Datenbank und einer Redis-Cache-Schicht.
Vulnreport kann auf einer lokalen VM oder einem Server hinter etwas wie nginx installiert oder auf Heroku bereitgestellt werden.
Für die lokale Bereitstellung müssen Sie sicherstellen, dass die folgenden Abhängigkeiten installiert sind:
Klonen Sie das Repository und öffnen Sie die .env-Datei, aktualisieren Sie sie bei Bedarf. Führen Sie dann bundle install aus. Sie sollten wahrscheinlich start.sh an Ihre Umgebung anpassen – die im Repository enthaltene Datei ist für die lokale Nutzung während der Fehlersuche/Entwicklung gedacht.
Sie sollten auch eine .env-Datei basierend auf .env.example erstellen oder die in .env definierten ENV-Variablen in Ihrer Umgebung setzen.
Sie können automatisch auf Heroku bereitstellen. Folgen Sie danach den Anweisungen unten, um sich bei Vulnreport anzumelden und die Konfiguration abzuschließen.
Für die Bereitstellung auf Heroku (unter der Annahme, dass Sie eine Heroku-App erstellt haben und das Toolbelt installiert ist):
git clone [Vulnreport-Repository-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
Öffnen Sie dann die .env-Datei und kopieren Sie die Schlüssel/Werte (passen Sie Werte bei Bedarf an) in die Heroku-Einstellungen Ihrer App. Dies kann auch über die Toolbelt-CLI-Befehle erfolgen. Beachten Sie, dass die Standard-ENV-Variablen nach dem Ausführen der Addons in Ordnung sein sollten, aber Sie können dies überprüfen. Sie sollten auf jeden Fall VR_SESSION_SECRET aktualisieren. Wenn dies nicht Ihre Produktionsinstallation ist, sollten Sie RACK_ENV auf development ändern.
heroku config:set VR_SESSION_SECRET=abc123456
heroku config:set RACK_ENV=production
git push heroku master
Sie können nun den Installationsanweisungen folgen, als ob Sie Vulnreport lokal ausführen würden.
Führen Sie zur Erstkonfiguration von Vulnreport das Skript SEED.rb aus. Wenn Sie auf Heroku bereitstellen, führen Sie es mit heroku run ./SEED.rb aus.
Wenn Sie die automatische 'Deploy to Heroku'-Funktion verwendet haben, sollte dieser Schritt automatisch für Sie erledigt worden sein.
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!
Löschen Sie nun die Datei SEED.rb.
Der Standard-Admin-Benutzer wurde für Sie mit dem Benutzernamen admin und dem Passwort admin erstellt. Dies sollte sofort geändert und/oder SSO konfiguriert werden.
Gehen Sie jetzt zu Ihrer Vulnreport-URL (z.B. https://my-vr-test.herokuapp.com oben) und melden Sie sich mit dem erstellten Benutzer an. Durchlaufen Sie die Vulnreport- und Benutzereinstellungen, um Ihre Instanz von Vulnreport zu konfigurieren.
Sie sind bereit – für die Dokumentation zur Nutzung Ihrer neu installierten Vulnreport-Instanz siehe die vollständige Dokumentation unter http://vulnreport.io/documentation
Vulnreport ist für die Verwendung mit externen Systemen konzipiert und vorgesehen. Weitere Informationen zur Implementierung der Schnittstellen, die die Integration/Synchronisation mit externen Systemen ermöglichen, finden Sie in der Dokumentation zu benutzerdefinierten Schnittstellen unter http://vulnreport.io/documentation#interfaces.
Um die Dokumentation für den Code zu generieren, führen Sie einfach Yard aus:
yard doc
yard server
Derzeit unterstützt Vulnreport ein XML-Format zum Importieren von Schwachstellen (Vulns) in einen bestimmten Test. Dies ist nützlich, wenn Vulnreport sich in einem anderen Netzwerk befindet als die Durchführung Ihrer Pentests und Sie daher einen anderen Client zum Aufzeichnen von Ergebnissen während aktiver Pentests verwenden. Es ist jedoch abhängig von der Konfiguration für Ihre spezifische Vulnreport-Instanz und Vulntypes-Konfiguration.
Wir arbeiten an der Unterstützung einiger anderer XML-Importtypen (z. B. ZAP und Burp) sowie an der Möglichkeit des beliebigen XML-Exports/-Imports zwischen Vulnreport-Instanzen. Bleiben Sie gespannt – wir hoffen, diese Funktionen bald bereitzustellen.
Das derzeit von Vulnreport unterstützte XML-Format ist:
<?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>