12 KiB
वेबव्यू हमले
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप चाहते हैं कि आपकी कंपनी HackTricks में विज्ञापित हो या HackTricks को PDF में डाउनलोड करें तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS और HackTricks स्वैग प्राप्त करें
- The PEASS Family का खोजें, हमारा विशेष NFTs संग्रह खोजें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो** करें।
- अपने हैकिंग ट्रिक्स साझा करें, हैकट्रिक्स](https://github.com/carlospolop/hacktricks) और HackTricks Cloud github repos में PR जमा करके।
WebView कॉन्फ़िगरेशन और सुरक्षा पर सरल गाइड
WebView की कमजोरियों का अवलोकन
एंड्रॉइड विकास का एक महत्वपूर्ण पहलू WebView के सही हैंडलिंग में शामिल है। यह गाइड WebView उपयोग से जुड़े जोखिमों को कम करने के लिए मुख्य कॉन्फ़िगरेशन और सुरक्षा अभ्यासों पर प्रकाश डालता है।
WebView में फ़ाइल एक्सेस
डिफ़ॉल्ट रूप से, 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)
का उपयोग करें।
सुरक्षित फ़ाइल लोडिंग
फ़ाइल सिस्टम एक्स
adb.exe shell am start -n com.tmh.vulnwebview/.SupportWebView –es support_url "https://example.com/xss.html"
जावास्क्रिप्ट ब्रिज
एंड्रॉइड द्वारा एक सुविधा प्रदान की जाती है जो वेबव्यू में जावास्क्रिप्ट को नेटिव एंड्रॉइड ऐप फंक्शन को आमंत्रित करने की सुविधा प्रदान करती है। इसे addJavascriptInterface
विधि का उपयोग करके प्राप्त किया जाता है, जो जावास्क्रिप्ट को नेटिव एंड्रॉइड कार्यक्षमताओं के साथ एकीकृत करता है, जिसे वेबव्यू जावास्क्रिप्ट ब्रिज कहा जाता है। सावधानी बरतने की सलाह दी जाती है क्योंकि यह विधि वेबव्यू के सभी पृष्ठों को पंजीकृत जावास्क्रिप्ट इंटरफेस ऑब्ज
@JavascriptInterface
public String getSecret() {
return "SuperSecretPassword";
};
- JavaScript Bridge को WebView में एक इंटरफेस जोड़कर सक्रिय किया जा सकता है:
webView.addJavascriptInterface(new JavascriptBridge(), "javascriptBridge");
webView.reload();
- संभावित शोषण JavaScript के माध्यम से, उदाहरण के लिए, एक XSS हमले के माध्यम से, अनावरणित जावा विधियों को बुलाने की संभावना प्रदान करता है:
<script>alert(javascriptBridge.getSecret());</script>
- जोखिम को कम करने के लिए, JavaScript ब्रिज़ उपयोग को प्रतिबंधित करें APK के साथ भेजे गए कोड तक और रिमोट स्रोतों से JavaScript लोड करने से रोकें। पुराने डिवाइस के लिए, न्यूनतम API स्तर को 17 पर सेट करें।
Reflection-based Remote Code Execution (RCE)
- एक दस्तावेज़ीत विधि RCE हासिल करने की अनुमति देती है जिसे प्रकार के विशिष्ट पेलोड को निष्पादित करके प्रतिबिंब के माध्यम से किया जा सकता है। हालांकि,
@JavascriptInterface
एनोटेशन अनधिकृत मेथड एक्सेस को रोकता है, हमारी हमले की सतह को सीमित करता है।
Remote Debugging
- रिमोट डीबगिंग Chrome Developer Tools के साथ संभव है, जो WebView सामग्री के भीतर अंतर्क्रिया और अर्बिट्रे JavaScript निष्पादन को संभव बनाता है।
रिमोट डीबगिंग सक्षम करना
- एक एप्लिकेशन के सभी WebViews के लिए रिमोट डीबगिंग को सक्षम किया जा सकता है द्वारा:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
- डिबगिंग को शर्तानुसार सक्रिय करने के लिए एप्लिकेशन की डिबगेबल स्थिति पर निर्भर करें:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
{ WebView.setWebContentsDebuggingEnabled(true); }
}
विषयात्मक फ़ाइलों को बाहर निकालें
- XMLHttpRequest का उपयोग करके विषयात्मक फ़ाइलों को बाहर निकालने का प्रदर्शन:
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://github.com/authenticationfailure/WheresMyBrowser.Android
- https://developer.android.com/reference/android/webkit/WebView
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs कलेक्शन The PEASS Family खोजें
- जुड़ें 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह में या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो करें।
- हैकिंग ट्रिक्स साझा करें और PRs सबमिट करके HackTricks और HackTricks Cloud github रेपो में।