# Webview Aanvalle
Leer AWS hakwerk vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)! Ander maniere om HackTricks te ondersteun: * As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)! * Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com) * Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family) * **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
## Gids oor WebView Konfigurasies en Sekuriteit ### Oorsig van WebView Swakhede 'n Kritiese aspek van Android-ontwikkeling behels die korrekte hantering van WebViews. Hierdie gids beklemtoon sleutelkonfigurasies en sekuriteitspraktyke om risiko's geassosieer met WebView-gebruik te verminder. ![WebView Voorbeeld](<../../.gitbook/assets/image (718).png>) ### **Lêertoegang in WebViews** Standaard laat WebViews lêertoegang toe. Hierdie funksionaliteit word beheer deur die `setAllowFileAccess()` metode, beskikbaar sedert Android API-vlak 3 (Cupcake 1.5). Aansoeke met die **android.permission.READ\_EXTERNAL\_STORAGE** toestemming kan lêers vanaf eksterne stoorplekke lees deur 'n lêer-URL-skema (`file://path/to/file`) te gebruik. #### **Verouderde Funksies: Universele en Lêertoegang vanaf URL's** * **Universele Toegang vanaf Lêer-URL's**: Hierdie verouderde funksie het kruis-oorsprongversoeke vanaf lêer-URL's toegelaat, wat 'n beduidende sekuriteitsrisiko vir moontlike XSS-aanvalle geskep het. Die verstekinstelling is gedeaktiveer (`false`) vir programme wat Android Jelly Bean en nuwer teiken. * Om hierdie instelling te kontroleer, gebruik `getAllowUniversalAccessFromFileURLs()`. * Om hierdie instelling te wysig, gebruik `setAllowUniversalAccessFromFileURLs(boolean)`. * **Lêertoegang vanaf Lêer-URL's**: Hierdie funksie, ook verouderd, het toegang tot inhoud vanaf ander lêerskema-URL's beheer. Soos universele toegang, is die verstekinstelling gedeaktiveer vir verbeterde sekuriteit. * Gebruik `getAllowFileAccessFromFileURLs()` om te kontroleer en `setAllowFileAccessFromFileURLs(boolean)` om in te stel. #### **Veilige Lêerlaai** Vir die deaktivering van lêersisteemtoegang terwyl steeds toegang tot bates en bronne, word die `setAllowFileAccess()` metode gebruik. Met Android R en hoër is die verstekinstelling `false`. * Kontroleer met `getAllowFileAccess()`. * Aktiveer of deaktiveer met `setAllowFileAccess(boolean)`. #### **WebViewAssetLoader** Die **WebViewAssetLoader** klas is die moderne benadering vir die laai van plaaslike lêers. Dit gebruik http(s)-URL's vir toegang tot plaaslike bates en bronne, in ooreenstemming met die Same-Origin-beleid, wat CORS-bestuur fasiliteer. ### loadUrl Dit is 'n algemene funksie wat gebruik word om willekeurige URL's in 'n webviwe te laai: ```java webview.loadUrl("") ``` ### **JavaScript en Intent Skema Hantering** * **JavaScript**: Afgeskakel per standaard in WebViews, dit kan geaktiveer word deur `setJavaScriptEnabled()`. Voorsoichtigheid word aanbeveel aangesien die aktivering van JavaScript sonder behoorlike beskerming sekuriteitskwessies kan veroorsaak. * **Intent Skema**: WebViews kan die `intent` skema hanteer, wat moontlik kan lei tot uitbuitings as dit nie sorgvuldig bestuur word nie. 'n Voorbeeld van 'n kwesbaarheid het 'n blootgestelde WebView parameter "support\_url" ingesluit wat uitgebuit kon word om kruis-webwerf skripsing (XSS) aanvalle uit te voer. ![Kwesbare WebView](<../../.gitbook/assets/image (719).png>) Uitbuitingsvoorbeeld deur adb te gebruik: {% code overflow="wrap" %} ```bash adb.exe shell am start -n com.tmh.vulnwebview/.SupportWebView –es support_url "https://example.com/xss.html" ``` ### Javascript-brug 'n Funksie word deur Android voorsien wat **JavaScript** in 'n WebView moontlik maak om **nagtiewe Android-app-funksies** aan te roep. Dit word bereik deur die `addJavascriptInterface`-metode te gebruik, wat JavaScript integreer met nagtiewe Android-funksionaliteite, genoem as 'n _WebView JavaScript-brug_. Voorsoorsigtigheid word aanbeveel aangesien hierdie metode alle bladsye binne die WebView toelaat om toegang te verkry tot die geregistreerde JavaScript-brug-objek, wat 'n sekuriteitsrisiko inhou as sensitiewe inligting deur hierdie brûe blootgestel word. * **Uiterste versigtigheid is nodig** vir programme wat Android-weergawes onder 4.2 teiken weens 'n kwesbaarheid wat afgeleë kode-uitvoering deur skadelike JavaScript moontlik maak deur refleksie te benut. #### Implementering van 'n JavaScript-brug * **JavaScript-brûe** kan met nagtiewe kode interaksie hê, soos in die voorbeelde waar 'n klasmetode aan JavaScript blootgestel word: ```javascript @JavascriptInterface public String getSecret() { return "SuperSecretPassword"; }; ``` * JavaScript-brug is geaktiveer deur 'n koppelvlak by die WebView toe te voeg: ```javascript webView.addJavascriptInterface(new JavascriptBridge(), "javascriptBridge"); webView.reload(); ``` * Potensiële uitbuiting deur middel van JavaScript, byvoorbeeld deur 'n XSS-aanval, maak dit moontlik om blootgestelde Java-metodes aan te roep: ```html ``` * Om risiko's te verminder, **beperk JavaScript-bruggebruik** tot kode wat saam met die APK gestuur word en voorkom dat JavaScript vanaf afgeleë bronne gelaai word. Stel vir ouer toestelle die minimum API-vlak op 17 in. ### Refleksie-gebaseerde Remote Kode-uitvoering (RCE) * 'n Gedokumenteerde metode maak dit moontlik om RCE deur refleksie te bereik deur 'n spesifieke lading uit te voer. Die `@JavascriptInterface`-annotasie voorkom egter ongemagtigde metode-toegang en beperk die aanvalsoppervlak. ### Afgeleë Foutopsporing * **Afgeleë foutopsporing** is moontlik met **Chrome Developer Tools**, wat interaksie en willekeurige JavaScript-uitvoering binne die WebView-inhoud moontlik maak. #### Afgeleë Foutopsporing Aktiveer * Afgeleë foutopsporing kan geaktiveer word vir alle WebViews binne 'n toepassing deur: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); } ``` * Om voorwaardelik die foutopsporing te aktiveer gebaseer op die toestand van die aansoek se foutopsporingsvermoë: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) { WebView.setWebContentsDebuggingEnabled(true); } } ``` ## Uitlek van willekeurige lêers * Wys die uitlek van willekeurige lêers deur middel van 'n 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); ``` ## Verwysings * [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)
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)! Ander maniere om HackTricks te ondersteun: * As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)! * Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com) * Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family) * **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.