Webview Attacks
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Anleitung zu WebView-Konfigurationen und Sicherheit
Übersicht über WebView-Schwachstellen
Ein kritischer Aspekt der Android-Entwicklung ist der korrekte Umgang mit WebViews. Diese Anleitung hebt wichtige Konfigurationen und Sicherheitspraktiken hervor, um Risiken im Zusammenhang mit der Nutzung von WebViews zu mindern.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-635ddedaf409cba9ed0dc0a0b38069fdcd922702%252Fimage%2520%281190%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=31efff6a&sv=1)
Dateizugriff in WebViews
Standardmäßig erlauben WebViews den Dateizugriff. Diese Funktionalität wird durch die Methode setAllowFileAccess()
gesteuert, die seit Android API Level 3 (Cupcake 1.5) verfügbar ist. Anwendungen mit der Berechtigung android.permission.READ_EXTERNAL_STORAGE können Dateien aus dem externen Speicher über ein Dateischema (file://path/to/file
) lesen.
Veraltete Funktionen: Universeller und Dateizugriff von URLs
Universeller Zugriff von Datei-URLs: Diese veraltete Funktion erlaubte Cross-Origin-Anfragen von Datei-URLs, was ein erhebliches Sicherheitsrisiko aufgrund potenzieller XSS-Angriffe darstellt. Die Standardeinstellung ist deaktiviert (
false
) für Apps, die auf Android Jelly Bean und neuer abzielen.Um diese Einstellung zu überprüfen, verwenden Sie
getAllowUniversalAccessFromFileURLs()
.Um diese Einstellung zu ändern, verwenden Sie
setAllowUniversalAccessFromFileURLs(boolean)
.Dateizugriff von Datei-URLs: Diese ebenfalls veraltete Funktion steuerte den Zugriff auf Inhalte von anderen Dateischema-URLs. Wie der universelle Zugriff ist auch hier die Standardeinstellung deaktiviert, um die Sicherheit zu erhöhen.
Verwenden Sie
getAllowFileAccessFromFileURLs()
, um zu überprüfen, undsetAllowFileAccessFromFileURLs(boolean)
, um festzulegen.
Sicheres Laden von Dateien
Um den Zugriff auf das Dateisystem zu deaktivieren und dennoch auf Assets und Ressourcen zuzugreifen, wird die Methode setAllowFileAccess()
verwendet. Mit Android R und höher ist die Standardeinstellung false
.
Überprüfen Sie mit
getAllowFileAccess()
.Aktivieren oder deaktivieren Sie mit
setAllowFileAccess(boolean)
.
WebViewAssetLoader
Die WebViewAssetLoader-Klasse ist der moderne Ansatz zum Laden lokaler Dateien. Sie verwendet http(s)-URLs, um auf lokale Assets und Ressourcen zuzugreifen, was mit der Same-Origin-Policy übereinstimmt und somit das CORS-Management erleichtert.
loadUrl
Dies ist eine gängige Funktion, die verwendet wird, um beliebige URLs in einem Webview zu laden:
Ofc, ein potenzieller Angreifer sollte niemals in der Lage sein, die URL zu kontrollieren, die eine Anwendung laden wird.
JavaScript und Intent-Schema-Verarbeitung
JavaScript: Standardmäßig in WebViews deaktiviert, kann es über
setJavaScriptEnabled()
aktiviert werden. Vorsicht ist geboten, da das Aktivieren von JavaScript ohne angemessene Sicherheitsvorkehrungen Sicherheitsanfälligkeiten einführen kann.Intent-Schema: WebViews können das
intent
-Schema verarbeiten, was zu Exploits führen kann, wenn es nicht sorgfältig verwaltet wird. Eine Beispielanfälligkeit betraf einen exponierten WebView-Parameter "support_url", der ausgenutzt werden konnte, um Cross-Site-Scripting (XSS)-Angriffe auszuführen.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-052d3216592f83cb420187091c3ce2e769c1c9a0%252Fimage%2520%281191%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=1b61a2b4&sv=1)
Beispiel für eine Ausnutzung mit adb:
Javascript Bridge
Eine Funktion wird von Android bereitgestellt, die es JavaScript in einem WebView ermöglicht, native Android-App-Funktionen aufzurufen. Dies wird durch die Nutzung der Methode addJavascriptInterface
erreicht, die JavaScript mit nativen Android-Funktionalitäten integriert, auch bekannt als WebView JavaScript bridge. Vorsicht ist geboten, da diese Methode allen Seiten innerhalb des WebView den Zugriff auf das registrierte JavaScript Interface-Objekt ermöglicht, was ein Sicherheitsrisiko darstellt, wenn sensible Informationen über diese Schnittstellen offengelegt werden.
Äußerste Vorsicht ist erforderlich für Apps, die auf Android-Versionen unter 4.2 abzielen, aufgrund einer Schwachstelle, die die Ausführung von Remote-Code durch bösartiges JavaScript ermöglicht, das Reflection ausnutzt.
Implementierung eines JavaScript Bridges
JavaScript-Schnittstellen können mit nativen Code interagieren, wie in den Beispielen gezeigt, in denen eine Klassenmethode JavaScript zugänglich gemacht wird:
JavaScript Bridge wird aktiviert, indem eine Schnittstelle zum WebView hinzugefügt wird:
Potenzielle Ausnutzung durch JavaScript, zum Beispiel über einen XSS-Angriff, ermöglicht das Aufrufen von exponierten Java-Methoden:
Um Risiken zu mindern, beschränken Sie die Verwendung der JavaScript-Brücke auf Code, der mit der APK ausgeliefert wird, und verhindern Sie das Laden von JavaScript aus externen Quellen. Für ältere Geräte setzen Sie die minimale API-Stufe auf 17.
Reflexionsbasierte Remote-Code-Ausführung (RCE)
Eine dokumentierte Methode ermöglicht die Erreichung von RCE durch Reflexion, indem ein spezifisches Payload ausgeführt wird. Die
@JavascriptInterface
-Annotation verhindert jedoch unbefugten Methoden Zugriff und begrenzt die Angriffsfläche.
Remote-Debugging
Remote-Debugging ist mit Chrome Developer Tools möglich, was Interaktion und beliebige JavaScript-Ausführung innerhalb des WebView-Inhalts ermöglicht.
Aktivieren des Remote-Debuggings
Remote-Debugging kann für alle WebViews innerhalb einer Anwendung aktiviert werden durch:
Um das Debugging bedingt basierend auf dem debuggable Zustand der Anwendung zu aktivieren:
Exfiltriere beliebige Dateien
Demonstriert die Exfiltration beliebiger Dateien mithilfe einer XMLHttpRequest:
Referenzen
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated