
Um exploit para a vulnerabilidade /dev/exynos-mem introduzida em telefones samsung anteriores.
Este é um POC para explorar a vulnerabilidade /dev/exynos-mem introduzida em telefones Samsung anteriores. Foi feito por interesse em pesquisa de vulnerabilidades de kernel e como parte de um desafio CTF.
A vulnerabilidade introduzida nesses telefones são as permissões para o dispositivo exynos-mem. Ele permitia que usuários tivessem permissões de leitura e escrita (R/W), mesmo sem ser root!
O dispositivo exynos-mem é um dispositivo que permite ler/escrever diretamente em /dev/mem, o que significa que você pode escrever diretamente no código/dados do kernel.
Ao utilizar /proc/iomem, você pode descobrir rapidamente quais endereços físicos correspondem a qual memória no sistema operacional, e até descobrir onde está a memória de Código / Dados do Kernel.
O exploit faz algumas coisas para obter root a partir disso:
/proc/kallsyms, o que nos prejudica. Portanto, escaneamos a memória do kernel para encontrar a string de formato usada no kallsyms (seq_printf(m, "%pK %c %s\n", (void *)iter->value, iter->type, iter->name);) e a remendamos para ser %p em vez de %pK para que os endereços dos símbolos sejam impressos para nós como usuários./proc/kallsyms para encontrar o endereço do símbolo nsown_capable, que é usado para identificar se um usuário que chama setuid() tem permissões para fazê-lo.nsown_capable para simplesmente return true;, permitindo que qualquer usuário chame setuid() para qualquer uid que desejar.setuid(0) e .As constantes no arquivo podem precisar ser alteradas um pouco para serem corretas para o seu sistema; defina-as conforme necessário.
system(/bin/sh)