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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
unisoc-su — CVE-2025-31710 に対する手法と、cmd_skt に接続して unisoc の未パッチモデルで root シェルを取得する方法 | Kitploit
ツール/GitHubGitHub/skorpion96/unisoc-su
Androidセキュリティ特権昇格脆弱性分析エクスプロイトポストエクスプロイトペネトレーションテストモバイルセキュリティコマンド&コントロールペイロード開発バイナリエクスプロイト
GitHubskorpion96/unisoc-su

unisoc-su

1271925日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2025-31710 に対する手法と、cmd_skt に接続して unisoc の未パッチモデルで root シェルを取得する方法

リポジトリを見る

unisoc-su

CVE-2025-31710 の手法と、cmd_skt 抽象ソケットに接続して unisoc の未パッチモデルで root シェルを取得する方法

皆さんが騒ぐ前に、Unisoc 自身が CVE-2025-31710 の掲示後にこれを公開することを許可してくれましたので、静かにしてください。

ジョークから始めましょう

9u4d2i

はい、夢ではありません。今日は com.sprd.engineermode アプリのシステムシェル用のエクスプロイトを紹介します。これは cmd_skt の信頼されたクライアントの一つでもあるため、私もそれにアクセスできました。この抽象ソケットは root として動作するサービス (cmd_services) の一部です。というわけで、unisoc-su を紹介できることを嬉しく思います。以下は、Ghidra で cmd_services バイナリから抽出した cmd_skt の信頼されたクライアントのリストで、com.sprd.engineermode が含まれていることがわかります。

cmd_services apps

このエクスプロイトには、pascua28 による com.sammy.systools アプリと、TomKing062 による cli-pie を使用します。このアプリには2つのバージョンがあります。1つはシステムシェルから使用するためのさまざまなバイナリを含むもの、もう1つは cli-pie と他のさまざまなソケットに接続するための一部の CLI のみを含むものです(engpc 用には、システムシェルから この スクリプトを source できます。最初に tools.sh を source することをお勧めします)。また、両方のバージョンに Android 9 用(古いデバイス向け)があります。いずれにしても、Apktool M でアプリを再パッケージし、希望のバージョンを選択できます。

この方法の仕組み:まず adb または shizuku rish として UnisocEngSyshell_Enabler_Script.sh を実行し、com.sprd.engineermode アプリを有効にします(新しいモデルでのみ必要)。次に、指示に従ってダイヤラで *#*#83781#*#* を実行してメインアクティビティを起動し、そこから Adb シェルアクティビティに入ります。次に、一方の行に完全な cli-pie の PATH(アプレットを含む)を入力し、もう一方の行に "setprop persist.sys.cmdservice.enable enable" を入力し、可能な限り素早く setprop を先に、次に cli-pie の行で start を押します。すると connected と表示されます。次に setprop アクティビティで end を押してテキストを削除し、"nc -s 127.0.0.1 -p 1234 -L sh -l" またはリバースシェルを実行するために使用するものを入力します。次にターミナルに行き、該当するバイナリで接続し直します。実行されない場合は該当するスクリプトを source するか、単に "nc 127.0.0.1 1234" で接続し、その後 "source /sdcard/Documents/unisoc-su.sh"(またはスクリプトを配置した場所。ただしシステムシェルからアクセス可能である必要があります)を実行します。以上です。すべてが正しければ、root シェルを取得できたことになります。

さて、このエクスプロイトについて説明しましょう。コンテキストは SELinux によって厳重に保護されており、root は取得できても全ての保護はそのままです。この root は他の類似のエクスプロイトのように何も無効にせずに取得できるため、非常に強力です。残念ながら、このコンテキストには SELinux を無効にする十分な力がなく、実行もシステム PATH 上でのみ機能するようです。サービス自体については、Android 9(つまり CVE-2022-47339 パッチ前)では、サービス rc にグループがなくデフォルトで root になりますが、後でグループが追加され(root の gid/groups は削除される)ため、サービスがより制限されたことは明らかです。しかし、SELinux が有効であれば、それがすべてを支配します。サービスの動作について:新しいデバイスでは、サービスは何かが使用するか接続されるまで実行され続けるようです。クライアントが接続されていなかったりコマンドが発行されていない場合、サービスはオフになり、再度オンにするには setprop プロパティが必要になります。サービスはこれをほぼ瞬時に行うため、この方法では setprop を実行してすぐに接続します。Android 9 では、setprop 発行後、サービスはコマンドを待つようです。これが古いデバイスと新しいデバイスの違いのようです。実行後はオフになりますが、もちろん socat または cli-pie で接続する(またはブリッジを実行する)ことも可能で、その場合サービスはその接続によって占有され続けるため、コマンドが提供されなければサービスは無期限に待機し続けます。

違いを示すための Android 13 ユーザー ROM と Android 9 エンジニアリング ROM の cmd_services.rc cmd_services_android13 (user) rc cmd_services_android9 (eng) rc

この手法の着想となった CVE: CVE-2022-47339 (cmd_services) は Lewei Qu(曲乐炜) 氏、CVE-2025-31710 (com.sprd.engineermode system shell) は私によるものです。ただし、Lewei Qu(曲乐炜) 氏も com.sprd.engineermode に関する類似の CVE を持っていたようですが、私は自分のものを見つけた後にそのことを知りました。

さらに後から3つの特別なケースがあります。これらは着想リストには含まれていません。1つ目は再導入された脆弱性で、ここに追加しておきます: CVE-2025-67264 (Doogee com.sprd.engineermode の新しい unisoc モデルにおける不適切なパッチ、こちら で説明) も私によるものです。2つ目は ZTE の新しいモデルに関するもので、すべてに該当するか一部のみかは不明です。com.sprd.engineermode の Adb シェルアクティビティは維持されていましたが、ZTE Blade V70 Vita では CVE-2025-67264 と同じ問題が発生しました。その後 ZTE はアクティビティを削除する代わりに userdebug/eng にロックするパッチを適用しました(自身で気付いたため CVE はなし)。その結果、アプリ UI にはアクティビティが表示されますが、ユーザービルドでは開けないというプロンプトが表示されます。この変更の前と思われる脆弱なデバイスは: ZTE/EEA_P606F17/P606F17:14/UP1A.231005.007/20241231.044538:user/release-keys で、パッチ済みは ZTE/EEA_P606F17/P606F17:14/UP1A.231005.007/20250527.224618:user/release-keys です。同様のことが ZTE Blade A55 でも発生します。これらのモデルは Android 14 を実行しており、そこでは cmd_services が書き直されて tool_service に名前が変更され(アクセス可能なサービスも縮小: com.sprd.engineermode, com.sprd.autoslt, com.sprd.runtime, com.spreadtrum.sgps, com.sprd.validationtools)、この新しいバージョンは常にアクティブで setprop は必要ありません。3つ目は、このリポジトリの脆弱性と類似しており、古い unisoc モデルに影響するもので、こちら で説明されています。

ここでは unisoc-su 用のさまざまなスクリプトを提供しています。チュートリアルなしのもの: unisoc-su.sh、システムシェルだけで root シェルに入るためのガイド付きのもの(この方法はより簡単で、オフラインでも動作し、shizuku/adb は不要): unisoc-su-syshell-only-tut.sh、shizuku/adb を使用して root シェルに入るためのガイド付きのもの(setprop 部分の実行のみに使用): unisoc-su-adb-shizuku-tut.sh、さらにさまざまなソケットに接続するためのバージョンもあります。お好みのものをターミナルから source してください。unisoc-su.sh と最後のものはシステムシェルから source する必要があります。また、ghostroot フォルダ内に tools.sh スクリプトがあり、adb/システム/root と互換性のある PATH にさまざまなディレクトリを追加します。さらに、システムにどの nc があるかわからない場合にシステムシェルを実行するための multi スクリプトもあります。これは接続が成功するまで様々なバイナリから nc を試みます。

さらに、小さな poc app も追加しました。4つのボタンがあるだけのアプリです: cmd_services の root シェルに接続するボタン、システムシェルに接続するボタン、ヘルプボタン、出力クリアボタン、ミニターミナルです。準備は手動で行う必要があるため、安全に使用できます。

GhostRoot について (Post-Exploit Root Channel) RAM 内に存続し、ファイルベースの I/O を介して任意の権限のないアプリからの入力を受け付ける、ステルスなポストエクスプロイトコマンドチャネルです。

このエクスプロイトは Android 13 まで動作します。それ以降のバージョンでは unisoc が EngineerMode アプリから sharedUserId タグを削除したため、現在は通常のユーザーアプリとなり、SELinux が Android 14 以降での cli-pie の実行を拒否するようになりました。

SharedUid-NormalUid_Compare-Patch Image Provided by TomKing062

システムシェルとルートシェルの両方のスクリーンショット

r00t_script6_new_version

cmd_services の root シェルに入るためのビデオチュートリアル

https://github.com/user-attachments/assets/225165d9-fd8b-4558-849a-7b00895ce894

https://github.com/user-attachments/assets/953ed696-f3a1-4556-8756-07bbe555b3ae

ルートシェルに入るさらに簡単な方法(これには com.sprd.engineermode がバックグラウンドで開いている必要があります)

https://github.com/user-attachments/assets/d3eb19db-befa-4136-9bd4-b6bdf9bb8bc7

可能な限り、他の場所に転載しないでください。

アプリアイコンはこちらから取得しました: icon-link、ライセンスはこちら: license-link

ツールをダウンロード