Kontoübernahme - Inside The Tenant

Dec 03 2022
Zusammenfassung: Account Takeover (ATO) ist ein Angriff, bei dem eine angreifende Katze das Konto einer anderen Person übernimmt. Es gibt mehrere Möglichkeiten für einen Kontoübernahmeangriff, nämlich Brute-Force-Credentials, Credential Stuffing, Response-Manipulation, Password-Reset-Poisoning, Social Engineering und Phishing, 2FA-Bypass-Angriffe usw.

Zusammenfassung :

Account Takeover (ATO) ist ein Angriff, bei dem eine angreifende Katze das Konto einer anderen Person übernimmt. Es gibt mehrere Möglichkeiten für einen Kontoübernahmeangriff, nämlich Brute-Force-Credentials, Credential Stuffing, Response-Manipulation, Password-Reset-Poisoning, Social Engineering und Phishing, 2FA-Bypass-Angriffe usw.

Beschreibung :

Ich habe eine Schwachstelle in einem privaten Programm auf einer der Bug-Bounty-Plattformen gefunden, für die ich 150 USD erhalten habe. Beim Durchsuchen der Anwendung habe ich eine Einladungsfunktion gefunden, die anfällig für das Lecken von Einladungstoken war. Ich nutzte das durchgesickerte Einladungstoken, um das Konto des Opfers über eine nicht registrierte E-Mail zu übernehmen, die von mir (Angreifer) bearbeitet wurde.

Was ist Mieter?

In einfachen Worten wird ein Mandant als eine Gruppe von Benutzern einer einzelnen Organisation oder Firma definiert. Es gibt einen Administrator im Mandanten, der andere Benutzer einladen kann, für das Unternehmen zu arbeiten, von dem der Mandant erstellt wurde. Ein Mieter kann aus der IT-Abteilung, der Buchhaltung, der Verkaufsabteilung usw. stammen.

Mieter - Grundlegend

Wie habe ich diese Schwachstelle gefunden?

  1. Ich habe mich in das Konto eingeloggt (Admin-Anmeldedaten wurden von der Plattform bereitgestellt) und auf die Funktion „Benutzer einladen“ geklickt
  2. Admin-Konto
Einladungsfunktion

3. Dann habe ich die Anfrage mit burpsuite abgefangen und mit der rechten Maustaste auf die Anfrage > Abfangen > Antwort auf diese Anfrage geklickt

Burpsuite - Anfrage
Burpsuite - Antwort
Ausstehende Einladung

4. Ich habe die URL für das Einladungstoken erstellt und im Browser geöffnet, weil das Token bereits in der Antwort durchgesickert war, dann habe ich auf Akzeptieren geklickt und mich aufgefordert, eine E-Mail einzugeben

Einladungstoken-URL (Opfer)
Bitte um eingeladene E-Mail (E-Mail des Opfers)

5. Dann ging ich zu Temp Mail und kopierte die nicht registrierte E-Mail und fügte sie auf der Website ein und klickte auf die Schaltfläche und dann auf Genehmigen

Temporäre Mail
Eingabe der nicht registrierten E-Mail (E-Mail des Angreifers)
Genehmigen

6. Dann wurde der Code an eine nicht registrierte E-Mail (E-Mail des Angreifers) gesendet

Bestätigungscode gesendet
Verifizierungs-Schlüssel

7. Ich habe den Code verwendet und die an das Opfer gesendete Einladung angenommen

Verifizierungs-Schlüssel
Kontoübernahme
Einladung angenommen

Warum es passiert ist ?

Meiner Meinung nach,

Zwei Fehler gab es in der Webanwendung

  1. Das Einladungstoken wurde in der Antwort durchgesickert, während der Benutzer eingeladen wurde
  2. Die Validierung des eingeladenen Benutzers auf dem Einladungstoken wurde nicht durchgeführt

Jeder Administrator kann das Konto jedes Benutzers übernehmen, der vom Administrator zum Mandanten eingeladen wird.

Der Schweregrad wäre niedrig bis mittel, da sich der Angriff innerhalb des Mandanten befindet und abgesehen davon kann ein Administrator hier nur die Identität des eingeladenen Benutzers annehmen und die Aktionen im Namen dieses Benutzers ausführen, und ein Administrator kann sich nicht als vorhandener Benutzer ausgeben .

Berechneter CVSS

Vektorzeichenfolge - CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N

Ergebnis - 5,4 (Mittel)

Angriffsfluss

Minderung

Hier wird es zwei Abschwächungen geben

  1. Der Einladungscode sollte nicht in der Antwort vom Server gesendet werden
  2. Der Einladungscode und die eingeladene E-Mail-Adresse sollten überprüft werden

// Prüfen Sie, ob die angegebene E-Mail mit dem Einladungscode übereinstimmt
if (email == inviteCode) {
// E-Mail stimmt mit dem Einladungscode überein
// Fahren Sie mit dem Rest des Authentifizierungsprozesses fort
// …
} else {
// E-Mail stimmt nicht mit der Einladung überein code
// Gibt eine Fehlermeldung zurück oder fragt nach dem korrekten Einladungscode
// …
}