mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
5.2 KiB
5.2 KiB
Casa di Einherjar
Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi i tuoi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repository di Github.
Informazioni di Base
Codice
- 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)
Obiettivo
- L'obiettivo è allocare memoria in quasi ogni indirizzo specifico.
Requisiti
- Creare un chunk falso quando vogliamo allocare un chunk:
- Impostare i puntatori per puntare a se stessi per aggirare i controlli di integrità
- Off by one da un chunk all'altro per modificare il prev in uso
- Indicare nel
prev_size
del chunk abusato off-by-one 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.
Attacco
- Viene creato un chunk falso all'interno di un chunk controllato dall'attaccante puntando con
fd
ebk
al chunk originale per aggirare le protezioni - Vengono allocati altri 2 chunk (
B
eC
) - Sfruttando l'off by one nel chunk
B
, il bitprev in use
viene pulito e i datiprev_size
vengono sovrascritti con la differenza tra il luogo in cui è allocato il chunkC
e il chunk falsoA
generato prima - Questo
prev_size
e la dimensione nel chunk falsoA
devono essere uguali per aggirare i controlli. - Quindi, la tcache viene riempita
- Poi,
C
viene liberato in modo che si consolidi con il chunk falsoA
- Poi, viene creato un nuovo chunk
D
che inizierà nel chunk falsoA
e coprirà il chunkB
- La casa di Einherjar finisce qui
- Questo può essere continuato con un attacco al fast bin:
- Liberare
B
per aggiungerlo al fast bin - Il
fd
diB
viene sovrascritto facendolo puntare all'indirizzo di destinazione sfruttando il chunkD
(poiché contieneB
all'interno) - Poi, vengono fatti 2 malloc e il secondo sarà allocare l'indirizzo di destinazione
Riferimenti e altri esempi
- https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_einherjar/#2016-seccon-tinypad
- 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.
Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi i tuoi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repository di Github.