Exploiting Content Providers
Εκμεταλλευόμενοι τους Πάροχους Περιεχομένου
Εισαγωγή
Τα δεδομένα παρέχονται από μια εφαρμογή σε άλλες με αίτηση από ένα στοιχείο που ονομάζεται πάροχος περιεχομένου. Αυτές οι αιτήσεις διαχειρίζονται μέσω των μεθόδων της κλάσης ContentResolver. Οι πάροχοι περιεχομένου μπορούν να αποθηκεύουν τα δεδομένα τους σε διάφορες τοποθεσίες, όπως μια βάση δεδομένων, αρχεία ή μέσω δικτύου.
Στο αρχείο Manifest.xml, απαιτείται η δήλωση του παρόχου περιεχομένου. Για παράδειγμα:
Για να αποκτήσετε πρόσβαση στο content://com.mwr.example.sieve.DBContentProvider/Keys
, απαιτείται η άδεια READ_KEYS
. Είναι ενδιαφέρον να σημειωθεί ότι η διαδρομή /Keys/
είναι προσβάσιμη στο επόμενο τμήμα, το οποίο δεν προστατεύεται λόγω ενός λάθους του προγραμματιστή, ο οποίος προστάτεψε το /Keys
αλλά δήλωσε το /Keys/
.
Ίσως να έχετε πρόσβαση σε προσωπικά δεδομένα ή να εκμεταλλευτείτε κάποια ευπάθεια (SQL Injection ή Path Traversal).
Λήψη πληροφοριών από εκθέτες παρόχους περιεχομένου
Είναι δυνατόν να συνθέσετε πώς να φτάσετε στον DBContentProvider ξεκινώντας τα URIs με "content://". Αυτή η προσέγγιση βασίζεται σε εισαγωγικά που αποκτήθηκαν από τη χρήση του Drozer, όπου βρέθηκε κύρια πληροφορία στον φάκελο /Keys.
Ο Drozer μπορεί να μαντέψει και να δοκιμάσει πολλά URIs:
Θα πρέπει επίσης να ελέγξετε τον κώδικα του ContentProvider για να αναζητήσετε ερωτήματα:
Επίσης, αν δεν μπορείτε να βρείτε πλήρη ερωτήματα, μπορείτε να ελέγξετε ποια ονόματα δηλώνονται από το ContentProvider στη μέθοδο onCreate
:
Το ερώτημα θα είναι κάτι σαν αυτό: content://όνομα.πακέτου.κλάσης/δηλωμένο_όνομα
Παροχείς περιεχομένου με βάση δεδομένων
Πιθανώς οι περιοχείς περιεχομένου χρησιμοποιούνται ως διεπαφή για μια βάση δεδομένων. Επομένως, αν μπορείτε να έχετε πρόσβαση, μπορείτε να εξάγετε, ενημερώσετε, εισαγάγετε και διαγράψετε πληροφορίες. Ελέγξτε αν μπορείτε να έχετε πρόσβαση σε ευαίσθητες πληροφορίες ή δοκιμάστε να τις αλλάξετε για να παρακάμψετε τους μηχανισμούς εξουσιοδότησης.
Όταν ελέγχετε τον κώδικα του Content Provider, αναζητήστε επίσης συναρτήσεις με ονόματα όπως: query, insert, update και delete:
Επειδή θα μπορείτε να τις καλέσετε.
Ερώτημα περιεχομένου
Εισαγωγή περιεχομένου
Ερωτώντας τη βάση δεδομένων θα μάθετε τα ονόματα των στηλών, και στη συνέχεια θα μπορείτε να εισάγετε δεδομένα στη βάση:
Σημειώστε ότι στην εισαγωγή και την ενημέρωση μπορείτε να χρησιμοποιήσετε --string για να υποδείξετε συμβολοσειρά, --double για να υποδείξετε έναν διπλό, --float, --integer, --long, --short, --boolean
Ενημέρωση περιεχομένου
Γνωρίζοντας τα ονόματα των στηλών μπορείτε επίσης να τροποποιήσετε τις καταχωρήσεις:
Διαγραφή περιεχομένου
SQL Injection
Είναι απλό να ελέγξετε για SQL injection (SQLite) παραμορφώνοντας τα πεδία projection και selection που περνούν στον πάροχο περιεχομένου. Όταν ερωτάτε τον πάροχο περιεχομένου υπάρχουν 2 ενδιαφέροντα ορίσματα για να αναζητήσετε πληροφορίες: --selection και --projection:
Μπορείτε να δοκιμάσετε να καταχραστείτε αυτά τα παράμετροι για να ελέγξετε για SQL injections:
Αυτόματη ανακάλυψη SQLInjection από το Drozer
Το Drozer είναι ένα ισχυρό εργαλείο για την ανάλυση και την εκμετάλλευση ευπάθειών σε εφαρμογές Android. Μπορεί επίσης να χρησιμοποιηθεί για την ανακάλυψη αυτόματων ευπαθειών SQLInjection σε εφαρμογές που χρησιμοποιούν Content Providers.
Για να ανακαλύψετε αυτόματα ευπάθειες SQLInjection με το Drozer, μπορείτε να χρησιμοποιήσετε την εντολή run app.provider.sqlinjection
στο Drozer console. Αυτή η εντολή θα εκτελέσει μια σειρά από επιθέσεις SQLInjection σε όλους τους Content Providers που βρίσκονται στην εφαρμογή Android που ελέγχετε.
Το Drozer θα εκτελέσει αυτόματα διάφορες επιθέσεις SQLInjection, όπως την εισαγωγή ενός μη εγκυρου SQL ερωτήματος ή την εκτέλεση ενός ερωτήματος SQL που περιέχει εντολές SQL εντολών. Αν ανιχνευθεί μια ευπάθεια SQLInjection, το Drozer θα εμφανίσει τις λεπτομέρειες της ευπάθειας, όπως τον τύπο της ευπάθειας και τον πίνακα που επηρεάζεται.
Είναι σημαντικό να σημειωθεί ότι η αυτόματη ανακάλυψη ευπαθειών SQLInjection με το Drozer είναι ένα απλό εργαλείο και μπορεί να μην ανιχνεύσει όλες τις ευπαθείες. Επομένως, είναι σημαντικό να εκτελέσετε επιπλέον ελέγχους και να εξετάσετε τον κώδικα της εφαρμογής για πιθανές ευπαθείες SQLInjection.
Παροχείς περιεχομένου που υποστηρίζονται από το σύστημα αρχείων
Οι παροχείς περιεχομένου μπορούν επίσης να χρησιμοποιηθούν για να έχουμε πρόσβαση σε αρχεία:
Διάβασμα αρχείου
Μπορείτε να διαβάσετε αρχεία από τον παροχέα περιεχομένου
Διάβαση Διαδρομής (Path Traversal)
Εάν μπορείτε να έχετε πρόσβαση σε αρχεία, μπορείτε να προσπαθήσετε να καταχραστείτε μια Διάβαση Διαδρομής (σε αυτήν την περίπτωση αυτό δεν είναι απαραίτητο, αλλά μπορείτε να δοκιμάσετε να χρησιμοποιήσετε "../" και παρόμοια κόλπα).
Αυτόματη ανακάλυψη Path Traversal από το Drozer
Το Drozer είναι ένα ισχυρό εργαλείο για τον έλεγχο ασφαλείας εφαρμογών Android. Μπορεί να χρησιμοποιηθεί για την ανίχνευση ευπάθειών στις εφαρμογές και την εκμετάλλευσή τους. Ένα από τα χαρακτηριστικά του Drozer είναι η αυτόματη ανακάλυψη ευπαθειών Path Traversal.
Η ευπάθεια Path Traversal συμβαίνει όταν μια εφαρμογή επιτρέπει σε έναν επιτιθέμενο να αποκτήσει πρόσβαση σε αρχεία ή φακέλους που δεν θα έπρεπε να έχει πρόσβαση. Αυτό μπορεί να οδηγήσει σε διαρροή ευαίσθητων πληροφοριών ή ακόμα και στην εκτέλεση κακόβουλου κώδικα.
Για να ανακαλύψετε αυτόματα ευπάθειες Path Traversal με το Drozer, μπορείτε να χρησιμοποιήσετε την εντολή run app.provider.finduri
στο Drozer console. Αυτή η εντολή θα ελέγξει αυτόματα τις εφαρμογές Android για ευπάθειες Path Traversal στους Content Providers τους.
Αφού εκτελέσετε την εντολή, το Drozer θα εμφανίσει τα αποτελέσματα που περιέχουν ευπάθειες Path Traversal. Μπορείτε να εξετάσετε αυτά τα αποτελέσματα για να κατανοήσετε ποιες εφαρμογές είναι ευάλωτες και να λάβετε τα απαραίτητα μέτρα για να επιδιορθώσετε τις ευπάθειες αυτές.
Η αυτόματη ανακάλυψη ευπαθειών Path Traversal με το Drozer είναι ένα χρήσιμο εργαλείο για την ασφάλεια των εφαρμογών Android. Με τη χρήση αυτής της τεχνικής, μπορείτε να εντοπίσετε και να επιδιορθώσετε ευπάθειες Path Traversal πριν αυτές εκμεταλλευτούνται από κακόβουλους επιτιθέμενους.
Αναφορές
Last updated