
Exploit per il takeover dell'account GitLab tramite CVE-2023-7028, che dimostra il bypass del reset della password iniettando l'email dell'attaccante per ricevere il token di reset.
GitLab è un gestore di repository ospitato sul web ampiamente adottato, che fornisce una piattaforma completa per la gestione del codice sorgente, l'integrazione, la manutenzione e la collaborazione nei progetti di sviluppo softwareCVE-2023-7028 è una vulnerabilità che consente a un attaccante di impossessarsi dell'account utente (Account TakeOver) tramite il modulo reset passwordversioni di GitLab:
reset password, in particolare nell'endpoint API POST /users/password di GitLab. L'attaccante sfrutta la vulnerabilità nel campo email address bypassando il controllo del formato errato, il che consente all'attaccante di inserire la propria email e, a quel punto, GitLab invia il all'email dell'attaccantereset tokenBasandosi sul codice fornito da GitLab, notiamo quanto segue:

La parte che gestisce la richiesta di Reset Password si trova nel file spec/controllers/passwords_controller_spec.rb, che consente di inserire più email dall'input ma senza alcun meccanismo di verifica email per confermare che si tratti dell'email dell'utente
Il server richiede solo authenticity_token (questo è un token nascosto per prevenire CSRF) dall'attaccante nell'invio del modulo per inoltrare la richiesta di reset passwd

→ Possiamo quindi inserire la nostra email per ricevere il reset token per il reset passwd dell'email della vittima, impossessandoci così dell'account utente
Catturando la richiesta di reset password otteniamo quanto segue:

authenticity_token utilizzato per prevenire CSRF; il nome dell'email dell'utente di cui si resetta la passwd è inserito nella variabile user[email]Aggiungiamo l'email dell'attaccante con il payload &user[email][]=victim_email&user[email][]=attacker_email e inviamo la richiesta:

→ Controllando l'email dell'attaccante, notiamo che il token di reset password è stato inviato e possiamo accedervi per modificare la passwd

