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

रिपॉजिटरी देखें
11873 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
वेबसाइट

Raccoon: Salesforce ऑब्जेक्ट एक्सेस ऑडिटर

NCC Group Plc द्वारा ओपन सोर्स के रूप में जारी - https://www.nccgroup.com/

Jerome Smith @exploresecurity द्वारा विकसित (Viktor Gazdag @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 कॉन्फ़िगरेशन के सीधे संदर्भ और/या प्रभावित Profiles और Permission Sets के परीक्षण के साथ मैन्युअल रूप से सत्यापित किया जाए। यदि विसंगतियाँ मिलें, तो कृपया अधिक से अधिक विवरण के साथ issue दर्ज करें।

उपयोग

आवश्यकताएँ:

  • Python 3
  • Python requests मॉड्यूल (requirements.txt द्वारा कवर्ड)
  • निम्नलिखित न्यूनतम अनुमतियों वाला एक खाता:
    • 'API Enabled'
    • 'View Setup and Configuration'
    • 'Modify Metadata Through Metadata API Functions' ('Account permissions' पर नोट देखें)
    • ऑडिट किए जाने वाले सभी ऑब्जेक्ट्स पर पढ़ने की अनुमति (या 'View All Data' दें)
  • प्रमाणीकरण के लिए, या तो username + password + (वैकल्पिक) token या sessionId प्रदान करें (अधिक विवरण Authentication अनुभाग में)।

एक 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 ऑब्जेक्ट्स की सूची है (यानी वह डेटा जिसकी आप सबसे अधिक परवाह करते हैं)। औपचारिक API नामों का उपयोग करना सबसे विश्वसनीय तरीका है, लेकिन यदि कोई मेल नहीं मिलता है, तो Raccoon कुछ सरल मिलानों का प्रयास करेगा, उदाहरण के लिए प्रदर्शित लेबल के आधार पर। यदि Raccoon को अभी भी कोई मेल नहीं मिलता है, तो प्रोग्राम आगे बढ़ेगा लेकिन आउटपुट में इसे चिह्नित करेगा।

checkLimits आपको जाँच करने की सुविधा देता है कि जाँचे जा रहे इंस्टेंस के लिए 24 घंटे की घूमती अवधि में कितने API कॉल शेष हैं। Raccoon प्रति ऑब्जेक्ट अपेक्षाकृत कम कॉल करता है (प्रति रन एक निश्चित संख्या के अतिरिक्त), लेकिन शिष्टाचार के रूप में, यह पैरामीटर आपको आगे बढ़ने से पहले अपनी सीमाएँ जाँचने की अनुमति देता है। डिफ़ॉल्ट मान true है। चेकपॉइंट पर संभावित शेष अनुरोधों की कुल संख्या निश्चित नहीं है क्योंकि कॉलों की संख्या इस बात पर निर्भर करेगी कि कितने ऑब्जेक्ट में 'Controlled by Parent' साझाकरण मॉडल है। बताई गई संख्या यह मानकर चलती है कि सभी में यही है और इस प्रकार यह अधिकतम सीमा है।

चलाएँ:

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

प्रमाणीकरण

जब उपयोगकर्ता नाम और पासवर्ड का उपयोग किया जाता है, तो ध्यान दें कि सुरक्षा टोकन की भी आवश्यकता हो सकती है (यदि किसी परिभाषित Network Access सीमा के बाहर किसी IP पते से आ रहे हैं)। अधिक जानकारी के लिए इस लेख को देखें।

session ID विकल्प का उपयोग कई मामलों में उपयोगी है:

  • सिंगल साइन-ऑन यानी Salesforce में सीधा लॉगिन संभव नहीं
  • MFA लागू है
  • API टोकन प्राप्त करने में परेशानी (जब आवश्यक हो)
  • क्रेडेंशियल गलती से फ़ाइल में छोड़े जाने से रोकता है

session ID प्राप्त करने के लिए:

  • Salesforce में लॉग इन करें और यदि आवश्यक हो तो Classic मोड पर स्विच करें
  • कुकीज़ प्रदर्शित करने के लिए ब्राउज़र के Inspect टूल का उपयोग करें
  • कभी-कभी कई 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 अपने आउटपुट की विस्तृतता कम करने के लिए केवल सक्रिय उपयोगकर्ताओं वाले Profiles और Permission Sets की जाँच करता है। इसके बारे में जानकारी प्रदर्शित की जाती है, जिसके बाद:

  • Global Sharing Overrides पहले प्रदर्शित किए जाते हैं क्योंकि जिन Profiles और Permission Sets को 'View All Data' और 'Modify All Data' की अनुमति है, उनके पास ALL ऑब्जेक्ट्स पर अधिकार होते हैं।
  • फिर प्रत्येक ऑब्जेक्ट का क्रम से ऑडिट किया जाता है जिसमें पहले read+edit+delete विशेषाधिकार, फिर read+edit, और अंत में केवल read पर विचार किया जाता है। एक Profile या Permission Set आउटपुट में केवल एक बार सूचीबद्ध किया जाता है (उस अनुभाग में जिसमें प्रभावी अनुमतियों का उच्चतम सेट होता है)। यह पुनरावृत्ति से बचने के लिए है - उदाहरण के लिए, यह निहित है कि 'Modify All Data' वाली Profile में निर्दिष्ट सभी ऑब्जेक्ट्स पर read+edit+delete होता है; इस प्रकार, यह केवल "Global Sharing Overrides" के अंतर्गत दिखाई देती है, प्रत्येक ऑब्जेक्ट के परिणामों के अंतर्गत सूचीबद्ध नहीं होती। एकमात्र अपवाद तब है जब वैश्विक 'View All Data' विशेषाधिकार वाले Profiles या Permission Sets में ऑब्जेक्ट स्तर पर आगे संपादन/हटाने की अनुमतियाँ सक्षम हों।
  • प्रत्येक ऑब्जेक्ट के लिए, Sharing Rules की मौजूदगी को उजागर किया जाता है लेकिन आगे विशेषता नहीं दी जाती।

यदि विशेषाधिकारों का असाइनमेंट किसी एक Permission Set के बजाय Permission Set Group के माध्यम से दिया गया है, तो सामान्य हाइफ़न के स्थान पर नाम के बाईं ओर एक इंडेंटेशन मार्कर के रूप में तारांकन दिखाई देता है (उपरोक्त नमूना आउटपुट में Accounts PS Group)। इसके अलावा, यह भी दिखाया जाता है कि Profile या Permission Set custom है या नहीं (Permission Sets के लिए custom का अर्थ है "किसी एडमिन द्वारा बनाया गया" अन्यथा यह "मानक है और किसी विशिष्ट permission set लाइसेंस से संबंधित है" [ref])।

वैश्विक और ऑब्जेक्ट दोनों प्रकार की साझाकरण के लिए, Profiles और Permission Sets को संभावित रुचि दर्शाने के लिए क्रमबद्ध किया जाता है। क्रमबद्धता का पहला स्तर यह बताता है कि किस प्रकार का उपयोगकर्ता असाइन किया गया है - पहले 'guest' (अप्रमाणित), फिर 'external' (विभिन्न प्रकार के पोर्टल उपयोगकर्ता), फिर 'internal' (बाकी सब कुछ)। यह ध्यान रखना महत्वपूर्ण है कि यहाँ 'external' 'external sharing model' के संदर्भ में उपयोग की गई परिभाषा से संबंधित है [ref]। यहाँ विचार अप्रमाणित या पोर्टल उपयोगकर्ताओं के लिए संभावित रूप से अत्यधिक साझाकरण को उजागर करना है। हालाँकि, यह कुछ हद तक प्रयोगात्मक है क्योंकि Salesforce दस्तावेज़ीकरण 'User' ऑब्जेक्ट के लिए मान्य 'UserType' मानों की सूची में व्यापक नहीं है [ref]। परिणामस्वरूप, गलत वर्गीकरण हो सकता है - ऐसे मामले में कृपया issue दर्ज करें। क्रमबद्धता का दूसरा स्तर सक्रिय उपयोगकर्ताओं की संख्या पर आधारित है - पहले उच्चतम (जानकारी के लिए असाइन किए गए उपयोगकर्ताओं की कुल संख्या भी प्रदर्शित की जाती है)।

नोट्स

Raccoon का प्राथमिक उद्देश्य सभी रिकॉर्ड्स तक व्यापक पहुँच के उदाहरणों को उजागर करना है, और इसमें शामिल हैं:

  • Master-Detail संबंध जहाँ साझाकरण 'Controlled by Parent' है (लेकिन केवल तभी जब एक ही Master-Detail संबंध हो और parent सीधे child के ऊपर हो यानी parent का साझाकरण मॉडल भी 'Controlled by Parent' नहीं हो सकता)।
  • Contact/Order/Asset और parent Account के बीच विशेष 'Controlled by Parent' संबंध (जो सामान्य Master-Detail संबंध से थोड़ा अलग तरीके से काम करते हैं)।
  • फिर से दोहराने के लिए, केवल सक्रिय उपयोगकर्ताओं वाले Profiles और Permission Sets पर विचार किया जाता है।

निम्नलिखित कारक, जो रिकॉर्ड्स के केवल एक उपसमुच्चय को प्रभावित करते हैं, मूल्यांकित नहीं किए जाते:

  • Sharing Rules (हालाँकि किसी ऑब्जेक्ट के लिए उनकी मौजूदगी को चिह्नित किया जाता है)
  • Sharing Sets
  • Share Groups
  • Role पदानुक्रम पर आधारित साझाकरण
  • अलग-अलग रिकॉर्ड्स पर उपयोगकर्ताओं द्वारा कॉन्फ़िगर किया गया मैन्युअल साझाकरण
  • जब Account का साझाकरण मॉडल Private हो तो उसके कुछ child ऑब्जेक्ट्स के लिए 'Implicit' (या 'built-in') साझाकरण
  • Opportunity रिकॉर्ड के लिए 'private' फ़ील्ड (और संबंधित Quotes पर उसका परिणामी प्रभाव)

कुछ ऑब्जेक्ट्स, जैसे 'User' और 'File', मानक साझाकरण मॉडल में फिट नहीं होते और/या अन्य सिस्टम अनुमतियाँ काम में आती हैं। यदि objects सूची में निर्दिष्ट हैं तो ज्ञात उदाहरणों को आउटपुट में चिह्नित किया जाता है।

2,000 से अधिक संयुक्त Profiles और Permission Sets वाले इंस्टेंस SOQL कथनों में 'GROUP BY' के उपयोग पर प्लेटफ़ॉर्म सीमाओं के कारण समर्थित नहीं हैं। यह एक उदार भत्ता है और केवल सबसे चरम मामलों में ही बाधा बनना चाहिए।

खाता अनुमतियाँ

यह टूल केवल पढ़ने के ऑपरेशन करता है। इसलिए टूल चलाने के लिए उपयोग किए जाने वाले खाते के लिए '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 All Data' के स्थान पर 'Modify Metadata Through Metadata API Functions' का उपयोग किया जाए।

बग रिपोर्ट करना

यदि समस्या लॉगिन से है तो कृपया पहले hostname, username, password और security token (यदि आवश्यक हो) की दोबारा जाँच करें। यह भी विचार करें कि क्या पासवर्ड रीसेट करने की आवश्यकता है (सामान्य Salesforce वेब लॉगिन आज़माएँ) क्योंकि यह स्थिति ऐसी त्रुटि लौटाती है जो अमान्य लॉगिन से अप्रभेद्य होती है। यदि session ID का उपयोग कर रहे हैं, तो सुनिश्चित करें कि यह सही डोमेन के लिए मान्य है।

टूल को debug सेट करके 2 पर चलाएँ, क्योंकि विस्तृत आउटपुट कारण की पहचान करने में मदद कर सकता है। यह स्तर आउटपुट में नामित फ़ाइल में stack trace भी आउटपुट करता है। यदि कोई issue रिपोर्ट कर रहे हैं, तो कृपया कंसोल आउटपुट और stack trace दोनों शामिल करें (आवश्यकतानुसार अनामीकृत करें)।

'Raccoon' क्यों?

ऑब्जेक्ट्स के आस-पास खोजबीन करने के लिए जाना जाता है।

टूल डाउनलोड करें