11211 - Pentesting Memcache
Πληροφορίες πρωτοκόλλου
Από την wikipedia:
Το Memcached (προφορά: mem-cashed, mem-cash-dee) είναι ένα γενικού σκοπού κατανεμημένο σύστημα μνήμης κρυφής. Συχνά χρησιμοποιείται για την επιτάχυνση δυναμικών ιστότοπων που χρησιμοποιούν βάσεις δεδομένων, κρατώντας δεδομένα και αντικείμενα στη RAM για να μειώσει τον αριθμό των φορών που πρέπει να διαβαστεί μια εξωτερική πηγή δεδομένων (όπως μια βάση δεδομένων ή μια API).
Αν και το Memcached υποστηρίζει το SASL, οι περισσότερες περιπτώσεις είναι εκτεθειμένες χωρίς πιστοποίηση.
Προεπιλεγμένη θύρα: 11211
Απαρίθμηση
Χειροκίνητη
Για να αποκτήσετε όλες τις πληροφορίες που έχουν αποθηκευτεί μέσα σε ένα περιβάλλον memcache, πρέπει να:
Βρείτε τα slabs με ενεργά αντικείμενα
Αποκτήστε τα ονόματα κλειδιών των εντοπισμένων slabs
Αποκτήστε τα αποθηκευμένα δεδομένα με την ανάκτηση των ονομάτων κλειδιών
Θυμηθείτε ότι αυτή η υπηρεσία είναι απλά ένα cache, οπότε τα δεδομένα μπορεί να εμφανίζονται και να εξαφανίζονται.
Εγχειρίδιο2
Αυτό το εγχειρίδιο περιέχει πληροφορίες σχετικά με την εκμετάλλευση του Memcache σε μια υπηρεσία δικτύου.
Εισαγωγή
Ο Memcache είναι ένας διανεμημένος μηχανισμός αποθήκευσης και ανάκτησης δεδομένων που χρησιμοποιείται συχνά σε εφαρμογές δικτύου. Αυτός ο μηχανισμός μπορεί να εκμεταλλευτείται για να προκαλέσει διάφορες επιθέσεις, όπως η αποκάλυψη ευαίσθητων πληροφοριών και η εκτέλεση κακόβουλου κώδικα.
Εκμετάλλευση του Memcache
Για να εκμεταλλευτείτε το Memcache, μπορείτε να χρησιμοποιήσετε τις παρακάτω τεχνικές:
Αποκάλυψη ευαίσθητων πληροφοριών: Μπορείτε να ανακτήσετε ευαίσθητες πληροφορίες, όπως κλειδιά πρόσβασης και διαπιστευτήρια, από το Memcache.
Εκτέλεση κακόβουλου κώδικα: Μπορείτε να εκτελέσετε κακόβουλο κώδικα στο Memcache, προκαλώντας ζημιά στην εφαρμογή ή αποκτώντας απομακρυσμένη πρόσβαση στο σύστημα.
Προστασία από επιθέσεις Memcache
Για να προστατευτείτε από επιθέσεις Memcache, μπορείτε να λάβετε τα παρακάτω μέτρα:
Απενεργοποίηση του Memcache: Αν δεν χρησιμοποιείτε το Memcache, απενεργοποιήστε το για να μειώσετε τον κίνδυνο εκμετάλλευσης.
Περιορισμός της πρόσβασης: Περιορίστε την πρόσβαση στο Memcache μόνο σε αξιόπιστους χρήστες και εφαρμογές.
Ενημέρωση του Memcache: Βεβαιωθείτε ότι χρησιμοποιείτε την πιο πρόσφατη έκδοση του Memcache, η οποία περιλαμβάνει βελτιώσεις ασφαλείας.
Συμπεράσματα
Το Memcache μπορεί να είναι ένα ευπαθές σημείο στο δίκτυό σας, το οποίο μπορεί να εκμεταλλευτείται από κακόβουλους επιτιθέμενους. Είναι σημαντικό να λάβετε τα απαραίτητα μέτρα προστασίας για να αποτρέψετε τις επιθέσεις και να διατηρήσετε την ασφάλεια του δικτύου σας.
Αυτόματο
Το Memcached είναι ένα αποθηκευτικό σύστημα κλειδιού-τιμής που χρησιμοποιείται συχνά για την επιτάχυνση των εφαρμογών δικτύου. Ωστόσο, αυτό το σύστημα μπορεί να εκτεθεί σε επιθέσεις αν δεν ρυθμιστεί σωστά. Αυτό το κεφάλαιο παρέχει πληροφορίες σχετικά με το πώς να εκμεταλλευτείτε το Memcached και να αποκτήσετε πρόσβαση σε ευαίσθητα δεδομένα.
Αυτόματη Εκμετάλλευση
Η αυτόματη εκμετάλλευση του Memcached περιλαμβάνει την εκμετάλλευση ευπάθειών και αδυναμιών στην υλοποίηση του συστήματος. Οι επιθέσεις μπορούν να περιλαμβάνουν την ανάκτηση ευαίσθητων δεδομένων, την εκτέλεση κακόβουλου κώδικα ή την πρόκληση αποκλεισμού υπηρεσίας.
Εκμετάλλευση Ευπάθειας Memcached
Οι ευπάθειες του Memcached μπορούν να εκμεταλλευτούν για να αποκτηθεί πρόσβαση σε ευαίσθητα δεδομένα ή για να προκληθεί αποκλεισμός υπηρεσίας. Οι ευπάθειες περιλαμβάνουν την ανοικτή πρόσβαση σε μη ασφαλείς θύρες, την απουσία αυθεντικοποίησης ή την αδυναμία επεξεργασίας ορισμένων εισερχόμενων δεδομένων.
Εκμετάλλευση Αποκλεισμού Υπηρεσίας
Ο αποκλεισμός υπηρεσίας στο Memcached μπορεί να προκληθεί με την αποστολή μεγάλων αιτημάτων που υπερβαίνουν την χωρητικότητα του συστήματος ή με την αποστολή αιτημάτων με κακόβουλο περιεχόμενο που προκαλούν σφάλματα στο Memcached. Αυτό μπορεί να οδηγήσει σε αποκλεισμό της υπηρεσίας και να προκαλέσει διακοπή της λειτουργίας του συστήματος.
Αποθήκευση Κλειδιών Memcache
Στον κόσμο του memcache, ένα πρωτόκολλο που βοηθά στην οργάνωση δεδομένων με βάση τις slabs, υπάρχουν συγκεκριμένες εντολές για την επιθεώρηση των αποθηκευμένων δεδομένων, αν και με σημαντικούς περιορισμούς:
Τα κλειδιά μπορούν να αποθηκευτούν μόνο ανά κατηγορία slab, ομαδοποιώντας τα κλειδιά με παρόμοιο μέγεθος περιεχομένου.
Υπάρχει ένα όριο ενός σελιδοδείκτη ανά κατηγορία slab, που αντιστοιχεί σε 1MB δεδομένων.
Αυτή η λειτουργία είναι ανεπίσημη και μπορεί να διακοπεί ανά πάσα στιγμή, όπως συζητείται στα φόρουμ της κοινότητας.
Ο περιορισμός της δυνατότητας αποθήκευσης μόνο 1MB από δυνητικά gigabytes δεδομένων είναι ιδιαίτερα σημαντικός. Ωστόσο, αυτή η λειτουργικότητα μπορεί ακόμα να προσφέρει πληροφορίες για τα πρότυπα χρήσης των κλειδιών, ανάλογα με τις συγκεκριμένες ανάγκες. Για όσους δεν ενδιαφέρονται τόσο για τη μηχανική, μια επίσκεψη στην ενότητα εργαλείων αποκαλύπτει εργαλεία για περιεκτική αποθήκευση. Εναλλακτικά, η διαδικασία χρήσης του telnet για άμεση αλληλεπίδραση με τις εγκαταστάσεις memcached περιγράφεται παρακάτω.
Πώς λειτουργεί
Η οργάνωση της μνήμης του memcache είναι καθοριστική. Η εκκίνηση του memcache με την επιλογή "-vv" αποκαλύπτει τις κατηγορίες slab που δημιουργεί, όπως φαίνεται παρακάτω:
Για να εμφανίσετε όλα τα υπάρχοντα slabs, χρησιμοποιείται η παρακάτω εντολή:
Η προσθήκη ενός μόνο κλειδιού στο memcached 1.4.13 απεικονίζει τον τρόπο με τον οποίο γίνεται η γέμιση και διαχείριση των κλάσεων slab. Για παράδειγμα:
Η εκτέλεση της εντολής "stats slabs" μετά την προσθήκη του κλειδιού παρέχει λεπτομερείς στατιστικές σχετικά με τη χρήση των slab:
Αυτή η έξοδος αποκαλύπτει τους ενεργούς τύπους slab, τα χρησιμοποιούμενα τμήματα και τα στατιστικά λειτουργίας, προσφέροντας εισαγωγές στην αποδοτικότητα των λειτουργιών ανάγνωσης και εγγραφής.
Ένα άλλο χρήσιμο παράδειγμα εντολής, "stats items", παρέχει δεδομένα για αποβολές, περιορισμούς μνήμης και κύκλους ζωής αντικειμένων:
Αυτές οι στατιστικές επιτρέπουν εκπαιδευμένες υποθέσεις σχετικά με τη συμπεριφορά της κρυφής μνήμης της εφαρμογής, συμπεριλαμβανομένης της αποδοτικότητας της κρυφής μνήμης για διάφορους μεγέθη περιεχομένου, της διάθεσης μνήμης και της χωρητικότητας για την αποθήκευση μεγάλων αντικειμένων.
Απορρόφηση Κλειδιών
Για εκδόσεις προηγούμενες της 1.4.31, τα κλειδιά απορροφώνται ανά κατηγορία slab χρησιμοποιώντας:
Για παράδειγμα, για να αδειάσετε ένα κλειδί στην κατηγορία #1:
Αυτή η μέθοδος επαναλαμβάνει τις κλάσεις slab, εξάγοντας και προαιρετικά αδειάζοντας τις τιμές των κλειδιών.
ΕΞΑΓΩΓΗ ΚΛΕΙΔΙΩΝ MEMCACHE (Έκδοση 1.4.31+)
Με την έκδοση memcache 1.4.31 και νεότερες, εισάγεται μια νέα, ασφαλέστερη μέθοδος για την εξαγωγή κλειδιών σε ένα περιβάλλον παραγωγής, χρησιμοποιώντας τη μη-μπλοκάριστη λειτουργία, όπως περιγράφεται στις σημειώσεις έκδοσης. Αυτή η προσέγγιση παράγει εκτεταμένη έξοδο, γι' αυτό και συνιστάται η χρήση της εντολής 'nc' για αποδοτικότητα. Παραδείγματα περιλαμβάνουν:
ΕΡΓΑΛΕΙΑ ΑΠΟΚΤΗΣΗΣ ΔΕΔΟΜΕΝΩΝ
Πίνακας από εδώ.
Γλώσσες Προγραμματισμού | Εργαλεία | Λειτουργικότητα | ||
---|---|---|---|---|
PHP | Εκτυπώνει τα ονόματα των κλειδιών. | |||
Perl | Εκτυπώνει τα κλειδιά και τις τιμές. | |||
Ruby | Εκτυπώνει τα ονόματα των κλειδιών. | |||
Perl | Εργαλείο στο CPAN module | ached/) | ||
PHP | Παρακολούθηση του Memcache με γραφικό περιβάλλον που επιτρέπει επίσης την απόκτηση των κλειδιών. | |||
libmemcached | Προσοχή! Παγώνει τη διεργασία memcached σας!!! Να είστε προσεκτικοί κατά τη χρήση του σε παραγωγικό περιβάλλον. Με αυτό μπορείτε να παρακάμψετε τον περιορισμό των 1MB και να αποκτήσετε όλα τα κλειδιά. |
Αντιμετώπιση προβλημάτων
Όριο Δεδομένων 1MB
Σημειώστε ότι πριν από το memcached 1.4 δεν μπορείτε να αποθηκεύσετε αντικείμενα μεγαλύτερα από 1MB λόγω του προεπιλεγμένου μέγιστου μεγέθους slab.
Ποτέ μην ορίζετε χρονικό όριο > 30 ημέρες!
Εάν προσπαθήσετε να "ορίσετε" ή "προσθέσετε" ένα κλειδί με ένα χρονικό όριο μεγαλύτερο από το μέγιστο που επιτρέπεται, ενδέχεται να μην λάβετε αυτό που αναμένετε, καθώς το memcached θεωρεί την τιμή ως ένα χρονικό στιγμιότυπο Unix. Επίσης, εάν το χρονικό στιγμιότυπο είναι στο παρελθόν, δεν θα γίνει τίποτα. Η εντολή σας θα αποτύχει αθόρυβα.
Έτσι, εάν θέλετε να χρησιμοποιήσετε τη μέγιστη διάρκεια ζωής, καθορίστε 2592000. Παράδειγμα:
Εξαφάνιση Κλειδιών από Υπερχείλιση
Παρόλο που η τεκμηρίωση αναφέρει κάτι για την επανατοποθέτηση ενός τιμής που υπερχειλίζει τα 64bit χρησιμοποιώντας την εντολή "incr", η τιμή αυτή εξαφανίζεται. Πρέπει να δημιουργηθεί ξανά χρησιμοποιώντας τις εντολές "add" ή "set".
Αντιγραφή
Το memcached από μόνο του δεν υποστηρίζει αντιγραφή. Εάν το χρειάζεστε πραγματικά, πρέπει να χρησιμοποιήσετε λύσεις από τρίτους:
repcached: Πολυ-κύρια ασύγχρονη αντιγραφή (σύνολο επιδιορθώσεων memcached 1.2)
Couchbase memcached interface: Χρησιμοποιήστε το CouchBase ως αντικατάσταση του memcached
yrmcds: Συμβατή με το memcached αποθήκη κλειδιών τύπου Master-Slave
twemproxy (επίσης γνωστό ως nutcracker): διαμεσολαβητής με υποστήριξη memcached
Συντομογραφίες Εντολών
pageMemcache CommandsShodan
port:11211 "STAT pid"
"STAT pid"
Αναφορές
Last updated