PIE
Last updated
Last updated
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Un binario compilato come PIE, o Position Independent Executable, significa che il programma può essere caricato in diverse posizioni di memoria ogni volta che viene eseguito, prevenendo indirizzi hardcoded.
Il trucco per sfruttare questi binari consiste nello sfruttare gli indirizzi relativi: gli offset tra le parti del programma rimangono gli stessi anche se le posizioni assolute cambiano. Per bypassare PIE, è necessario solo leakare un indirizzo, tipicamente dallo stack utilizzando vulnerabilità come attacchi di formato string. Una volta ottenuto un indirizzo, puoi calcolare altri in base ai loro offset fissi.
Un suggerimento utile per sfruttare i binari PIE è che il loro indirizzo 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 l'indirizzo base corretto è stato identificato.
Oppure puoi usare questo per il tuo exploit, se leak che un indirizzo si trova a 0x649e1024
sai che l'indirizzo base è 0x649e1000
e da lì puoi semplicemente calcolare gli offset di funzioni e posizioni.
Per bypassare PIE è necessario leakare un indirizzo del binario caricato, ci sono alcune opzioni per questo:
ASLR disabilitato: Se ASLR è disabilitato, un binario compilato con PIE verrà sempre caricato nello stesso indirizzo, quindi PIE sarà inutile poiché gli indirizzi degli oggetti saranno sempre nello stesso posto.
Essere forniti del leak (comune nelle sfide CTF facili, controlla questo esempio)
Brute-force i valori EBP ed EIP nello stack fino a leakare quelli corretti:
Usa una vulnerabilità di lettura arbitraria come format string per leakare un indirizzo del binario (ad es. dallo stack, come nella tecnica precedente) per ottenere la base del binario e usare offset da lì. Trova un esempio qui.
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)