PIE

Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Informazioni di Base

Un binario compilato come PIE, o Eseguibile a Indirizzamento Indipendente dalla Posizione, significa che il programma può caricarsi in diverse posizioni di memoria ogni volta che viene eseguito, impedendo gli indirizzi codificati.

Il trucco per sfruttare questi binari sta nell'sfruttare gli indirizzi relativi—gli offset tra le parti del programma rimangono gli stessi anche se le posizioni assolute cambiano. Per bypassare PIE, è sufficiente ottenere un indirizzo in modo non sicuro, tipicamente dal stack utilizzando vulnerabilità come gli attacchi di stringhe di formato. Una volta ottenuto un indirizzo, è possibile calcolare gli altri tramite i loro offset fissi.

Un suggerimento utile nel sfruttare i binari PIE è che il loro indirizzo di base termina tipicamente in 000 a causa delle pagine di memoria che sono le unità di randomizzazione, dimensionate a 0x1000 byte. Questo allineamento può essere un controllo critico se un exploit non funziona come previsto, indicando se è stato identificato l'indirizzo di base corretto. Oppure puoi utilizzarlo per il tuo exploit, se scopri che un indirizzo si trova a 0x649e1024 sai che l'indirizzo di base è 0x649e1000 e da lì puoi semplicemente calcolare gli offset delle funzioni e delle posizioni.

Bypass

Per bypassare PIE è necessario ottenere un qualche indirizzo del binario caricato, ci sono alcune opzioni per farlo:

  • ASLR disabilitato: Se ASLR è disabilitato un binario compilato con PIE verrà sempre caricato nella stessa posizione, quindi PIE sarà inutile poiché gli indirizzi degli oggetti saranno sempre nello stesso posto.

  • Ottenere il leak (comune nelle sfide CTF facili, controlla questo esempio)

  • Forzare i valori di EBP ed EIP nello stack fino a ottenere quelli corretti:

  • Utilizzare una vulnerabilità di lettura arbitraria come le stringhe di formato per ottenere un indirizzo del binario (ad esempio dallo stack, come nella tecnica precedente) per ottenere la base del binario e utilizzare gli offset da lì. Trova un esempio qui.

Riferimenti

Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Last updated