Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
raccoon — Salesforce object access auditor | Kitploit
Tools/GitHubGitHub/nccgroup/raccoon
Cloud Infrastructure SecurityVulnerability AnalysisConfiguration AuditingCloud SecurityIdentity & Access Management (IAM)MisconfigurationDatabase Security
GitHubnccgroup/raccoon

raccoon

Salesforce object access auditor

Repository anzeigen
1187vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

Raccoon: Salesforce-Objektzugriffs-Auditor

Von NCC Group Plc als Open Source veröffentlicht - https://www.nccgroup.com/

Entwickelt von Jerome Smith @exploresecurity (mit Dank an Viktor Gazdag @wucpi)

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

Veröffentlicht unter AGPL - weitere Informationen siehe LICENSE.

Beschreibung

Dieses Tool ermittelt, welche Profile und Berechtigungssätze (mit aktiven Benutzern) über eine Kombination aus Lese-/Bearbeitungs-/Löschberechtigungen für ALLE Datensätze einer bestimmten Objektmenge verfügen, basierend auf ihren effektiven Freigabe- und Objekteinstellungen. Anhand dieser Ausgabe können Fehlkonfigurationen untersucht werden, die möglicherweise übermäßigen Zugriff auf Objekte mit sensiblen Daten ermöglichen. Hintergrundinformationen finden Sie im begleitenden Blogbeitrag unter https://research.nccgroup.com/2021/06/28/are-you-oversharing-in-salesforce.

Es wird empfohlen, die Ergebnisse manuell unter direkter Bezugnahme auf die Salesforce-Konfiguration und/oder durch Testen der betroffenen Profile und Berechtigungssätze zu verifizieren. Sollten Abweichungen festgestellt werden, reichen Sie bitte ein Issue mit möglichst vielen Details ein.

Verwendung

Voraussetzungen:

  • Python 3
  • Das Python-Modul requests (durch requirements.txt abgedeckt)
  • Ein Konto mit den folgenden Mindestberechtigungen:
    • 'API Enabled'
    • 'View Setup and Configuration'
    • 'Modify Metadata Through Metadata API Functions' (siehe Hinweis zu 'Kontoberechtigungen')
    • Leseberechtigung für alle zu prüfenden Objekte (oder 'View All Data' gewähren)
  • Für die Authentifizierung entweder username + password + (optional) token ODER sessionId angeben (weitere Details im Abschnitt Authentifizierung).

Erstellen Sie eine JSON-Konfigurationsdatei (oder verwenden Sie config.json als Vorlage) und füllen Sie sie wie erforderlich aus:

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 ist eine Liste der Salesforce-Objekte von Interesse (d. h. der Daten, die Ihnen am wichtigsten sind). Die Verwendung der formalen API-Namen ist die zuverlässigste Methode; sollte jedoch keine Übereinstimmung gefunden werden, versucht Raccoon einige einfache Übereinstimmungen, beispielsweise basierend auf der Anzeigebezeichnung. Falls Raccoon weiterhin keine Übereinstimmung findet, läuft das Programm weiter, weist aber in der Ausgabe darauf hin.

Mit checkLimits können Sie das verbleibende Kontingent an API-Aufrufen für die untersuchte Instanz innerhalb des 24-Stunden-Zeitraums prüfen. Raccoon tätigt relativ wenige Aufrufe pro Objekt (zusätzlich zu einer festen Anzahl pro Lauf); dieser Parameter ermöglicht es Ihnen jedoch, vor dem Fortfahren Ihre Limits zu prüfen. Der Standardwert ist true. Die Gesamtzahl der möglicherweise noch verbleibenden Anfragen am Prüfpunkt ist nicht sicher, da die Anzahl der Aufrufe davon abhängt, wie viele Objekte ein Freigabemodell 'Controlled by Parent' aufweisen. Die angegebene Zahl geht davon aus, dass alle dieses Modell verwenden, und ist daher ein Maximum.

Ausführen:

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

Authentifizierung

Wenn ein Benutzername und ein Passwort verwendet werden, beachten Sie, dass möglicherweise auch ein Sicherheits-Token erforderlich ist (wenn die Verbindung von einer IP-Adresse außerhalb definierter Netzwerkzugriffsbereiche hergestellt wird). Weitere Informationen finden Sie in diesem Artikel.

Die Verwendung der Session-ID-Alternative ist in vielen Fällen nützlich:

  • Single Sign-on, d. h. keine direkte Anmeldung bei Salesforce möglich
  • MFA ist erzwungen
  • Probleme beim Erhalten eines API-Tokens (falls benötigt)
  • Verhindert, dass Anmeldedaten versehentlich in einer Datei zurückbleiben

So erhalten Sie die Session-ID:

  • Melden Sie sich bei Salesforce an und wechseln Sie bei Bedarf in den Classic-Modus
  • Verwenden Sie das Inspektor-Werkzeug des Browsers, um die Cookies anzuzeigen
  • Manchmal gibt es mehrere sid-Cookies: Stellen Sie sicher, dass Sie dasjenige verwenden, dessen Domain-Attribut my.salesforce.com oder cloudforce.com enthält

Ausgabe

Beispielausgabe (gekürzt und anonymisiert):

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 untersucht nur Profile und Berechtigungssätze mit aktiven Benutzern, um die Ausführlichkeit der Ausgabe zu reduzieren. Informationen hierzu werden angezeigt, danach:

  • Globale Freigabeüberschreibungen werden zuerst angezeigt, da Profile und Berechtigungssätze, die über 'View All Data' und 'Modify All Data' verfügen, Rechte an ALLEN Objekten haben.
  • Jedes Objekt wird dann der Reihe nach geprüft, wobei zuerst Lese-/Bearbeitungs-/Löschrechte berücksichtigt werden, dann Lese-/Bearbeitungsrechte und zuletzt nur Leserechte. Ein Profil oder Berechtigungssatz wird in der Ausgabe nur einmal aufgeführt (im Abschnitt mit der höchsten Menge effektiver Berechtigungen). Dies dient der Vermeidung von Wiederholungen – beispielsweise ist es implizit, dass ein Profil mit 'Modify All Data' Lese-/Bearbeitungs-/Löschrechte an allen angegebenen Objekten hat; daher wird es nur unter „Global Sharing Overrides" angezeigt und nicht auch unter den Ergebnissen jedes Objekts. Die einzige Ausnahme besteht, wenn Profile oder Berechtigungssätze mit der globalen Berechtigung 'View All Data' zusätzlich Bearbeitungs-/Löschrechte auf Objektebene aktiviert haben.
  • Für jedes Objekt wird die Existenz von Freigaberegeln hervorgehoben, aber nicht weiter qualifiziert.

Wenn die Zuweisung von Berechtigungen über eine Berechtigungssatz-Gruppe (Permission Set Group) und nicht über einen einzelnen Berechtigungssatz erfolgt ist, erscheint links neben dem Namen ein Sternchen als Einrückungsmarkierung anstelle des üblichen Bindestrichs (Accounts PS Group in der obigen Beispielausgabe). Zusätzlich wird angezeigt, ob das Profil oder der Berechtigungssatz benutzerdefiniert ist (bei Berechtigungssätzen bedeutet benutzerdefiniert „von einem Administrator erstellt"; andernfalls ist es „standardmäßig und mit einer bestimmten Berechtigungssatz-Lizenz verknüpft" [ref]).

Sowohl bei globalen als auch bei Objektfreigaben werden Profile und Berechtigungssätze so sortiert, dass sie die wahrscheinliche Relevanz widerspiegeln. Die erste Sortierebene betrifft den Typ des zugewiesenen Benutzers – zuerst 'guest' (nicht authentifiziert), gefolgt von 'external' (verschiedene Arten von Portalbenutzern), dann 'internal' (alles andere). Es ist wichtig zu beachten, dass 'external' hier mit der Definition im Zusammenhang mit dem 'externen Freigabemodell' steht [ref]. Die Idee dahinter ist, potenziell übermäßige Freigaben für nicht authentifizierte oder Portalbenutzer hervorzuheben. Dies ist jedoch etwas experimentell, da die Salesforce-Dokumentation in ihrer Liste der gültigen 'UserType'-Werte für das 'User'-Objekt nicht vollständig ist [ref]. Daher kann es zu Fehlklassifizierungen kommen – bitte reichen Sie in einem solchen Fall ein Issue ein. Die zweite Sortierebene basiert auf der Anzahl aktiver Benutzer – die höchste zuerst (die Gesamtzahl der zugewiesenen Benutzer wird ebenfalls zur Information angezeigt).

Hinweise

Das Hauptziel von Raccoon ist es, Fälle von weit verbreitetem Zugriff auf alle Datensätze aufzuzeigen, und es deckt Folgendes ab:

  • Master-Detail-Beziehungen, bei denen die Freigabe 'Controlled by Parent' ist (jedoch nur, wenn es eine einzige Master-Detail-Beziehung gibt und das übergeordnete Objekt direkt über dem untergeordneten Objekt steht, d. h. das Freigabemodell des übergeordneten Objekts kann nicht ebenfalls 'Controlled by Parent' sein).
  • Besondere 'Controlled by Parent'-Beziehungen zwischen Contact/Order/Asset und dem übergeordneten Account (die sich etwas von der normalen Master-Detail-Beziehung unterscheiden).
  • Zur Wiederholung: Es werden nur Profile und Berechtigungssätze mit aktiven Benutzern berücksichtigt.

Die folgenden Faktoren, die nur eine Teilmenge der Datensätze betreffen, werden nicht bewertet:

  • Freigaberegeln (obwohl ihre Existenz für ein Objekt gekennzeichnet wird)
  • Freigabesätze (Sharing Sets)
  • Freigabegruppen (Share Groups)
  • Freigabe basierend auf der Rollenhierarchie
  • Manuelle Freigabe, die von Benutzern für einzelne Datensätze konfiguriert wurde
  • 'Implizite' (oder 'eingebaute') Freigabe für bestimmte untergeordnete Elemente von Account, wenn dessen Freigabemodell 'Private' ist
  • Das Feld 'private' für einen Opportunity-Datensatz (und die daraus resultierende Auswirkung auf zugehörige Quotes)

Bestimmte Objekte wie 'User' und 'File' passen nicht in das standardmäßige Freigabemodell und/oder andere Systemberechtigungen greifen. Bekannte Fälle werden in der Ausgabe gekennzeichnet, wenn sie in der objects-Liste angegeben sind.

Instanzen mit mehr als 2.000 kombinierten Profilen und Berechtigungssätzen werden aufgrund von Plattformbeschränkungen bei der Verwendung von 'GROUP BY' in SOQL-Anweisungen nicht unterstützt. Dies ist eine großzügige Grenze und sollte nur in den extremsten Fällen ein Hindernis darstellen.

Kontoberechtigungen

Dieses Tool führt nur Lesevorgänge aus. Es mag daher überraschend sein, 'Modify Metadata Through Metadata API Functions' als Anforderung für das Konto zu sehen, mit dem das Tool ausgeführt wird. Zum Zeitpunkt der Erstellung dieses Textes scheint es jedoch nicht möglich zu sein, ein Konto mit reinen Leseberechtigungen für die Metadata API zu konfigurieren. Aus der Dokumentation:

Identifizieren Sie einen Benutzer, der über die Berechtigung API Enabled und die Berechtigung Modify Metadata Through Metadata API Functions oder die Berechtigung Modify All Data verfügt. Diese Berechtigungen sind erforderlich, um auf Metadata-API-Aufrufe zugreifen zu können. Wenn ein Benutzer Zugriff auf Metadaten, aber nicht auf Daten benötigt, aktivieren Sie die Berechtigung Modify Metadata Through Metadata API Functions. Aktivieren Sie andernfalls die Berechtigung Modify All Data.

Daher wird empfohlen, 'Modify Metadata Through Metadata API Functions' anstelle von 'Modify All Data' zu verwenden.

Fehler melden

Wenn das Problem die Anmeldung betrifft, überprüfen Sie bitte zuerst den Hostnamen, Benutzernamen, das Passwort und das Sicherheits-Token (falls erforderlich) noch einmal. Ziehen Sie außerdem in Betracht, ob das Passwort zurückgesetzt werden muss (versuchen Sie die übliche Salesforce-Webanmeldung), da dieser Zustand einen Fehler zurückgibt, der von einer ungültigen Anmeldung nicht zu unterscheiden ist. Wenn Sie eine Session-ID verwenden, stellen Sie sicher, dass sie für die richtige Domäne gültig ist.

Führen Sie das Tool mit debug auf 2 gesetzt aus, da die ausführliche Ausgabe bei der Ursachenermittlung helfen kann. Diese Stufe gibt auch einen Stack-Trace in eine in der Ausgabe genannte Datei aus. Wenn Sie ein Issue melden, fügen Sie bitte sowohl die Konsolenausgabe als auch den Stack-Trace bei (anonymisieren Sie bei Bedarf).

Warum 'Raccoon'?

Bekannt dafür, in Objekten herumzustöbern.

Tool herunterladen