MySQL File priv to SSRF/RCE

Support HackTricks

Αυτό είναι μια περίληψη των τεχνικών MySQL/MariaDB/Percona από https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.

Server-Side Request Forgery (SSRF) μέσω SQL Functions

Στην εξερεύνηση της SQL Out of Band εξαγωγής δεδομένων, η συνάρτηση LOAD_FILE() χρησιμοποιείται συνήθως για να ξεκινήσει δικτυακά αιτήματα. Αυτή η συνάρτηση, ωστόσο, περιορίζεται από το λειτουργικό σύστημα στο οποίο λειτουργεί και τις ρυθμίσεις εκκίνησης της βάσης δεδομένων.

Η παγκόσμια μεταβλητή secure_file_priv, αν δεν έχει οριστεί, προεπιλέγεται σε /var/lib/mysql-files/, περιορίζοντας την πρόσβαση σε αρχεία σε αυτόν τον κατάλογο εκτός αν οριστεί σε κενή συμβολοσειρά (""). Αυτή η προσαρμογή απαιτεί τροποποιήσεις στο αρχείο ρυθμίσεων της βάσης δεδομένων ή στις παραμέτρους εκκίνησης.

Δεδομένου ότι το secure_file_priv είναι απενεργοποιημένο (""), και υποθέτοντας ότι έχουν παραχωρηθεί οι απαραίτητες άδειες αρχείων και file_priv, τα αρχεία εκτός του καθορισμένου καταλόγου μπορούν να διαβαστούν. Ωστόσο, η ικανότητα αυτών των συναρτήσεων να κάνουν δικτυακές κλήσεις εξαρτάται σε μεγάλο βαθμό από το λειτουργικό σύστημα. Σε συστήματα Windows, οι δικτυακές κλήσεις σε UNC διαδρομές είναι εφικτές λόγω της κατανόησης των συμβάσεων ονοματοδοσίας UNC από το λειτουργικό σύστημα, ενδεχομένως οδηγώντας στην εξαγωγή των NTLMv2 hashes.

Αυτή η μέθοδος SSRF περιορίζεται στην TCP θύρα 445 και δεν επιτρέπει την τροποποίηση του αριθμού θύρας, αν και μπορεί να χρησιμοποιηθεί για πρόσβαση σε κοινές διανομές με πλήρεις άδειες ανάγνωσης και, όπως έχει αποδειχθεί σε προηγούμενες έρευνες, για κλοπή hashes για περαιτέρω εκμετάλλευση.

Remote Code Execution (RCE) μέσω User Defined Functions (UDF)

Οι βάσεις δεδομένων MySQL προσφέρουν τη χρήση User Defined Functions (UDF) από εξωτερικά αρχεία βιβλιοθηκών. Αν αυτές οι βιβλιοθήκες είναι προσβάσιμες εντός συγκεκριμένων καταλόγων ή του $PATH του συστήματος, μπορούν να κληθούν από μέσα από το MySQL.

Αυτή η τεχνική επιτρέπει την εκτέλεση δικτυακών/HTTP αιτημάτων μέσω ενός UDF, εφόσον πληρούνται αρκετές προϋποθέσεις, συμπεριλαμβανομένης της πρόσβασης εγγραφής στο @@plugin_dir, file_priv ρυθμισμένο σε Y, και secure_file_priv απενεργοποιημένο.

Για παράδειγμα, η βιβλιοθήκη lib_mysqludf_sys ή άλλες βιβλιοθήκες UDF που επιτρέπουν HTTP αιτήματα μπορούν να φορτωθούν για να εκτελέσουν SSRF. Οι βιβλιοθήκες πρέπει να μεταφερθούν στον διακομιστή, κάτι που μπορεί να επιτευχθεί μέσω κωδικοποίησης hex ή base64 του περιεχομένου της βιβλιοθήκης και στη συνέχεια εγγραφής της στον κατάλληλο κατάλογο.

Η διαδικασία διαφέρει αν το @@plugin_dir δεν είναι εγγράψιμο, ειδικά για εκδόσεις MySQL άνω του v5.0.67. Σε αυτές τις περιπτώσεις, πρέπει να χρησιμοποιηθούν εναλλακτικές διαδρομές που είναι εγγράψιμες.

Η αυτοματοποίηση αυτών των διαδικασιών μπορεί να διευκολυνθεί από εργαλεία όπως το SQLMap, το οποίο υποστηρίζει την ένεση UDF, και για τυφλές SQL injections, μπορεί να χρησιμοποιηθούν τεχνικές ανακατεύθυνσης εξόδου ή smuggling DNS requests.

Support HackTricks

Last updated