Webview Attacks
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
'n Kritieke aspek van Android ontwikkeling behels die korrekte hantering van WebViews. Hierdie gids beklemtoon sleutel konfigurasies en sekuriteitspraktyke om risiko's geassosieer met WebView gebruik te verminder.
Standaard laat WebViews lêer toegang toe. Hierdie funksionaliteit word beheer deur die setAllowFileAccess()
metode, beskikbaar sedert Android API vlak 3 (Cupcake 1.5). Toepassings met die android.permission.READ_EXTERNAL_STORAGE toestemming kan lêers van eksterne stoor lees met 'n lêer URL skema (file://path/to/file
).
Universele Toegang Vanaf Lêer URL's: Hierdie verouderde kenmerk het kruis-oorsprong versoeke vanaf lêer URL's toegelaat, wat 'n beduidende sekuriteitsrisiko inhou weens potensiële XSS aanvalle. Die standaard instelling is gedeaktiveer (false
) vir toepassings wat op Android Jelly Bean en nuwer teiken.
Om hierdie instelling te kontroleer, gebruik getAllowUniversalAccessFromFileURLs()
.
Om hierdie instelling te wysig, gebruik setAllowUniversalAccessFromFileURLs(boolean)
.
Lêer Toegang Vanaf Lêer URL's: Hierdie kenmerk, ook verouderd, het toegang tot inhoud vanaf ander lêer skema URL's beheer. Soos universele toegang, is die standaard gedeaktiveer vir verbeterde sekuriteit.
Gebruik getAllowFileAccessFromFileURLs()
om te kontroleer en setAllowFileAccessFromFileURLs(boolean)
om in te stel.
Om lêerstelsels toegang te deaktiveer terwyl bates en hulpbronne steeds toeganklik is, word die setAllowFileAccess()
metode gebruik. Met Android R en hoër is die standaard instelling false
.
Kontroleer met getAllowFileAccess()
.
Aktiveer of deaktiveer met setAllowFileAccess(boolean)
.
Die WebViewAssetLoader klas is die moderne benadering vir die laai van plaaslike lêers. Dit gebruik http(s) URL's om toegang te verkry tot plaaslike bates en hulpbronne, wat ooreenstem met die Same-Origin beleid, en fasiliteer dus CORS bestuur.
Dit is 'n algemene funksie wat gebruik word om arbitrêre URL's in 'n webview te laai:
Ofc, 'n potensiële aanvaller moet nooit in staat wees om die URL te beheer wat 'n toepassing gaan laai.
JavaScript: Standaard gedeaktiveer in WebViews, dit kan geaktiveer word via setJavaScriptEnabled()
. Versigtigheid word aanbeveel aangesien die aktivering van JavaScript sonder behoorlike beskerming sekuriteitskwesbaarhede kan inbring.
Intent Skema: WebViews kan die intent
skema hanteer, wat moontlik kan lei tot ontploffings as dit nie versigtig bestuur word nie. 'n Voorbeeld kwesbaarheid het 'n blootgestelde WebView parameter "support_url" ingesluit wat benut kon word om cross-site scripting (XSS) aanvalle uit te voer.
Eksploitering voorbeeld met adb:
'n Kenmerk word deur Android verskaf wat JavaScript in 'n WebView in staat stel om natuurlike Android-app funksies aan te roep. Dit word bereik deur die addJavascriptInterface
metode te gebruik, wat JavaScript met natuurlike Android funksies integreer, genoem 'n WebView JavaScript brug. Versigtigheid word aanbeveel aangesien hierdie metode alle bladsye binne die WebView toelaat om toegang te verkry tot die geregistreerde JavaScript Interface objek, wat 'n sekuriteitsrisiko inhou as sensitiewe inligting deur hierdie interfaces blootgestel word.
Uiterste versigtigheid is nodig vir toepassings wat op Android weergawes onder 4.2 teiken weens 'n kwesbaarheid wat afstandkode-uitvoering deur kwaadwillige JavaScript toelaat, wat refleksie benut.
JavaScript interfaces kan met natuurlike kode kommunikeer, soos in die voorbeelde waar 'n klasmetode aan JavaScript blootgestel word:
JavaScript-brug is geaktiveer deur 'n koppelvlak aan die WebView toe te voeg:
Potensiële uitbuiting deur middel van JavaScript, byvoorbeeld, via 'n XSS-aanval, stel die oproep van blootgestelde Java-metodes in staat:
Om risiko's te verminder, beperk die gebruik van die JavaScript-brug tot kode wat saam met die APK gestuur is en verhoed dat JavaScript van afstandbronne gelaai word. Stel vir ouer toestelle die minimum API-vlak op 17.
'n Gedokumenteerde metode maak dit moontlik om RCE deur refleksie te bereik deur 'n spesifieke payload uit te voer. Die @JavascriptInterface
annotasie verhoed egter ongeoorloofde metode-toegang, wat die aanvaloppervlak beperk.
Afstanddebugging is moontlik met Chrome Developer Tools, wat interaksie en arbitrêre JavaScript-uitvoering binne die WebView-inhoud moontlik maak.
Afstanddebugging kan geaktiveer word vir alle WebViews binne 'n toepassing deur:
Om foutopsporing voorwaardelik in te skakel gebaseer op die toepassing se foutopsporingstoestand:
Demonstreer die eksfiltrasie van arbitrêre lêers met behulp van 'n XMLHttpRequest:
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)