Proseguiamo con un altro esercizio della serie Protostar. Questa volta andremo ad analizzare una vulnerabilità presente nell’heap quando un programma continua ad utilizzare un puntatore dopo che è stato liberato (con l’istruzione free), Use-After-Free appunto.

Il puntatore originale alla memoria liberata viene utilizzato di nuovo e punta ad un punto all’interno della nuova allocazione. Man mano che i dati vengono modificati, questo corrompe la memoria e può portare ad un comportamento indefinito nel processo e, in condizioni ideali (per noi), ad un’esecuzione di comandi.

Heap 2

Heap 2

Questo programma permette diversi comandi:

  • Auth: a riga 24, viene allocata una quantità di memoria di lunghezza auth e, se l’input è <31 viene l’input viene assegnato alla struct auth.name
  • Reset: a riga 31, che esegue la free.
  • Service: a riga 34, che copia la stringa inserita in input
  • Login: a riga 37, utilizzato per controllare se la variabile auth.auth è assegnata e di conseguenza l’utente è loggato. Ed è proprio questo che dovremo stampare per superare la sfida

Facciamo un test rapido con ltrace

Esecuzione con ltrace

Come si può notare, una volta che viene inserito il comando reset, auth sarà sempre sovrascritto sullo stesso indirizzo, e potremo sfruttare questo problema per cercare di sovrascrivere auth.auth e superare il livello.

Passando su gdb ed eseguendolo con lo stesso payload

Struttura di auth

In questo caso service non è ancora stato allocato. Proviamo ad inserire service CC

Service allocato

Ed ecco che, poiché auth ora è allocato sempre alla stessa posizione, possiamo calcolare l’offset tra service e auth.auth (che è la variabile che dovremo sovrascrivere).

osboxes@osboxes:~/Desktop/Protostar$   echo $  ((0x804b848 - 0x804b838)) 16

Dovendo essere almeno 16 caratteri, ne andiamo ad inserire 17

Inserimento di 17 caratteri in service

E tornando ad analizzare lo heap

Auth.auth è stata sovrascritta

Vediamo che service ha sovrascritto auth.auth, che adesso contiene le nostre D. E infatti, se proviamo ad effettuare il login

Livello superato!

La stessa modalità la possiamo eseguire al di fuori di GDB, con un payload molto semplice.

Livello superato!

Conclusioni

La vulnerabilità Use-After-Free è una delle più frequenti, anche nei sistemi e programmi moderni. Come abbiamo potuto notare non è semplice da identificare, ma proprio per questo motivo rimane la più comune e pericolosa della categoria dello heap. Per chi volesse comprendere meglio, consiglio questo post di SensePost, che include anche due esercizi aggiuntivi.

Hits: 601

Facebooktwitterredditlinkedintumblrmail

L’articolo Protostar – Heap Buffer Overflow – Heap 2 proviene da HackTips.

HackTips


Stai cercando prodotti per l’hacking, la sicurezza informatica e il penetration testing? Hai bisogno di bonificare il tuo smartphone, il tuo pc o il tuo sito da virus e malware? Devi rintracciare una persona o recuperare delle informazioni urgenti? Devi riprendere possesso di un account, una mail o di una password che ti hanno sottratto? Vuoi acquistare device già configurati per sperimentare tutte le tecniche di hacking in modo facile e veloce? Hai esigenze particolari in ambito software o hardware? Possiamo aiutarti!

Contattaci subito per avere un aiuto immediato : dettagliaci tramite mail o Whatsapp che tipo di supporto ti occorre e ti invieremo un riscontro immediato!

Compila e invia il modulo qui sotto per inviarci subito una richiesta di supporto

Scrivi il tuo indirizzo email qui

Scrivi qui come possiamo aiutarti – ti supportiamo immediatamente per ogni tua esigenza!