热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

MobSF一款智能化、一体化的开源移动应用(AndroidiOSWindowsPhone)自动测试框架(详见:需要事先

*本文原创作者:ForrestX386,本文属于FreeBuf原创奖励计划,未经允许禁止转载

0×00. 引言

MobSF 一款智能化、一体化的开源移动应用(Android / iOS/Windows Phone)自动测试框架(详见: http://www.freebuf.com/terminal/141439.html ),通过框架自带的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多个版本静态分析接口存在的任意文件写入漏洞复现与分析

2.漏洞测试

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

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

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

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

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

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

查看/root/MobSF/StaticAnalyzer/__init__.py 确实被写入了内容:print ‘Webcome to FreeBuf!

0×02. 分析

先来了解一下MobSF的系统代码结构:

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

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

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

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

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

跟进MobSF.views.upload ,如下:

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

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

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

开始分析/StaticAnalyzer/ 接口:

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

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

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

最终回调用Unzip函数对上传的apk文件进行解压缩,问题就出在这个函数中,这函数位于MobSF安装路径/StaticAnalyzer/views目录下的shared_func.py 模块中(这个路径对于构造漏洞验证压缩包有用), 核心代码如下:

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

看到这里就知道为啥能任意文件写入了,虽然Django 框架中的request.FILES对象会对上传文件的文件名进行过滤处理,使得形如../../../的目录穿越失效(详见: http://www.freebuf.com/articles/web/183125.html ),导致无法任意目录写入文件,但是request.FILES 不会对压缩包内的文件进行过滤,业务代码逻辑中也未对压缩包内的文件名进行过滤,从而导致漏洞的发生。

因为漏洞验证环境中,MobSF系统处于开发模式下,因为代码文件有变动,导致系统会自动重载,执行写入到StaticAnalyzer模块__init__.py文件的代码,也即执行:print ‘Webcome to FreeBuf!

如果写入到__init__.py中的代码是一段反弹 shell 代码,那么就存在任意代码执行导致获取系统shell的可能。

0×03. 不足与突破之策

0×02节中最终分析的结果是:导致任意代码执行的前提是:系统处理开发模式,写入代码后会导致系统重载触发代码执行。

不过在正式环境中,系统一般不会处于开发模式,所以被写入的代码不会被执行。

怎么提高恶意代码被执行的概率呢?

换个思路,不一定非要写入MobSF系统文件中,也可以写入到 python 安装包中,比如pip中。

则会将恶意代码写入到pip工具的__init__.py 中,下次执行pip 安装模块的时候就会触发恶意代码执行。

如果MobSF系统运行的权限是root,直接写入/root/.ssh/authorized_keys 获取root shell 也是完全可能的。

0×04. 如何修复

看下官方是怎么修复的,看些bug fix 的commit:

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

直接用z.extract函数将zip压缩包中的文件解压缩保存至指定目录,为啥extract 就是安全的呢?看下官方文档说明:

移动安全自动化测试框架MobSF多个版本静态分析接口存在的任意文件写入漏洞复现与分析

注意红框中内容,其意思是说extract函数会自动将目录穿越符和UNC符号过滤掉,所以就没有任意文件写入啥事了。

0×05. 参考

https://docs.python.org/2/library/zipfile.html#zipfile.ZipFile.extract

https://ajinabraham.com/blog/exploiting-insecure-file-extraction-in-python-for-code-execution

*本文原创作者:ForrestX386,本文属于FreeBuf原创奖励计划,未经允许禁止转载


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 我们


推荐阅读
  • XAMPP 遇到 404 错误:无法找到请求的对象
    在使用 XAMPP 时遇到 404 错误,表示请求的对象未找到。通过详细分析发现,该问题可能由以下原因引起:1. `httpd-vhosts.conf` 文件中的配置路径错误;2. `public` 目录下缺少 `.htaccess` 文件。建议检查并修正这些配置,以确保服务器能够正确识别和访问所需的文件路径。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 本文介绍了如何使用 CMD 批处理脚本进行文件操作,包括将指定目录下的 PHP 文件重命名为 HTML 文件,并将这些文件复制到另一个目录。 ... [详细]
  • Android开发技巧:使用IconFont减少应用体积
    本文介绍如何在Android应用中使用IconFont来显示图标,从而有效减少应用的体积。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射)
    提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射) ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 卓盟科技:动态资源加载技术的兼容性优化与升级 | Android 开发者案例分享
    随着游戏内容日益复杂,资源加载过程已不仅仅是简单的进度显示,而是连接玩家与开发者的桥梁。玩家对快速加载的需求越来越高,这意味着开发者需要不断优化和提升动态资源加载技术的兼容性和性能。卓盟科技通过一系列的技术创新,不仅提高了加载速度,还确保了不同设备和系统的兼容性,为用户提供更加流畅的游戏体验。 ... [详细]
author-avatar
郭雪峰Rongeqw_983
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有