Android开发工具Apktool漏洞利用分析

一 漏洞概述

Apktool是Android开发人员常用的工具,可用于反编译、重打包Apk。

近日,国外安全人员披露了早期版本的Apktool存在的两个漏洞细节,一个是XXE漏洞,可造成对用户电脑/系统任意文件的访问;另一个是路径穿越漏洞,可释放、覆盖用户电脑/系统文件、代码执行等危害。

二 漏洞实例

1. XML外部实体 (XXE) 漏洞

原理:Apktool在解析AndroidManifest.xml文件时,不会禁用外部实体引用,导致存在XML外部实体注入攻击(XXE)漏洞。

利用方式:恶意攻击者通过构造Android应用中的恶意XML文件,用户使用Apktool对该应用进行重打包时,触发XXE漏洞,导致对用户电脑上文件的访问。

以下是利用过程:

先构造恶意AndroidManifest.xml,在其中插入一段访问远程服务器的代码,如下所示:

当用户使用Apktool对这个目录进行重打包生成Apk时,从远程服务器日志可以看出,用户电脑已经静默访问该网站。

研究人员也提供了读取/etc/目录下的文件并将内容回传给远程服务器的PoC代码,如下图所示:

关于XXE漏洞攻击和防护手段,可以访问TSRC的这篇博客 https://security.tencent.com/index.php/blog/msg/69了解详情。

2.路径穿越漏洞

原理:Apktool在解析apktool.yml文件中的unknownFiles字段时,没有对”../“字符串进行过滤,导路径穿越漏洞。

利用方式:恶意攻击者通过构造恶意apktool.yml文件,在unknownFiles字段中使用包含” ../“的路径,用户使用Apktool对该应用进行反编译时,造成释放、替换用户电脑对应路径下文件,甚至可造成代码执行的危害。

以下是利用过程:

先看一个正常apk反编译后的apktool.yml文件,

接着我们对其中的unknownFiles字段进行修改,添加一个能在apktool解压时穿越到apache服务器路径下的变量,如下图所示,

然后使用apktool对这个修改后的文件夹进行重打包,生成的apk效果如下:

当用户下载这个apk,使用apktool对其进行反编译时, shell.php文件会被释放到/var/www/html路径下,同理,也可以替换用户其他路径下的文件。

三 修复建议

Apktool在1.5.2-2.2.4之间的版本受上述漏洞影响,Apktool作者已经在新版本修复漏洞,建议升级至最新版。

Apktool下载链接: https://bitbucket.org/iBotPeaches/apktool/downloads

四 结语

这个漏洞向我们展示了一个新的新攻击面,通过对常用开发者工具的漏洞利用,达到窃取用户/公司/系统敏感文件、代码执行的目的。建议大家不仅要对系统进行日常更新,也要关注常用软件的更新。

五 参考文章:

ParseDroid: Targeting The Android Development & Research Community
https://research.checkpoint.com/parsedroid-targeting-android-development-research-community/
Apktool v2.2.4 Released
https://connortumbleson.com/2017/07/29/apktool-v2-2-4-released/

 

转载自:https://security.tencent.com/index.php/blog/msg/122    原文作者:腾讯金刚