作者:金剛@TSRC

一 漏洞概述

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的這篇博客了解詳情。

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

四 結語

這個漏洞向我們展示了一個新的新攻擊面,通過對常用開發者工具的漏洞利用,達到竊取用戶/公司/系統敏感文件、代碼執行的目的。建議大家不僅要對系統進行日常更新,也要關注常用軟件的更新。

五 參考文章


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/475/