House of Rabbit
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Requirements
Δυνατότητα τροποποίησης του δείκτη fd του fast bin ή του μεγέθους: Αυτό σημαίνει ότι μπορείτε να αλλάξετε τον προ Forward δείκτη ενός chunk στο fastbin ή το μέγεθός του.
Δυνατότητα ενεργοποίησης του
malloc_consolidate
: Αυτό μπορεί να γίνει είτε με την εκχώρηση ενός μεγάλου chunk είτε με τη συγχώνευση του κορυφαίου chunk, που αναγκάζει τη heap να συγχωνεύσει τα chunks.
Goals
Δημιουργία επικαλυπτόμενων chunks: Για να έχει ένα chunk επικαλυπτόμενο με ένα άλλο, επιτρέποντας περαιτέρω χειρισμούς στη heap.
Κατασκευή ψεύτικων chunks: Για να ξεγελάσετε τον αλγόριθμο εκχώρησης να θεωρεί ένα ψεύτικο chunk ως νόμιμο chunk κατά τη διάρκεια των λειτουργιών της heap.
Steps of the attack
POC 1: Modify the size of a fast bin chunk
Objective: Δημιουργία ενός επικαλυπτόμενου chunk τροποποιώντας το μέγεθος ενός fastbin chunk.
Step 1: Allocate Chunks
Αναθέτουμε δύο κομμάτια των 0x40 byte το καθένα. Αυτά τα κομμάτια θα τοποθετηθούν στη λίστα γρήγορων κομματιών μόλις απελευθερωθούν.
Βήμα 2: Απελευθέρωση Κομματιών
Απελευθερώνουμε και τα δύο κομμάτια, προσθέτοντάς τα στη λίστα fastbin.
Βήμα 3: Τροποποίηση Μεγέθους Κομματιού
Αλλάζουμε τα μεταδεδομένα μεγέθους του chunk1
σε 0xa1. Αυτό είναι ένα κρίσιμο βήμα για να ξεγελάσουμε τον αλγόριθμο κατά τη διάρκεια της ενοποίησης.
Βήμα 4: Ενεργοποιήστε το
malloc_consolidate
Allocating a large chunk triggers the malloc_consolidate
function, merging small chunks in the fast bin. The manipulated size of chunk1
causes it to overlap with chunk2
.
After consolidation, chunk1
overlaps with chunk2
, allowing for further exploitation.
POC 2: Modify the fd
pointer
fd
pointerObjective: Create a fake chunk by manipulating the fast bin fd
pointer.
Step 1: Allocate Chunks
Εξήγηση: Δεσμεύουμε δύο κομμάτια, ένα μικρότερο και ένα μεγαλύτερο, για να ρυθμίσουμε τη στοίβα για το ψεύτικο κομμάτι.
Βήμα 2: Δημιουργία ψεύτικου κομματιού
Γράφουμε ψευδές μεταδεδομένο chunk στο chunk2
για να προσομοιώσουμε μικρότερα chunks.
Βήμα 3: Ελευθερώστε το
chunk1
Εξήγηση: Απελευθερώνουμε το chunk1
, προσθέτοντάς το στη λίστα fastbin.
Βήμα 4: Τροποποιήστε το
fd
τουchunk1
Εξήγηση: Αλλάζουμε τον δείκτη προς τα εμπρός (fd
) του chunk1
ώστε να δείχνει στο ψεύτικο chunk μας μέσα στο chunk2
.
Βήμα 5: Ενεργοποιήστε το
malloc_consolidate
Η εκχώρηση ενός μεγάλου κομματιού ξαναενεργοποιεί το malloc_consolidate
, το οποίο επεξεργάζεται το ψεύτικο κομμάτι.
Το ψεύτικο κομμάτι γίνεται μέρος της λίστας fastbin, καθιστώντας το ένα νόμιμο κομμάτι για περαιτέρω εκμετάλλευση.
Περίληψη
Η τεχνική House of Rabbit περιλαμβάνει είτε την τροποποίηση του μεγέθους ενός κομματιού fast bin για τη δημιουργία επικαλυπτόμενων κομματιών είτε την παραποίηση του δείκτη fd
για τη δημιουργία ψεύτικων κομματιών. Αυτό επιτρέπει στους επιτιθέμενους να πλαστογραφήσουν νόμιμα κομμάτια στη heap, διευκολύνοντας διάφορες μορφές εκμετάλλευσης. Η κατανόηση και η πρακτική αυτών των βημάτων θα ενισχύσουν τις δεξιότητές σας στην εκμετάλλευση heap.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Last updated