
منصة مفتوحة المصدر لإدارة اختبار الاختراق وأتمتته من قبل Salesforce Product Security
Vulnreport هي منصة لإدارة اختبارات الاختراق وإنشاء تقارير جيدة التنسيق وقابلة للتنفيذ دون الأعباء المعتادة التي تستهلك وقت مهندس الأمان. صُممت المنصة لدعم الأتمتة في كل مرحلة من مراحل العملية، وتتيح التخصيص لأي أنظمة أخرى تستخدمها كجزء من عملية اختبار الاختراق.
تم بناء Vulnreport بواسطة فريق أمان منتجات Salesforce كوسيلة للتخلص من الوقت الذي نكرسه لكتابة وتنسيق ومراجعة تقارير اختبارات الاختراق. كان هدفنا ولا يزال بناء أدوات أمان رائعة تسمح لمختبر الاختراق ومهندسي الأمان بالتركيز على إيجاد الثغرات وإصلاحها.
Vulnreport هو تطبيق ويب بلغة Ruby (مجموعة Sinatra/Rack) مدعوم بقاعدة بيانات PostgreSQL وطبقة تخزين مؤقت Redis.
يمكن تثبيت Vulnreport على VM محلي أو خادم خلف شيء مثل nginx، أو يمكن نشره على Heroku.
للنشر محليًا، ستحتاج إلى التأكد من تثبيت التبعيات:
قم باستنساخ المستودع وافتح ملف .env، وقم بتحديثه حسب الضرورة. ثم قم بتشغيل bundle install. ربما سترغب في تعديل start.sh ليعمل مع بيئتك - الملف المضمن في المستودع مخصص للاستخدام المحلي أثناء التصحيح/التطوير.
يجب عليك أيضًا إنشاء ملف .env بناءً على .env.example، أو تعيين نفس متغيرات البيئة (ENV) المحددة في .env في بيئتك.
يمكنك النشر تلقائيًا على Heroku. بعد ذلك، اتبع التعليمات أدناه لتسجيل الدخول إلى Vulnreport وإكمال التهيئة.
للنشر على Heroku (بافتراض أنك قمت بإنشاء تطبيق Heroku ولديك أداة الحزام مثبتة)
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 لتطبيقك. يمكن القيام بذلك أيضًا عبر أوامر واجهة سطر الأوامر للحزام. لاحظ أن متغيرات ENV الافتراضية بعد تشغيل الإضافات يجب أن تكون جيدة، ولكن يمكنك التحقق مرة أخرى. سترغب بالتأكيد في تحديث 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.
في هذه المرحلة، يجب الانتقال إلى عنوان URL الخاص بـ Vulnreport (مثل 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 المحدد وتكوين أنواع الثغرات (Vulntypes).
نحن نعمل على دعم بعض أنواع استيراد 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>