
analisi del buffer overflow di sudo che interessa le versioni di sudo <1.8.26 e come usare GCC per compilare exploit pubblicamente disponibili
Analisi della CVE-2019-18634 (https://www.exploit-db.com/exploits/47995)
Sudo 1.8.25p - 'pwfeedback' Buffer Overflow (PoC)
L'opzione pwfeedback di Sudo può essere utilizzata per fornire un feedback visivo quando l'utente inserisce la propria password. A ogni pressione di un tasto viene stampato un asterisco. Questa opzione è stata aggiunta in risposta alla confusione degli utenti su come il prompt standard Password: disabiliti l'eco dei tasti premuti. Sebbene pwfeedback non sia abilitato per impostazione predefinita nella versione upstream di sudo, alcuni sistemi, come Linux Mint e Elementary OS, lo abilitano nei loro file sudoers predefiniti.
Analisi
Writeup di tryhackme sul buffer overflow di Sudo
Analisi della CVE-2019-18634
Prima ci colleghiamo all'istanza tryhackme via SSH
La vulnerabilità si verifica perché la funzione pwfeedback è vulnerabile a un heap buffer overflow; per sfruttare questa vulnerabilità, prima verifichiamo che la macchina abbia la versione vulnerabile di sudo (sudo <1.8.26) eseguendo il comando sudo –version
Analisi della CVE-2019-18634
Prima ci colleghiamo all'istanza tryhackme via SSH
La vulnerabilità si verifica perché la funzione pwfeedback è vulnerabile a un heap buffer overflow; per sfruttare questa vulnerabilità, prima verifichiamo che la macchina abbia la versione vulnerabile di sudo (sudo <1.8.26) eseguendo il comando sudo –version

Dopo aver confermato che la macchina ha una versione vulnerabile di sudo, verifichiamo ora che la funzione pwfeedback sia presente; questo può essere fatto in 2 modi: invocando sudo e digitando qualsiasi cosa nel prompt della password, che dovrebbe mostrare “*” mentre si inseriscono i caratteri della password, e il secondo modo, più tecnico, è usare il comando sudo -l, ma questo richiederà anche che l'utente abbia i permessi appropriati per visualizzare informazioni su sudo o per poter concatenare il file sudoers.

Ora confermeremo che un buffer overflow è possibile utilizzando il test case presente su exploit-db https://www.exploit-db.com/exploits/47995
perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id ^^La riga di codice sopra funziona così:
Aggiunge 100 caratteri A e li inoltra tramite pipe al comando sudo, che finiranno poi nel buffer heap di pwfeedback.

Sudo genererà quindi un segmentation fault poiché non sa come continuare il processo sudo
Questo accade perché quando un buffer heap statico viene inondato, inizia a inondare i registri della CPU e l'instruction pointer, che mantiene il flusso dell'istruzione successiva.
Possiamo eseguire l'exploit, che causerà un buffer overflow e ci darà accesso root al sistema https://www.exploit-db.com/exploits/47995
