Large Bin Attack
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)
Per ulteriori informazioni su cosa sia un large bin, controlla questa pagina:
Bins & Memory AllocationsÈ possibile trovare un ottimo esempio in how2heap - large bin attack.
Fondamentalmente qui puoi vedere come, nella più recente versione "corrente" di glibc (2.35), non viene controllato: P->bk_nextsize
permettendo di modificare un indirizzo arbitrario con il valore di un chunk di large bin se vengono soddisfatte determinate condizioni.
In quell'esempio puoi trovare le seguenti condizioni:
Viene allocato un chunk grande
Viene allocato un chunk grande più piccolo del primo ma nello stesso indice
Deve essere più piccolo quindi nel bin deve andare prima
(Viene creato un chunk per evitare la fusione con il chunk superiore)
Quindi, il primo chunk grande viene liberato e viene allocato un nuovo chunk più grande di esso -> Chunk1 va nel large bin
Quindi, il secondo chunk grande viene liberato
Ora, la vulnerabilità: L'attaccante può modificare chunk1->bk_nextsize
in [target-0x20]
Quindi, viene allocato un chunk più grande rispetto al chunk 2, quindi il chunk2 viene inserito nel large bin sovrascrivendo l'indirizzo chunk1->bk_nextsize->fd_nextsize
con l'indirizzo di chunk2
Ci sono altri scenari potenziali, l'importante è aggiungere al large bin un chunk che sia più piccolo di un attuale chunk X nel bin, quindi deve essere inserito proprio prima di esso nel bin, e dobbiamo essere in grado di modificare bk_nextsize
di X poiché è lì che verrà scritto l'indirizzo del chunk più piccolo.
Questo è il codice rilevante da malloc. Sono stati aggiunti commenti per capire meglio come è stata sovrascritta l'indirizzo:
Questo potrebbe essere utilizzato per sovrascrivere la variabile globale global_max_fast
di libc per poi sfruttare un attacco fast bin con chunk più grandi.
Puoi trovare un'altra ottima spiegazione di questo attacco in guyinatuxedo.
Attacco large bin nella stessa situazione come appare in how2heap.
La primitiva di scrittura è più complessa, perché global_max_fast
è inutile qui.
FSOP è necessario per completare lo sfruttamento.
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)