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
四 結語
這個漏洞向我們展示了一個新的新攻擊面,通過對常用開發者工具的漏洞利用,達到竊取用戶/公司/系統敏感文件、代碼執行的目的。建議大家不僅要對系統進行日常更新,也要關注常用軟件的更新。
來自:https://security.tencent.com/index.php/blog/msg/122