Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
raccoon — Salesforce object access auditor | Kitploit
أدوات/GitHubGitHub/nccgroup/raccoon
Cloud Infrastructure SecurityVulnerability AnalysisConfiguration AuditingCloud SecurityIdentity & Access Management (IAM)MisconfigurationDatabase Security
GitHubnccgroup/raccoon

raccoon

Salesforce object access auditor

عرض المستودع
1187منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

راكون: مدقّق الوصول إلى كائنات Salesforce

صدر كمصدر مفتوح من قبل NCC Group Plc - https://www.nccgroup.com/

طوّره جيروم سميث @exploresecurity (مع الشكر لفيكتور جازداغ @wucpi)

https://www.github.com/nccgroup/raccoon

صدر بموجب رخصة AGPL - يُرجى الرجوع إلى LICENSE لمزيد من المعلومات.

الوصف

تحدّد هذه الأداة أيّ الملفات التعريفية (Profiles) ومجموعات الصلاحيات (Permission Sets) (التي لديها مستخدمون نشطون) تمتلك مجموعةً ما من صلاحيات القراءة/التحرير/الحذف على جميع السجلات لمجموعة معيّنة من الكائنات، وذلك بناءً على إعدادات المشاركة والإعدادات الفعّالة الخاصة بها. ومن هذا المخرَج، يمكن التحقيق في الأخطاء الإعدادية التي قد تسمح بوصول مفرط إلى كائنات تحتوي على بيانات حسّاسة. راجع مقالة المدوّنة المرافقة للخلفية على https://research.nccgroup.com/2021/06/28/are-you-oversharing-in-salesforce.

يُنصح بالتحقق من النتائج يدويًا بالرجوع المباشر إلى إعدادات Salesforce و/أو اختبار الملفات التعريفية ومجموعات الصلاحيات المتأثرة. إذا وُجدت أيّ تباينات، فيُرجى فتح مشكلة مع أكبر قدر ممكن من التفاصيل.

الاستخدام

المتطلبات:

  • Python 3
  • وحدة requests الخاصة ببايثون (مغطّاة في requirements.txt)
  • حساب يتمتع بالصلاحيات الدنيا التالية:
    • 'API Enabled'
    • 'View Setup and Configuration'
    • 'Modify Metadata Through Metadata API Functions' (انظر الملاحظة حول 'صلاحيات الحساب')
    • صلاحية قراءة على جميع الكائنات المراد تدقيقها (أو منح 'View All Data')
  • للمصادقة، قم بتوفير إمّا username + password + (اختياري) token أو sessionId (مزيد من التفاصيل في قسم المصادقة).

أنشئ ملف إعدادات بصيغة JSON (أو استخدم config.json كقالب) واملأه حسب الحاجة:

root@kitploit:~
{
	"hostname": "somewhere.my.salesforce.com",
	"username": "",
	"password": "",
	"token": "<optional token>",
	"sessionId": "",
	"objects": ["Account", "Contact"],
	"checkLimits": true,
	"debug": "<optional debug level (0, 1 or 2)>"
}

objects هي قائمة بكائنات Salesforce المهمة (أي البيانات التي تهتم بها أكثر). استخدام أسماء واجهة البرمجة الرسمية هو الطريقة الأكثر موثوقية، ولكن إذا لم يتم العثور على تطابق، سيحاول Raccoon بعض التطابقات البسيطة بناءً، على سبيل المثال، على التسمية المعروضة. إذا استمر Raccoon في الفشل في العثور على تطابق، فسيُكمل البرنامج عملَه لكنه سيُشير إلى ذلك في المخرَج.

يتيح لك checkLimits التحقق من حصّة استدعاءات واجهة البرمجة المتبقية للمؤسسة قيد الفحص خلال الفترة المتدحرجة البالغة 24 ساعة. يقوم Raccoon بإجراء عدد قليل نسبيًا من الاستدعاءات لكل كائن (بالإضافة إلى عدد ثابت لكل تشغيل)، ولكن، كمجاملة، تتيح لك هذه المعلمة التحقق من حدودك قبل المتابعة. القيمة الافتراضية هي true. العدد الإجمالي للطلبات المتبقية المحتملة عند نقطة الفحص ليس مؤكدًا لأن عدد الاستدعاءات سيعتمد على عدد الكائنات التي لديها نموذج مشاركة 'Controlled by Parent'. الرقم المذكور يفترض أنها جميعًا كذلك، وهو بالتالي رقم أقصى.

قم بالتشغيل:

root@kitploit:~
git clone https://github.com/nccgroup/raccoon
pip3 install -r requirements.txt
python3 raccoon.py <config_file>

المصادقة

عند استخدام اسم مستخدم وكلمة مرور، لاحظ أنه قد تكون هناك حاجة أيضًا إلى رمز أمان (إذا كان الاتصال من عنوان IP خارج أي نطاقات الوصول إلى الشبكة المعرّفة). راجع هذه المقالة لمزيد من المعلومات.

استخدام بديل معرف الجلسة مفيد في كثير من الحالات:

  • الدخول الموحّد (SSO) أي عدم إمكانية تسجيل الدخول المباشر إلى Salesforce
  • تفعيل المصادقة متعددة العوامل (MFA)
  • صعوبة الحصول على رمز واجهة البرمجة (عند الحاجة)
  • يمنع ترك بيانات الاعتماد في ملف عن طريق الخطأ

للحصول على معرف الجلسة:

  • سجّل الدخول إلى Salesforce وبدّل إلى الوضع الكلاسيكي إذا لزم الأمر
  • استخدم أداة Inspect في المتصفح لعرض ملفات تعريف الارتباط (cookies)
  • في بعض الأحيان توجد عدة ملفات تعريف ارتباط sid: تأكد من أخذ ذلك الذي تتضمن سمة Domain الخاصة به my.salesforce.com أو cloudforce.com

المخرَج

مثال على المخرَج (مختصر ومجهول المصدر):

root@kitploit:~
Raccoon - Salesforce object access auditor
- version 1.0
- https://www.github.com/nccgroup/raccoon
* Refer to README for usage notes including important limitations *

Target instance: somewhere.my.salesforce.com
- Login successful

4,969,529 API requests can be sent to this instance from a 24-hour limit of 5,000,000
- Up to 33 further requests are required to complete (3 requests sent so far)
- Do you want to continue? Enter 'y' to proceed: y

Validating objects
- Found object 'Accounts' with API name 'Account'
- Found object 'Contact' with API name 'Contact'
- Found object 'Quotes' with API name 'Quote__c'
- Found object 'Quote Lines' with API name 'QuoteLine__c'

Evaluating 28 Profiles and 104 Permission Sets
- Profiles with active users: 15
- Permission Sets with active users: 67
- Ignoring 50 unused Profiles and Permission Sets

Global Sharing Overrides (ALL records for ALL objects)
------------------------------------------------------

  READ/EDIT/DELETE                           [C]ustom Active/Total [G]uest[E]xt[I]nt
  Profiles
  - System Administrator                              61/91                    [I]

  READ
  Profiles
  - Integration User                         [C]      1/1                      [I]
  - Analytics Cloud Integration User                  1/1                      [I]

Object Sharing (ALL records for EACH object)
--------------------------------------------

Account:
  Organization-wide default sharing
  - Internal: Public Read Only
  - External: <Undefined>

  READ/EDIT/DELETE                           [C]ustom Active/Total [G]uest[E]xt[I]nt
  Profiles
  - Integration User                         [C]      1/1                      [I]
  Permission Sets (* Groups)
  - Mulesoft Integration                     [C]      2/2                      [I]

  READ
  Profiles
  - Read Only                                [C]      192/199                  [I]
  - Sales User                               [C]      192/248                  [I]
  - Finance User                             [C]      16/20                    [I]
  - Standard User                                     6/3075                   [I]
  Permission Sets (* Groups)
  * Accounts PS Group                        [C]      36/39                    [I]
  - Sales Operations                         [C]      24/26                    [I]
  - SharePoint User                          [C]      3/4                      [I]

  Sharing Rules (manual check required):
  - Criteria-based rules configured
  - Ownership-based rules configured

Contact:
  Organization-wide default sharing
  - Internal: Controlled by Parent
  - External: <Undefined>
  Parent object: 'Account'
  - Internal: Public Read Only
  - External: <Undefined>

  READ/EDIT/DELETE                           [C]ustom Active/Total [G]uest[E]xt[I]nt
  Profiles
  - Integration User                                  1/1                      [I]
  Permission Sets (* Groups)
  - Mulesoft Integration                     [C]      2/2                      [I]

  READ
  Profiles
  - Read Only                                [C]      192/199                  [I]
  - Sales User                               [C]      192/248                  [I]
  - Finance User                             [C]      16/20                    [I]
  - Standard User                                     6/3075                   [I]
  Permission Sets (* Groups)
  - Sales Operations                         [C]      24/26                    [I]

Quote__c:
  Organization-wide default sharing
  - Internal: Public Read/Write
  - External: <Undefined>

  READ/EDIT                                  [C]ustom Active/Total [G]uest[E]xt[I]nt
  Profiles
  - Sales User                               [C]      192/248                  [I]

  READ
  Profiles
  - Finance User                             [C]      16/20                    [I]
  Permission Sets (* Groups)
  - Mulesoft Integration                     [C]      2/2                      [I]

QuoteLine__c:
  Organization-wide default sharing
  - Internal: Controlled by Parent
  - External: <Undefined>
  Parent object: 'Quote__c'
  - Internal: Public Read/Write
  - External: <Undefined>

  READ/EDIT/DELETE                           [C]ustom Active/Total [G]uest[E]xt[I]nt
  Profiles
  - Sales User                               [C]      192/248                  [I]

  READ
  Profiles
  - Finance User                             [C]      16/20                    [I]
  Permission Sets (* Groups)
  - Mulesoft Integration                     [C]      2/2                      [I]

Total API requests sent: 31

يدرس Raccoon فقط الملفات التعريفية ومجموعات الصلاحيات التي لديها مستخدمون نشطون لتقليل حجم مخرَجاته. يتم عرض معلومات حول ذلك، وبعدها:

  • تُعرض التجاوزات العامة للمشاركة (Global Sharing Overrides) أولًا لأن الملفات التعريفية ومجموعات الصلاحيات المصرّح لها بـ'View All Data' و'Modify All Data' لديها حقوق على جميع الكائنات.
  • ثم يتم تدقيق كل كائن بدوره، مع النظر أولًا في صلاحيات القراءة+التحرير+الحذف، ثم القراءة+التحرير، وأخيرًا القراءة فقط. يُدرج الملف التعريفي أو مجموعة الصلاحيات مرة واحدة فقط داخل المخرَج (في القسم الذي يحتوي على أعلى مجموعة من الصلاحيات الفعّالة). وذلك لتجنب التكرار - على سبيل المثال، من المفهوم ضمنيًا أن الملف التعريفي الذي لديه 'Modify All Data' يملك صلاحيات القراءة+التحرير+الحذف على جميع الكائنات المحددة؛ وبالتالي، يظهر فقط تحت "Global Sharing Overrides"، ولا يُدرج أيضًا تحت نتائج كل كائن. الاستثناء الوحيد هو عندما تكون لدى الملفات التعريفية أو مجموعات الصلاحيات التي تملك صلاحية 'View All Data' العامة صلاحيات تحرير/حذف إضافية مفعّلة على مستوى الكائن.
  • لكل كائن، يتم إبراز وجود قواعد المشاركة (Sharing Rules) دون مزيد من التفصيل.

إذا كان منح الصلاحيات قد تم عبر مجموعة مجموعات صلاحيات (Permission Set Group)، وليس عبر مجموعة صلاحيات واحدة، تظهر علامة النجمة كمؤشر إزاحة إلى يسار الاسم بدلًا من الشرطة المعتادة (Accounts PS Group في المخرَج النموذجي أعلاه). بالإضافة إلى ذلك، يتم أيضًا عرض ما إذا كان الملف التعريفي أو مجموعة الصلاحيات مخصصًا (custom) (بالنسبة لمجموعات الصلاحيات، يعني "مخصص" أنها "أُنشئت بواسطة مسؤول"، وإلا فهي "قياسية ومرتبطة بترخيص مجموعة صلاحيات محدد" [مرجع]).

بالنسبة لكل من المشاركة العامة ومشاركة الكائنات، يتم ترتيب الملفات التعريفية ومجموعات الصلاحيات لتعكس الاهتمام المحتمل. المستوى الأول من الترتيب يتعلق بنوع المستخدم المعيَّن - 'ضيف' (guest) (غير مصادَق) أولًا، يليه 'خارجي' (external) (أنواع مختلفة من مستخدمي البوابة) ثم 'داخلي' (internal) (أي شيء آخر). من المهم ملاحظة أن 'external' هنا مرتبط بالتعريف المستخدم في سياق 'نموذج المشاركة الخارجية' [مرجع]. الفكرة هنا هي إبراز المشاركة المفرطة المحتملة للمستخدمين غير المصادَقين أو مستخدمي البوابة. ومع ذلك، فهي تجريبية إلى حد ما لأن وثائق Salesforce ليست شاملة في قائمتها لقيم 'UserType' الصالحة لكائن 'User' [مرجع]. نتيجة لذلك، من الممكن حدوث تصنيف خاطئ - فيرجى فتح مشكلة في مثل هذه الحالة. المستوى الثاني من الترتيب يعتمد على عدد المستخدمين النشطين - الأعلى أولًا (يُعرض أيضًا العدد الإجمالي للمستخدمين المعيَّنين لأغراض المعلومات).

ملاحظات

الهدف الأساسي لـRaccoon هو إبراز حالات الوصول الواسع النطاق إلى جميع السجلات، ويغطي:

  • علاقات Master-Detail حيث تكون المشاركة 'Controlled by Parent' (ولكن فقط إذا كانت هناك علاقة Master-Detail واحدة وكان الأصل مباشرة فوق التابع، أي أن نموذج مشاركة الأصل لا يمكن أن يكون أيضًا 'Controlled by Parent').
  • علاقات 'Controlled by Parent' الخاصة بين Contact/Order/Asset وحساب الأصل (والتي تعمل بشكل مختلف قليلًا عن علاقة Master-Detail العادية).
  • وللتأكيد، يتم النظر فقط في الملفات التعريفية ومجموعات الصلاحيات التي لديها مستخدمون نشطون.

العوامل التالية، التي تؤثر فقط على مجموعة فرعية من السجلات، لا يتم تقييمها:

  • قواعد المشاركة (Sharing Rules) (على الرغم من الإشارة إلى وجودها لكائن ما)
  • مجموعات المشاركة (Sharing Sets)
  • مجموعات المشاركة (Share Groups)
  • المشاركة المستندة إلى التسلسل الهرمي للأدوار
  • المشاركة اليدوية التي يكوّنها المستخدمون على سجلات فردية
  • المشاركة 'الضمنية' (أو 'المدمجة') لبعض العناصر التابعة لحساب (Account) عندما يكون نموذج المشاركة خاصًا (Private)
  • الحقل 'private' لسجل فرصة (Opportunity) (وتأثيره اللاحق على عروض الأسعار ذات الصلة)

كائنات معينة، مثل 'User' و'File'، لا تناسب نموذج المشاركة القياسي و/أو تدخل صلاحيات نظام أخرى. يتم الإشارة إلى الحالات المعروفة في المخرَج إذا كانت محددة في قائمة objects.

لا يتم دعم المؤسسات التي لديها أكثر من 2,000 ملف تعريفي ومجموعة صلاحيات مجتمعة بسبب قيود المنصة على استخدام 'GROUP BY' في عبارات SOQL. هذا حَدّ سخي ولا ينبغي أن يكون عائقًا إلا في الحالات القصوى.

صلاحيات الحساب

تقوم هذه الأداة بعمليات قراءة فقط فقط. لذلك قد يكون من المفاجئ رؤية 'Modify Metadata Through Metadata API Functions' كمتطلب للحساب المستخدم لتشغيل الأداة. ومع ذلك، في وقت كتابة هذا الشرح، لا يبدو من الممكن تكوين حساب بصلاحيات قراءة فقط لواجهة برمجة تطبيقات البيانات الوصفية (Metadata API). من التوثيق:

حدد مستخدمًا لديه صلاحية API Enabled وصلاحية Modify Metadata Through Metadata API Functions أو صلاحية Modify All Data. هذه الصلاحيات مطلوبة للوصول إلى استدعاءات Metadata API. إذا كان المستخدم يحتاج إلى الوصول إلى البيانات الوصفية وليس إلى البيانات، فعِّل صلاحية Modify Metadata Through Metadata API Functions. وإلا، فعِّل صلاحية Modify All Data.

لذلك يُقترح استخدام 'Modify Metadata Through Metadata API Functions' بدلًا من 'Modify All Data'.

الإبلاغ عن الأخطاء

إذا كانت المشكلة متعلقة بتسجيل الدخول، فيُرجى أولًا التحقق مرة أخرى من اسم المضيف واسم المستخدم وكلمة المرور ورمز الأمان (إذا لزم الأمر). ضع في اعتبارك أيضًا ما إذا كانت كلمة المرور بحاجة إلى إعادة تعيين (جرّب تسجيل الدخول المعتاد عبر ويب Salesforce) لأن هذا الشرط يُرجع خطأ لا يمكن تمييزه عن تسجيل دخول غير صالح. إذا كنت تستخدم معرف جلسة، فتأكد من أنه صالح للنطاق الصحيح.

قم بتشغيل الأداة مع ضبط debug على 2، لأن المخرَج المفصّل قد يساعد في تحديد السبب. يخرج هذا المستوى أيضًا تتبّع كومة (stack trace) إلى ملف مذكور اسمه في المخرَج. إذا أبلغت عن مشكلة، فيُرجى تضمين كل من مخرَج وحدة التحكم وتتبّع الكومة (مع إخفاء البيانات الحساسة حسب الحاجة).

لماذا 'Raccoon'؟

معروف بالبحث في الأشياء (Raccoon = راكون).

تنزيل الأداة