hacktricks/pentesting-web/account-takeover.md

150 lines
8.5 KiB
Markdown

# Account Takeover
{% hint style="success" %}
Impara e pratica AWS Hacking:<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 GCP Hacking: <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)
<details>
<summary>Supporta HackTricks</summary>
* 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 di github.
</details>
{% endhint %}
## **Problema di Autorizzazione**
L'email di un account dovrebbe essere tentata per essere cambiata, e il processo di conferma **deve essere esaminato**. Se risulta **debole**, l'email dovrebbe essere cambiata con quella della vittima designata e poi confermata.
## **Problema di Normalizzazione Unicode**
1. L'account della vittima designata `victim@gmail.com`
2. Un account dovrebbe essere creato utilizzando Unicode\
per esempio: `vićtim@gmail.com`
Come spiegato in [**questo intervento**](https://www.youtube.com/watch?v=CiIyaZ3x49c), l'attacco precedente potrebbe essere effettuato abusando dei fornitori di identità di terze parti:
* Crea un account nel fornitore di identità di terze parti con un'email simile a quella della vittima utilizzando qualche carattere unicode (`vićtim@company.com`).
* Il fornitore di terze parti non dovrebbe verificare l'email
* Se il fornitore di identità verifica l'email, forse puoi attaccare la parte di dominio come: `victim@ćompany.com` e registrare quel dominio e sperare che il fornitore di identità generi la versione ascii del dominio mentre la piattaforma della vittima normalizza il nome del dominio.
* Accedi tramite questo fornitore di identità nella piattaforma della vittima che dovrebbe normalizzare il carattere unicode e permetterti di accedere all'account della vittima.
Per ulteriori dettagli, fare riferimento al documento sulla Normalizzazione Unicode:
{% content-ref url="unicode-injection/unicode-normalization.md" %}
[unicode-normalization.md](unicode-injection/unicode-normalization.md)
{% endcontent-ref %}
## **Riutilizzo del Token di Reset**
Se il sistema target consente il **riutilizzo del link di reset**, dovrebbero essere fatti sforzi per **trovare più link di reset** utilizzando strumenti come `gau`, `wayback` o `scan.io`.
## **Pre Account Takeover**
1. L'email della vittima dovrebbe essere utilizzata per registrarsi sulla piattaforma, e dovrebbe essere impostata una password (si dovrebbe tentare di confermarla, anche se la mancanza di accesso alle email della vittima potrebbe rendere questo impossibile).
2. Si dovrebbe aspettare fino a quando la vittima si registra utilizzando OAuth e conferma l'account.
3. Si spera che la registrazione regolare venga confermata, consentendo l'accesso all'account della vittima.
## **Misconfigurazione CORS per Account Takeover**
Se la pagina contiene **misconfigurazioni CORS** potresti essere in grado di **rubare informazioni sensibili** dall'utente per **prendere il controllo del suo account** o fargli cambiare le informazioni di autenticazione per lo stesso scopo:
{% content-ref url="cors-bypass.md" %}
[cors-bypass.md](cors-bypass.md)
{% endcontent-ref %}
## **Csrf per Account Takeover**
Se la pagina è vulnerabile a CSRF potresti essere in grado di far **modificare all'utente la sua password**, email o autenticazione in modo da poter accedere:
{% content-ref url="csrf-cross-site-request-forgery.md" %}
[csrf-cross-site-request-forgery.md](csrf-cross-site-request-forgery.md)
{% endcontent-ref %}
## **XSS per Account Takeover**
Se trovi un XSS nell'applicazione potresti essere in grado di rubare cookie, storage locale, o informazioni dalla pagina web che potrebbero permetterti di prendere il controllo dell'account:
{% content-ref url="xss-cross-site-scripting/" %}
[xss-cross-site-scripting](xss-cross-site-scripting/)
{% endcontent-ref %}
## **Stessa Origine + Cookie**
Se trovi un XSS limitato o un takeover di sottodominio, potresti giocare con i cookie (fissandoli ad esempio) per cercare di compromettere l'account della vittima:
{% content-ref url="hacking-with-cookies/" %}
[hacking-with-cookies](hacking-with-cookies/)
{% endcontent-ref %}
## **Attacco al Meccanismo di Reset della Password**
{% content-ref url="reset-password.md" %}
[reset-password.md](reset-password.md)
{% endcontent-ref %}
## **Manipolazione della Risposta**
Se la risposta di autenticazione può essere **ridotta a un semplice booleano prova a cambiare false in true** e vedere se ottieni accesso.
## OAuth per Account Takeover
{% content-ref url="oauth-to-account-takeover.md" %}
[oauth-to-account-takeover.md](oauth-to-account-takeover.md)
{% endcontent-ref %}
## Iniezione dell'Intestazione Host
1. L'intestazione Host viene modificata dopo l'inizio di una richiesta di reset della password.
2. L'intestazione proxy `X-Forwarded-For` viene alterata in `attacker.com`.
3. Le intestazioni Host, Referrer e Origin vengono cambiate simultaneamente in `attacker.com`.
4. Dopo aver avviato un reset della password e poi optato per rinviare la mail, vengono impiegati tutti e tre i metodi sopra menzionati.
## Manipolazione della Risposta
1. **Manipolazione del Codice**: Il codice di stato viene alterato in `200 OK`.
2. **Manipolazione del Codice e del Corpo**:
* Il codice di stato viene cambiato in `200 OK`.
* Il corpo della risposta viene modificato in `{"success":true}` o un oggetto vuoto `{}`.
Queste tecniche di manipolazione sono efficaci in scenari in cui viene utilizzato JSON per la trasmissione e la ricezione dei dati.
## Cambiare l'email della sessione corrente
Da [questo rapporto](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea):
* L'attaccante richiede di cambiare la sua email con una nuova
* L'attaccante riceve un link per confermare il cambio dell'email
* L'attaccante invia alla vittima il link affinché lo clicchi
* L'email della vittima viene cambiata in quella indicata dall'attaccante
* L'attaccante può recuperare la password e prendere il controllo dell'account
Questo è accaduto anche in [**questo rapporto**](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea).
### Vecchi Cookie
Come spiegato [**in questo post**](https://medium.com/@niraj1mahajan/uncovering-the-hidden-vulnerability-how-i-found-an-authentication-bypass-on-shopifys-exchange-cc2729ea31a9), era possibile accedere a un account, salvare i cookie come utente autenticato, disconnettersi e poi accedere di nuovo.\
Con il nuovo accesso, anche se potrebbero essere generati cookie diversi, i vecchi hanno ricominciato a funzionare.
## Riferimenti
* [https://infosecwriteups.com/firing-8-account-takeover-methods-77e892099050](https://infosecwriteups.com/firing-8-account-takeover-methods-77e892099050)
* [https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea](https://dynnyd20.medium.com/one-click-account-take-over-e500929656ea)
{% hint style="success" %}
Impara e pratica AWS Hacking:<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 GCP Hacking: <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)
<details>
<summary>Supporta HackTricks</summary>
* 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 di github.
</details>
{% endhint %}