Return-to-libc Attack mystery

4

Sto studiando l'attacco Return-to-libc e capisco il concetto. Ma una cosa non ha ancora senso. Per effettuare l'attacco ho bisogno dell'indirizzo di memoria di system () e "/ bin / sh" , che è diverso su ogni sistema . E tutti gli esempi che ho visto sull'argomento riguardano la creazione di un codice C fittizio e il debugging con gdb per trovare questi indirizzi su il loro sistema host.

Bene, come posso ottenere questi indirizzi di memoria sul sistema target se non ho ancora accesso alla shell? Tutto quello che ho è forse un indirizzo EIP che ho scoperto con un fuzzing e uno stack non eseguibile che non posso eseguire su di esso?

    
posta Spring 06.01.2018 - 21:12
fonte

1 risposta

5

Questo dipende un po 'dalle attenuazioni impiegate dall'host. Se non si dispone di ALSR sul target (raro nei sistemi moderni) e si conosce il sistema operativo in uso (ad esempio, Ubuntu 16.04), è possibile impostare un sistema con le stesse versioni e individuare gli indirizzi in questo modo. Se osservi molti exploit di Metasploit, hanno una tabella di versioni TARGET che puoi specificare, il che di solito comporta l'uso di diversi indirizzi di destinazione.

In una configurazione più moderna (utilizzando ASLR), è necessario:

  1. Trova un modulo caricato a un indirizzo fisso. Questo era abbastanza comune, ma è diventato più raro con maggiore consapevolezza della sicurezza.
  2. Trova un modo per filtrare alcuni indirizzi in modo da poter trovare dove si trovano libc (o altre librerie utili), quindi aggiungere / sottrarre un po 'di offset per trovare gli indirizzi necessari per il tuo attacco.
risposta data 07.01.2018 - 02:26
fonte

Leggi altre domande sui tag