
Ein Exploit für die /dev/exynos-mem Sicherheitslücke, die in früheren Samsung-Smartphones eingeführt wurde.
Dies ist ein POC zur Ausnutzung der /dev/exynos-mem-Sicherheitslücke, die in älteren Samsung-Telefonen eingeführt wurde. Es wurde aus Interesse an Kernel-Sicherheitsforschung und als Teil einer CTF-Herausforderung erstellt.
Die in diesen Telefonen eingeführte Sicherheitslücke betrifft die Berechtigungen für das exynos-mem-Gerät. Es erlaubte Benutzern sowohl Lese- als auch Schreibzugriff, sogar als Nicht-Root! Das exynos-mem-Gerät ist ein Gerät, mit dem Sie direkt auf /dev/mem lesen/schreiben können, was bedeutet, dass Sie direkt in Kernel-Code/-Daten schreiben können.
Durch die Nutzung von /proc/iomem können Sie schnell herausfinden, welche physikalischen Adressen welchem Speicher im Betriebssystem entsprechen, und sogar herausfinden, wo sich der Speicher für Kernel-Code/-Daten befindet.
Der Exploit führt mehrere Schritte aus, um Root-Zugriff zu erlangen:
/proc/kallsyms zugreifen, was uns einschränkt. Daher scannen wir den Kernel-Speicher, um den in kallsyms verwendeten Formatstring zu finden (seq_printf(m, "%pK %c %s\n", (void *)iter->value, iter->type, iter->name);)
und patchen ihn, sodass er %p anstelle von %pK verwendet, um die Symboladressen als Benutzer ausgedruckt zu bekommen./proc/kallsyms, um die Adresse des Symbols nsown_capable zu finden, das verwendet wird, um zu identifizieren, ob ein Benutzer, der setuid() aufruft, die Berechtigung dazu hat.nsown_capable, um einfach return true; zu machen, sodass jeder Benutzer setuid() mit beliebiger uid aufrufen kann.setuid(0) und auf.Die Konstanten in der Datei müssen möglicherweise ein wenig geändert werden, um für Ihr System korrekt zu sein; passen Sie sie nach Bedarf an.
system(/bin/sh)