
Un exploit pour la vulnérabilité /dev/exynos-mem introduite dans les anciens téléphones Samsung.
Ceci est une preuve de concept pour exploiter la vulnérabilité /dev/exynos-mem introduite dans les premiers téléphones Samsung.
Cela a été fait par intérêt pour la recherche de vulnérabilités du noyau et dans le cadre d'un défi CTF.
La vulnérabilité introduite dans ces téléphones concerne les permissions du périphérique exynos-mem. Il permettait aux utilisateurs à la fois la lecture et l'écriture (R/W), même en tant que non-root !
Le périphérique exynos-mem permet de lire/écrire directement dans /dev/mem, ce qui signifie que vous pouvez écrire directement dans le code/données du noyau.
En utilisant /proc/iomem, vous pouvez rapidement découvrir quelles adresses physiques correspondent à quelle mémoire sur le operating system, et même trouver où se trouve la mémoire Kernel Code / Data.
L'exploit exécute plusieurs actions afin d'obtenir root à partir de cela :
/proc/kallsyms, ce qui nous pénalise. Par conséquent, nous scannons la mémoire du noyau pour trouver la chaîne de format utilisée dans kallsyms (seq_printf(m, "%pK %c %s\n", (void *)iter->value, iter->type, iter->name);)
et la patchons pour qu'elle soit %p au lieu de %pK afin que les adresses des symboles nous soient imprimées en tant qu'utilisateurs./proc/kallsyms pour trouver l'adresse du symbole nsown_capable, qui est utilisé pour déterminer si un utilisateur appelant setuid() a ou non les permissions de le faire.nsown_capable pour simplement faire return true;, permettant à n'importe quel utilisateur d'appeler setuid() avec l'uid qu'il veut.setuid(0) et .Les constantes du fichier peuvent nécessiter d'être légèrement modifiées pour être correctes sur votre système ; définissez-les selon vos besoins.
system(/bin/sh)