MySQL File priv to SSRF/RCE
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)
Αυτή είναι μια περίληψη των τεχνικών MySQL/MariaDB/Percona από https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.
Στην εξερεύνηση της 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 για περαιτέρω εκμετάλλευση.
Οι βάσεις δεδομένων 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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)