
Una explotación para la vulnerabilidad /dev/exynos-mem introducida en teléfonos Samsung anteriores.
Esto es una POC para explotar la vulnerabilidad /dev/exynos-mem introducida en teléfonos Samsung anteriores.
Se realizó por interés en la investigación de vulnerabilidades del kernel y como parte de un desafío CTF.
La vulnerabilidad introducida en estos teléfonos son los permisos para el dispositivo exynos-mem. Permitía a los usuarios tanto R/W, ¡incluso como no root!
El dispositivo exynos-mem es un dispositivo que permite leer/escribir directamente en /dev/mem, lo que significa que se puede escribir directamente en código/datos del kernel.
Mediante el uso de /proc/iomem se puede descubrir rápidamente qué direcciones físicas corresponden a qué memoria en el operating system, e incluso encontrar dónde está la memoria Kernel Code / Data.
El exploit realiza algunas acciones para obtener root a partir de esto:
/proc/kallsyms, lo que nos limita. Por lo tanto, escaneamos la memoria del kernel para encontrar la cadena de formato utilizada en kallsyms (seq_printf(m, "%pK %c %s\n", (void *)iter->value, iter->type, iter->name);)
y la parcheamos para que sea %p en lugar de %pK con el fin de obtener las direcciones de los símbolos impresas para nosotros como usuarios./proc/kallsyms para encontrar la dirección del símbolo nsown_capable, que se utiliza para identificar si un usuario que llama a setuid() tiene permisos para hacerlo.nsown_capable para que simplemente return true;, permitiendo que cualquier usuario llame a setuid() con cualquier uid que desee.setuid(0) y .Es posible que las constantes en el archivo deban modificarse un poco para que sean correctas para su sistema; ajústelas según sea necesario.
system(/bin/sh)