What is the connection between an exploit to the point of privelage escalation and opening a reverse shell?
In realtà non esiste una connessione diretta. Un exploit si avvale di una vulnerabilità nel software. Per gli exploit a cui ti stai riferendo, stai cercando di fornire il codice che hai scritto per ottenere l'accesso al sistema di destinazione. Questo potrebbe aprirti una shell inversa in modo che tu possa eseguire i comandi.
L'escalation dei tuoi privilegi non è direttamente correlata perché l'exploit viene eseguito con le autorizzazioni del software che stai attaccando. Se il software viene eseguito come root, si ottiene root quando lo si sfrutta. Se il software funziona come joe, ottieni le autorizzazioni di joe. L'escalation successiva è un processo separato che potrebbe richiedere l'esecuzione di più exploit.
And for the reverse shell, is that an encrypted socket back to some system so that the C&C packets can be sent?
Dipende da cosa vuoi correre. Cose come netcat non sono crittografate di default, mentre sbd, o backdoor sicure, lo sono. Dipende solo da te e dal codice che consegna al target.
I'm still missing what actually takes control on the remote system to handle this?
Quando utilizzi il software nello scenario di cui stiamo parlando, stai reindirizzando il flusso del programma per eseguire il tuo codice. Quando lo fa, esegue qualunque codice tu gli dica di fare, come se tu avessi scritto tu stesso il software.
Can a full program be injected in the overflow or in pieces and somehow reassembled and start running?
Questo dipende dalla vulnerabilità. In un buffer overflow, potresti avere una dimensione limitata per consegnare il tuo codice. In tal caso, dovrai fare ciò che viene chiamato staging. Staging sta offrendo un programma molto più piccolo che poi scarica più codice da te fino a raggiungere il programma completo che desideri venga eseguito.