Android WebView
Intro
Security
Improper usage WebView
ΠΡΡΡ Π΄Π²Π° sandbox bypass:
JS ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ Java ΠΊΠΎΠ΄
wv.addJavascriptInterface(new FileUtils(), βfileβ);
<script>
filename = β/data/data/com.Foudnstone/data.txtβ;
file.write(filename, data, false);
</script>Π£ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ JavascriptInterface
Java ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ JS
String javascr = βjavascript: var newscript=document.
createElement(\βscript\β);β;
javascr += βnewscript.src=\βhttp://www.foundstone.com\β;β;
javascr += βdocument.body.appendChild(newscript);β;
myWebView.loadUrl(javascr);Π§ΡΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅ WebView ΠΈΠ»ΠΈ Chrome Custom Tabs: https://developer.chrome.com/multidevice/android/customtabs
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ
setJavaScriptEnabled(true) β ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ JS-ΠΊΠΎΠ΄
setAllowFileAccess(true) β ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ ΡΠ΅ΡΠ΅Π· ΡΡ
Π΅ΠΌΡ file:///data/data/
Π§ΡΠΎ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ / ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π»ΠΈΡΡΡ Π½Π° WebView
oversecured's paper: https://blog.oversecured.com/Android-security-checklist-webview/
ΠΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ
ΡΠΊΠ°ΡΡ
$ objection --gadget app.example.com explore
objection # android hooking watch class_method android.webkit.WebView.loadData --dump-args
objection # android hooking watch class_method android.webkit.WebView.loadUrl --dump-args
objection # android hooking watch class_method android.webkit.WebView.loadDataWithBaseURL --dump-args
objection # android hooking watch class_method android.webkit.WebView.evaluateJavascript --dump-args
objection # android hooking watch class_method android.webkit.WebView.getUrl --dump-argsLast updated
Was this helpful?