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

1083077416 7年前
   <p>Apktool是Android开发人员常用的工具,可用于反编译、重打包Apk。</p>    <p>近日,国外安全人员披露了早期版本的Apktool存在的两个漏洞细节,一个是XXE漏洞,可造成对用户电脑/系统任意文件的访问;另一个是路径穿越漏洞,可释放、覆盖用户电脑/系统文件、代码执行等危害。</p>    <h3>二 漏洞实例</h3>    <p>1. XML外部实体 (XXE) 漏洞</p>    <p>原理:Apktool在解析AndroidManifest.xml文件时,不会禁用外部实体引用,导致存在XML外部实体注入攻击(XXE)漏洞。</p>    <p>利用方式:恶意攻击者通过构造Android应用中的恶意XML文件,用户使用Apktool对该应用进行重打包时,触发XXE漏洞,导致对用户电脑上文件的访问。</p>    <p>以下是利用过程:</p>    <p>先构造恶意AndroidManifest.xml,在其中插入一段访问远程服务器的代码,如下所示:</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/90c4020e8b1541b820ad121a8c85abcc.png"></p>    <p>当用户使用Apktool对这个目录进行重打包生成Apk时,从远程服务器日志可以看出,用户电脑已经静默访问该网站。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/50bd88e8a95aa01616cb9bca860e974b.png"></p>    <p><img src="https://simg.open-open.com/show/54a5de8f16945739ff99b75e1182b23f.png"></p>    <p>研究人员也提供了读取/etc/目录下的文件并将内容回传给远程服务器的PoC代码,如下图所示:</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/489f93ff0af29b7e24ceec2864c68100.png"></p>    <p>关于XXE漏洞攻击和防护手段,可以访问TSRC的这篇博客 <a href="/misc/goto?guid=4959755722713429132" rel="nofollow,noindex">https://security.tencent.com/index.php/blog/msg/69</a> 了解详情。</p>    <p>2.路径穿越漏洞</p>    <p>原理:Apktool在解析apktool.yml文件中的unknownFiles字段时,没有对”../“字符串进行过滤,导路径穿越漏洞。</p>    <p>利用方式:恶意攻击者通过构造恶意apktool.yml文件,在unknownFiles字段中使用包含” ../“的路径,用户使用Apktool对该应用进行反编译时,造成释放、替换用户电脑对应路径下文件,甚至可造成代码执行的危害。</p>    <p>以下是利用过程:</p>    <p>先看一个正常apk反编译后的apktool.yml文件,</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/15d668fff343c7d94439bae04826e96a.png"></p>    <p>接着我们对其中的unknownFiles字段进行修改,添加一个能在apktool解压时穿越到apache服务器路径下的变量,如下图所示,</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/c08a4bc55c8ae64ee08eabc45a6997d7.png"></p>    <p>然后使用apktool对这个修改后的文件夹进行重打包,生成的apk效果如下:</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/1feb63b926702afe478c234bbafe8f3e.png"></p>    <p>当用户下载这个apk,使用apktool对其进行反编译时, shell.php文件会被释放到 /var/www/html 路径下,同理,也可以替换用户其他路径下的文件。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/02c7ca42f66dfe3958ed7a6270794af6.png"></p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/4b682d67d74efbfb96c91f113ec7bdfb.png"></p>    <h3>三 修复建议</h3>    <p>Apktool在 1.5.2-2.2.4 之间的版本受上述漏洞影响,Apktool作者已经在新版本修复漏洞,建议升级至最新版。</p>    <p>Apktool下载链接: <a href="/misc/goto?guid=4959675046116982420" rel="nofollow,noindex">https://bitbucket.org/iBotPeaches/apktool/downloads</a></p>    <h3>四 结语</h3>    <p>这个漏洞向我们展示了一个新的新攻击面,通过对常用开发者工具的漏洞利用,达到窃取用户/公司/系统敏感文件、代码执行的目的。建议大家不仅要对系统进行日常更新,也要关注常用软件的更新。</p>    <p> </p>    <p>来自:https://security.tencent.com/index.php/blog/msg/122</p>    <p> </p>