House of Einherjar
Last updated
Last updated
Impara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)
Controlla l'esempio da https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
Oppure quello da https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (potresti dover riempire la tcache)
L'obiettivo è allocare memoria in quasi ogni indirizzo specifico.
Creare un chunk falso quando vogliamo allocare un chunk:
Impostare i puntatori per puntare a se stessi per aggirare i controlli di integrità
Overflow di un byte con un byte nullo da un chunk al successivo per modificare il flag PREV_INUSE
.
Indicare nel prev_size
del chunk abusato off-by-null la differenza tra se stesso e il chunk falso
Anche la dimensione del chunk falso deve essere impostata alla stessa dimensione per aggirare i controlli di integrità
Per costruire questi chunk, avrai bisogno di una fuga di memoria dell'heap.
Viene creato un chunk falso all'interno di un chunk controllato dall'attaccante puntando con fd
e bk
al chunk originale per aggirare le protezioni
Vengono allocati altri 2 chunk (B
e C
)
Sfruttando l'off-by-one nel chunk B
, il bit prev in use
viene pulito e i dati prev_size
vengono sovrascritti con la differenza tra il luogo in cui è allocato il chunk C
e il chunk falso A
generato prima
Questo prev_size
e la dimensione nel chunk falso A
devono essere uguali per aggirare i controlli.
Quindi, la tcache viene riempita
Poi, C
viene liberato in modo che si consolidi con il chunk falso A
Poi, viene creato un nuovo chunk D
che inizierà nel chunk falso A
e coprirà il chunk B
La casa di Einherjar finisce qui
Questo può essere continuato con un attacco al fast bin o con l'avvelenamento della Tcache:
Liberare B
per aggiungerlo al fast bin / Tcache
Il fd
di B
viene sovrascritto facendolo puntare all'indirizzo di destinazione sfruttando il chunk D
(poiché contiene B
all'interno)
Poi, vengono fatti 2 malloc e il secondo sarà l'allocazione dell'indirizzo di destinazione
Dopo aver liberato i puntatori, non vengono annullati, quindi è ancora possibile accedere ai loro dati. Pertanto, un chunk viene posizionato nel bin non ordinato e vengono rivelati i puntatori che contiene (fuga di libc) e quindi viene posizionato un nuovo heap nel bin non ordinato e viene rivelato un indirizzo di heap dal puntatore che ottiene.
Bug di overflow di byte nullo in strtok
.
Usa House of Einherjar per ottenere una situazione di sovrapposizione di chunk e finisci con l'avvelenamento della Tcache per ottenere un primitivo di scrittura arbitraria.
Impara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)