Large Bin Attack
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Για περισσότερες πληροφορίες σχετικά με το τι είναι ένα μεγάλο bin, ελέγξτε αυτή τη σελίδα:
Bins & Memory AllocationsΕίναι δυνατόν να βρείτε ένα εξαιρετικό παράδειγμα στο how2heap - large bin attack.
Βασικά, εδώ μπορείτε να δείτε πώς, στην τελευταία "τρέχουσα" έκδοση της glibc (2.35), δεν ελέγχεται: P->bk_nextsize
επιτρέποντας την τροποποίηση μιας αυθαίρετης διεύθυνσης με την τιμή ενός μεγάλου bin chunk αν πληρούνται ορισμένες προϋποθέσεις.
Σε αυτό το παράδειγμα μπορείτε να βρείτε τις εξής προϋποθέσεις:
Ένα μεγάλο chunk έχει κατανεμηθεί
Ένα μεγάλο chunk μικρότερο από το πρώτο αλλά στην ίδια θέση έχει κατανεμηθεί
Πρέπει να είναι μικρότερο ώστε να μπει πρώτο στο bin
(Δημιουργείται ένα chunk για να αποτραπεί η συγχώνευση με το κορυφαίο chunk)
Στη συνέχεια, το πρώτο μεγάλο chunk απελευθερώνεται και κατανεμηθεί ένα νέο chunk μεγαλύτερο από αυτό -> Chunk1 πηγαίνει στο μεγάλο bin
Στη συνέχεια, το δεύτερο μεγάλο chunk απελευθερώνεται
Τώρα, η ευπάθεια: Ο επιτιθέμενος μπορεί να τροποποιήσει chunk1->bk_nextsize
σε [target-0x20]
Στη συνέχεια, κατανεμήθηκε ένα μεγαλύτερο chunk από το chunk 2, έτσι το chunk2 εισάγεται στο μεγάλο bin αντικαθιστώντας τη διεύθυνση chunk1->bk_nextsize->fd_nextsize
με τη διεύθυνση του chunk2
Υπάρχουν άλλα πιθανά σενάρια, το θέμα είναι να προσθέσουμε στο μεγάλο bin ένα chunk που είναι μικρότερο από ένα τρέχον X chunk στο bin, έτσι πρέπει να εισαχθεί ακριβώς πριν από αυτό στο bin, και πρέπει να μπορούμε να τροποποιήσουμε το bk_nextsize
του X καθώς εκεί θα γραφτεί η διεύθυνση του μικρότερου chunk.
Αυτή είναι η σχετική κωδικοποίηση από το malloc. Έχουν προστεθεί σχόλια για να κατανοήσουμε καλύτερα πώς η διεύθυνση αντικαταστάθηκε:
Αυτό θα μπορούσε να χρησιμοποιηθεί για να επικαλύψει τη μεταβλητή global_max_fast
της libc για να εκμεταλλευτεί μια επίθεση fast bin με μεγαλύτερα κομμάτια.
Μπορείτε να βρείτε μια άλλη εξαιρετική εξήγηση αυτής της επίθεσης στο guyinatuxedo.
Επίθεση large bin στην ίδια κατάσταση όπως εμφανίζεται στο how2heap.
Η primitive write είναι πιο περίπλοκη, επειδή το global_max_fast
είναι άχρηστο εδώ.
Χρειάζεται FSOP για να ολοκληρωθεί η εκμετάλλευση.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)