作者:金刚@TSRC
Apktool是Android开发人员常用的工具,可用于反编译、重打包Apk。
近日,国外安全人员披露了早期版本的Apktool存在的两个漏洞细节,一个是XXE漏洞,可造成对用户电脑/系统任意文件的访问;另一个是路径穿越漏洞,可释放、覆盖用户电脑/系统文件、代码执行等危害。
原理:Apktool在解析AndroidManifest.xml文件时,不会禁用外部实体引用,导致存在XML外部实体注入攻击(XXE)漏洞。
利用方式:恶意攻击者通过构造Android应用中的恶意XML文件,用户使用Apktool对该应用进行重打包时,触发XXE漏洞,导致对用户电脑上文件的访问。
以下是利用过程:
先构造恶意AndroidManifest.xml,在其中插入一段访问远程服务器的代码,如下所示:
当用户使用Apktool对这个目录进行重打包生成Apk时,从远程服务器日志可以看出,用户电脑已经静默访问该网站。
研究人员也提供了读取/etc/目录下的文件并将内容回传给远程服务器的PoC代码,如下图所示:
关于XXE漏洞攻击和防护手段,可以访问TSRC的这篇博客了解详情。
原理: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
这个漏洞向我们展示了一个新的新攻击面,通过对常用开发者工具的漏洞利用,达到窃取用户/公司/系统敏感文件、代码执行的目的。建议大家不仅要对系统进行日常更新,也要关注常用软件的更新。