Cómo aprovechar WebViews de Android con Frida

Muchas aplicaciones móviles dependen en gran medida de las tecnologías y los recursos web para su funcionalidad. Por ejemplo, WebViews ofrece una manera simple y conveniente de cargar y mostrar contenido web directamente dentro de una aplicación móvil. Sin embargo, WebViews puede aumentar la superficie de ataque móvil al tiempo que presenta un riesgo significativo según su configuración. Los ciberatacantes pueden explotar las vistas web de Android para robar credenciales de usuario o realizar phishing al dirigir el tráfico a un sitio malicioso.

Este tutorial analizará una implementación común de Android WebView para mostrar cómo es susceptible al redireccionamiento de URL, secuencias de comandos entre sitios (XSS) y ejecución de código interno. Además, aprenderá a explotar estas vulnerabilidades con Frida, un conjunto de herramientas de instrumentación dinámica de código abierto creado y respaldado por investigadores de NowSecure.

Requisitos previos de la herramienta de prueba de penetración

Además de Frida, este ejercicio requiere el uso de las siguientes herramientas de prueba de seguridad de aplicaciones móviles:

  • Un dispositivo Android rooteado (físico o virtual)
  • aplicación vulnerable Creé para este ejercicio mostrar una implementación estándar de WebView
  • JADX Descompilador de Dex a Java
  • Frida kit de herramientas de instrumentación de código dinámico
  • ngrok en blanco para exponer el servidor local Apache HTTPS
  • Entorno de desarrollo integrado (IDE) compatible con HTML y JavaScript
  • Puente de depuración de Android (adb) herramienta para instalar archivos .apk en un dispositivo Android

Usaremos la aplicación de Android y las herramientas de prueba de penetración móvil enumeradas anteriormente para explotar WebViews en el siguiente orden:

  • redirección de URL
  • XSS
  • Ejecución de código

WebViews puede expandir la superficie de ataque móvil al tiempo que presenta un riesgo significativo según su configuración.

Redirección de URL

Comenzaremos lentamente mostrando cómo redirigir la vista web de Android y luego, gradualmente, lanzaremos ataques más complejos. Hay dos formas de redirigir un WebView en el lado del cliente:

  1. La actividad de vista web se exporta dentro de AndroidManifest.xml.
  2. La función Web View es vulnerable a la inyección de parámetros.

Podemos verificar AndroidManifest.xml para ver si la actividad de WebView se exporta:

Como aprovechar WebViews de Android con Frida

Desafortunadamente, la actividad no se exporta, lo que significa que podemos pasar a buscar la función WebView que inicia y configura WebView. Este se encuentra en com.vulnerablewebview.WebviewActivity. Dentro de la actividad hay una función llamada ConfigWebview que toma un parámetro de cadena que establece la URL:

1685039065 971 Como aprovechar WebViews de Android con Frida

Podemos usar Frida para conectarnos a esta función e inyectar nuestro propio valor para el parámetro URL. Para hacer esto, necesitaremos crear un script personalizado de Frida. Afortunadamente, JADX lo hace muy fácil: simplemente haga clic derecho en la función «ConfigWebview» y seleccione «Copiar como fragmento de Frida»:

1685039065 689 Como aprovechar WebViews de Android con Frida

A continuación, pegue el fragmento de Frida en su IDE de JavaScript. Asegúrese de envolver su fragmento en el Java.realizar y agregue la variable URL con un sitio web válido como valor. (Java.perform() es una función que se utiliza para crear una máquina virtual de Java (JVM), que permite que nuestro script interactúe con objetos y clases de Java de la aplicación móvil de Android.

Su código JavaScript debería verse así:

1685039065 527 Como aprovechar WebViews de Android con Frida

Finalmente, usamos Frida para conectar nuestra aplicación y ejecutar el script para inyectar el nuevo valor para la URL. Para hacer esto, primero debemos conectar nuestro dispositivo a través de USB a nuestra computadora e iniciar Frida-Server en nuestro dispositivo usando Android Debug Bridge:

Tenga en cuenta que su frida-server puede llamarse de otra manera.
Tenga en cuenta que su frida-server puede llamarse de otra manera.

Ejecute Frida con el script personalizado en una terminal:

1685039065 686 Como aprovechar WebViews de Android con Frida

La aplicación se iniciará en su dispositivo y, cuando haga clic en el botón WebView, debería mostrarse https://www.google.com:

1685039066 252 Como aprovechar WebViews de Android con Frida

Secuencias de comandos entre sitios (XSS)

Para explotar XSS en un WebView de Android, el WebView debe tener habilitado JavaScript. examinando el ConfigWebview La función en JADX muestra que WebView tiene JavaScript habilitado:

1685039066 272 Como aprovechar WebViews de Android con Frida

Antes de llegar al exploit, primero debemos configurar algunas herramientas que nos permitirán inyectar nuestra carga útil en el parámetro de URL. El mayor obstáculo es colocar un script desde nuestro escritorio en Internet. Para hacer esto, aprovecharemos las herramientas del servidor web Apache y ngrok.

Inicie Apache:

1685039066 953 Como aprovechar WebViews de Android con Frida

Para confirmar que Apache funciona correctamente, abra un navegador web y escriba http://servidorlocal/. Si su servidor web Apache funciona correctamente, debería recibir un mensaje que dice «¡Funciona!».

1685039066 737 Como aprovechar WebViews de Android con Frida

Ahora que tenemos nuestro servidor web local ejecutándose, esta es la oportunidad perfecta para escribir un script de explotación XSS y probarlo localmente. Para hacer esto, abra su IDE y escriba una carga útil XSS simple:

1685039067 428 Como aprovechar WebViews de Android con Frida

Para llamar al script desde nuestro servidor Apache, debemos mover el SimpleXSS.html script en la carpeta de documentos de nuestro servidor web. En MacOS, se encuentra en /Biblioteca/WebServer/Documentos. Una vez que haya movido el script, abra un navegador web y escriba http://localhost/SimpleXSS.html. Debería recibir este mensaje emergente:

1685039067 965 Como aprovechar WebViews de Android con Frida

Esto confirma que nuestra carga útil XSS está lista para funcionar.

Use ngrok para obtener la carga útil en la Internet pública sin tener que pagar por servidores y un dominio. Con Apache aún ejecutándose, inicie el servicio ngrok en su terminal usando el comando ngrok http 80.

Debería ver la URL de la dirección ngrok en la ventana de la terminal. Copie y pegue esta dirección en un navegador web. Si configuró todo correctamente, debería recibir el mensaje «¡Funciona!» mensaje:

1685039067 184 Como aprovechar WebViews de Android con Frida

La herramienta ngrok también tendrá acceso a todos los scripts de la carpeta de documentos del servidor web. Asegúrese de verificar que todos sus scripts se comporten de la misma manera que lo hicieron con Apache.

Ahora usaremos exactamente la misma técnica de la sección de redirección de URL. La única diferencia es que la variable URL en su secuencia de comandos de Frida ahora tendrá el valor de nuestra carga útil XSS a través de ngrok:

1685039067 472 Como aprovechar WebViews de Android con Frida

En una ventana de terminal, ejecuta el mismo comando de Frida que ejecutará tu código JavaScript:

1685039067 86 Como aprovechar WebViews de Android con Frida

Presione el botón para navegar a WebView y debería encontrar lo siguiente:

1685039067 530 Como aprovechar WebViews de Android con Frida

Ejecución de código

Debido a que The WebView es vulnerable a XSS, podemos investigar otros vectores de ataque que tienen un mayor impacto en la aplicación móvil. Si volvemos a la ConfigWebview función, podemos ver que una Interfaz Javascript ha sido implementado:

1685039068 883 Como aprovechar WebViews de Android con Frida

Podemos obtener acceso y llamar a cualquier función desde la interfaz porque WebView implementa un Interfaz Javascript y es vulnerable a XSS.

Navegar a la WebViewInterfaz clase dentro de JADX:

1685039068 705 Como aprovechar WebViews de Android con Frida

Esta clase tiene una función llamada Mostrar bandera que devuelve un código supersecreto. Podemos ejecutar esta función usando Frida para inyectar una URL que se vincule a un script HTML malicioso que llame al Mostrar bandera función.

Si miras en JADX dentro de la agregarJavascriptInterfaz función, observe que hay una cadena de «Android». De manera similar, usaremos esa misma palabra clave en nuestro script:

1685039068 430 Como aprovechar WebViews de Android con Frida

Luego moveremos el EjecutarFunción.html archivo en la carpeta de documentos de nuestro servidor web para que podamos llamarlo con ngrok. Una vez hecho esto, podemos actualizar nuestro script de Frida para que apunte al nuevo script:

1685039068 682 Como aprovechar WebViews de Android con Frida

Luego ejecute el comando Frida y abra el WebView de la aplicación:

1685039069 317 Como aprovechar WebViews de Android con Frida

Conclusión

Hemos revisado cómo crear un script de Frida personalizado para explotar WebViews de Android de diferentes maneras. Este blog también ha cubierto cómo analizar una implementación de WebView en una aplicación de Android y cómo determinar si es vulnerable a la explotación. Obtenga más información registrándose para ver un tutorial práctico en el Charla técnica de mayo de 2023 para ver estas técnicas demostradas por el autor.

Debemos enfatizar que las técnicas y metodologías descritas en este tutorial solo deben usarse con fines éticos y legales. Como evaluadores de penetración e investigadores, asumimos la responsabilidad de educar a los desarrolladores y al público en general sobre los riesgos de seguridad para que se puedan tomar medidas para fortalecer la seguridad de las aplicaciones móviles.

NowSecure espera que este blog haya proporcionado información valiosa sobre la explotación de WebView. Proteja sus aplicaciones móviles de los problemas comunes de seguridad y privacidad móviles con NowSecure Mobile Pen Testing as a Service (PTaaS) y NowSecure Platform continuas pruebas de seguridad de aplicaciones móviles.



Fuente del artículo

Deja un comentario