移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析
作者:媒体转发 时间:2018-10-15 09:59
MobSF 一款智能化、一体化的开源移动应用(Android / iOS/Windows Phone)自动测试框架(详见:),通过框架自带的Web接口上传待分析的移动应用包,就可以自动有效、快速地对应用APK 和IPA文件 及压缩的源代码进行审计分析, 并给出分析报告。在研究MobSF 框架使用的过程中,发现github的问题列表上有人曝出0.9.4.2 以下的版本web 上传接口对上传的apk包zip解压的时候存在漏洞可导致任意文件写入,引发潜在的代码执行漏洞,本文以0.9.3.7 Beta版本为例进行复现与分析,详文如下。
0×01. 复现 1.安装MobSF 0.9.3.7需要事先安装好JDK1.7。
然后下载MobSF 0.9.3.7,解压,在其目录下执行pip install -r requirements.txt。
最后运行:python manage.py runserver 0.0.0.0:8080。


打开MobSF的web接口(基于Django开发):


选择事先准备好的漏洞测试验证压缩包,上传分析:


上图表示任意文件写入成功,因为系统处于开发模式下运行,故会自动重载,然后执行__init__.py中的命令(任意文件写入成功,下图,导致代码执行,上图)


查看/root/MobSF/StaticAnalyzer/__init__.py 确实被写入了内容:print ‘Webcome to FreeBuf!
0×02. 分析先来了解一下MobSF的系统代码结构:


上传功能对应的接口/upload:


/upload接口对应的视图函数:


跟进MobSF.views.upload ,如下:


上传接口的主要功能就是校验文件,然后计算上传文件的MD5值,在响应包中指明即将跳转至静态扫描接口的完整路径,也即如下图所示接口:


开始分析/StaticAnalyzer/ 接口:


静态分析接口位于StaticAnalyzer 模块的android.static_analyzer.static_analyzer视图函数中,跟进:






