mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-03 09:59:40 +00:00
7 KiB
7 KiB
Off by one overflow
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα τηλεγραφήματος ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα αποθετήρια του HackTricks και του HackTricks Cloud.
Βασικές Πληροφορίες
Έχοντας μόνο πρόσβαση σε ένα 1B υπερχείλιση επιτρέπει σε έναν εισβολέα να τροποποιήσει τις προηγούμενες πληροφορίες μεταδεδομένων μεγέθους, επιτρέποντας να παραποιήσει ποια κομμάτια πραγματικά απελευθερώνονται, δημιουργώντας τελικά ένα κομμάτι που περιέχει ένα άλλο νόμιμο κομμάτι.
Παράδειγμα Κώδικα:
- https://github.com/DhavalKapil/heap-exploitation/blob/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/shrinking_free_chunks.c
- Αυτή η επίθεση δεν λειτουργεί πλέον λόγω της χρήσης των Tcaches.
- Επιπλέον, αν προσπαθήσετε να το καταχρηστικό χρησιμοποιώντας μεγαλύτερα κομμάτια (έτσι ώστε να μην εμπλέκονται οι tcaches), θα λάβετε το σφάλμα:
malloc(): invalid next size (unsorted)
Στόχος
- Κάντε ένα κομμάτι να περιέχεται μέσα σε ένα άλλο κομμάτι, έτσι ώστε η εγγραφή πρόσβασης σε αυτό το δεύτερο κομμάτι να επιτρέπει την αντικατάσταση του περιεχόμενου του πρώτου.
Απαιτήσεις
- Υπερχείλιση ενός byte για να τροποποιήσετε τις προηγούμενες πληροφορίες μεταδεδομένων μεγέθους
Επίθεση
- Κρατούνται 3 κομμάτια μνήμης (α, β, γ) το ένα μετά το άλλο. Στη συνέχεια απελευθερώνεται το μεσαίο. Το πρώτο περιέχει μια ευπάθεια υπερχείλισης ενός byte και ο εισβολέας την καταχράται με ένα 0x00 (αν το προηγούμενο byte ήταν 0x10 θα κάνει το μεσαίο κομμάτι να υποδεικνύει ότι είναι 0x10 μικρότερο από ό,τι πραγματικά είναι).
- Στη συνέχεια, δεσμεύονται 2 μικρότερα κομμάτια μέσα στο μεσαίο απελευθερωμένο κομμάτι (β), ωστόσο, καθώς το
β + μέγεθος β
δεν ενημερώνει ποτέ το κομμάτι γ (γιατί η δεικτοδότηση είναι μικρότερη από ό,τι θα έπρεπε). - Στη συνέχεια, απελευθερώνονται τα b1 και c. Καθώς το
γ - μέγεθος προηγούμενου γ
εξακολουθεί να δείχνει στο b (τώρα b1), και τα δύο συγχωνεύονται σε ένα κομμάτι. Ωστόσο, το b2 παραμένει μέσα μεταξύ b1 και γ. - Τέλος, γίνεται μια νέα κλήση malloc ανακτώντας αυτήν την περιοχή μνήμης που πρόκειται να περιέχει το b2, επιτρέποντας στον κάτοχο του νέου malloc να ελέγχει το περιεχόμενο του b2.
Αυτή η εικόνα εξηγεί τέλεια την επίθεση:
Αναφορές
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα τηλεγραφήματος ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα αποθετήρια του HackTricks και του HackTricks Cloud.