كلا المنصتين، Salesforce وServiceNow، تحتويان على حسابات مستخدم ضيف دائمة للزوار غير الموثّقين. لا يمكن حذف حسابات الضيوف هذه. صلاحياتهم — أي السجلات والكائنات التي يمكنهم قراءتها — يتم تكوينها من قبل كل مؤسسة. إذا كان ملف الضيف لديه صلاحية قراءة لسجل ما، فيمكن لأي شخص على الإنترنت استرداده من خلال نقاط نهاية API مشروعة تمامًا.
في Salesforce (إطار Aura):
/aura أو /s/sfsites/aura.HostConfigController.getConfigData لتعداد الكائنات (Account، Contact، Case، Lead، User، ContentDocument، إلخ) التي يمكن للمستخدم الضيف الوصول إليها. SelectableListDataProviderController.getItems للتنقل عبر جميع السجلات في كل كائن يمكن الوصول إليه. في Salesforce (إطار LWR — Lightning Web Runtime):
POST /webruntime/api/services/data/{version}/graphql?asGuest=trueEntityDefinition، ثم قراءة السجلات باستخدام التصفح القائم على المؤشر. في ServiceNow:
/api/now/sp/search — وهي واجهة برمجة بحث أصلية لمنافذ Service Portal غير موثقة إلى حد كبير ولا تحتوي على أي وثائق عبر الإنترنت أو أدوات مفتوحة المصدر تشير إليها. استقصاء التسجيل الذاتي (Salesforce):
158.220.87.79، مستضاف على خادم VPS من Contabo (مزود استضافة ألماني)، مرتبط بالنطاق city-forum.com (نطاق تم تسجيله في عام 2002، تم التخلي عنه، ثم إعادة استخدامه). Go-http-client، مما يجعل التعرف عليها سهلاً في السجلات. بالنسبة لـ ServiceNow: سجلات المعاملات (syslog_transaction) في المنصة لا تسجل نص POST لطلبات /api/now/sp/search. يمكن للمدافعين رؤية أن عمليات البحث الآلية قد حدثت وكمية البيانات التي تم إرجاعها (عبر عمود طول المخرجات)، ولكن لا يمكنهم تحديد مصطلحات البحث الدقيقة أو السجلات المحددة التي تم استردادها.
بالنسبة لـ Salesforce: حركة تعداد الضيوف تتكون من استدعاءات API شرعية تتوافق مع البروتوكول وتبدو كحركة مرور عادية للموقع. بينما يمكن لمراقبة الأحداث إظهار حجم أحداث AuraRequest وSites من المستخدمين الضيوف، تظهر السجلات أن البيانات قد طُلبت ولكن لا تظهر المحتوى المحدد لما تم إرجاعه في استجابات GraphQL أو Aura.
بمعنى آخر، يمكنك رؤية أن المهاجم كان موجودًا وكمية البيانات التي سحبها، لكن لا يمكنك إعادة بناء السجلات أو الحقول المحددة التي استخرجها.
sp_portal وm2m_sp_portal_search_source وsp_search_source. افصل أي مصدر بحث لا يحتاجه المنفذ العام.is_scripted_source وdata_fetch_script وما إذا كان يستخدم GlideRecordSecure (يفرض قوائم ACL) مقابل GlideRecord العادي (الذي لا يفرضها).kb_uc_can_read_mtom السيئة بدلاً من تحرير قواعد المشاركة بشكل عشوائي.getItems وgetConfigData من USER_TYPE = 'Guest'/webruntime/.../vNN.0/graphql، وطلبات إلى /SiteRegister و/CommunitiesSelfReg./api/now/sp/search المقدمة كمستخدم ضيف. قم بالفرز حسب طول المخرجات — الصفوف التي تعيد كمية أكبر بكثير من خط الأساس الصغير للنتيجة الفارغة تشير إلى عمليات بحث أعادت محتوى.