apktool
首页
文章
漏洞
SRC导航
内容精选
输入关键词搜索
APP 登录| 注册
Apktool未正确解析XML导致的XXE漏洞分析
阅读量 40668 | 评论 3
分享到: QQ空间 新浪微博 微信 QQ facebook twitter
发布时间:2017-12-07 15:55:12
简介
Apktool未正确解析XML导致XXE漏洞。以下做一个简单的分析和演示Apktool在进行回编译操作时产生XXE漏洞的过程。
漏洞描述
潜在的攻击者可通过构造XML文件,在受影响版本的Apktool对该XML文件解析时触发,造成受害者电脑上任意文件的访问。
演示
从Apktool的Github项目下载受影响的apktool_2.2.2.jar(https://github.com/iBotPeaches/Apktool/releases/download/v2.2.2/apktool_2.2.2.jar)
使用受影响的Apktool版本v2.2.2进行回编译打包的过程中触发XXE漏洞。
java -jar ~/Downloads/apktool_2.2.2.jar b ApkIDE_test -o ApkIDE_test_modified1.apk
而使用刚修复的版本v2.2.3 commit f19317d87c316ed254aafa0a27eddd024e25ec6c 进行回编译打包时
则产生以下提示:
从而修复了漏洞。
漏洞分析
先来一张修复之后的commit的diff图
https://github.com/iBotPeaches/Apktool/commit/f19317d87c316ed254aafa0a27eddd024e25ec6c#diff-84f49a5539f89dd92ae7ff22216416d9
在 brut.apktool/apktool-lib/src/main/java/brut/androlib/res/xml/ResXmlPatcher.java
这里加了一句:
docFactory.setFeature(FEATURE_DISABLE_DOCTYPE_DECL, true);
private static final String FEATURE_DISABLE_DOCTYPE_DECL = "http://apache.org/xml/features/disallow-doctype-decl";
作者的log为“Prevent doctypes declarations”,即不允许XML中的doctypte声明了。
这里作者还专门增加了一个
brut.apktool/apktool-lib/src/test/java/brut/androlib/ExternalEntityTest.java
配合一个测试用的payload
brut.apktool/apktool-lib/src/test/resources/brut/apktool/doctype/AndroidManifest.xml
作为检测XXE的测试。
代码追踪
当我们使用这个命令
java -jar ~/Downloads/apktool_2.2.2.jar b ApkIDE_test -o ApkIDE_test_modified1.apk
进行回编译打包时,
在brut.apktool.Main类的main()方法中,对命令行参数进行解析,若使用b选项,则调用cmdBuild()方法,
cmdBuild()方法对命令行的-o(指定输出目录)等进行解析,并最终调用Androlib的build()方法,将命令行中待回编译打包的目录(例子中是ApkIDE_test)和最终生成的apk文件的路径,作为参数传入Androlib的build(ExtFile appDir, File outFile)方法。
在Androlib的build(ExtFile appDir, File outFile)方法中,
先对AndroidManifest.xml进行了备份,然后调用brut.androlib.res.xml.ResXmlPatcher类的
fixingPublicAttrsInProviderAttributes()方法对传入的manifest文件进行解析。
fixingPublicAttrsInProviderAttributes()调用了loadDocument(file)方法
而loadDocument(file)未对传入的file进行检查和限制就执行了parse(file),直接对AndroidManifest.xml文件进行解析。
于是恶意攻击者可构造恶意的AndroidManifest.xml使得安全分析人员调用Apktool的b选项进行回编译打包时,触发XXE漏洞。
而修复版(参考上面的diff)正是在这里增加了一个setFeature()方法,
docFactory.setFeature(FEATURE_DISABLE_DOCTYPE_DECL, true);
从而避免了由于对DOCTYPE的解析导致的XXE漏洞。
已知受影响版本
Apktool v2.2.1 https://github.com/iBotPeaches/Apktool/releases/download/v2.2.1/apktool_2.2.1.jar
Apktool v2.2.2: https://github.com/iBotPeaches/Apktool/releases/download/v2.2.2/apktool_2.2.2.jar
给开发者和安全分析人员的建议
使用apktool v2.2.3及其以上版本;
检查所有集成了apktool的工具,确保其依赖的apktool在v2.2.3及其以上版本。
参考:
https://research.checkpoint.com/parsedroid-targeting-android-development-research-community/
http://www.theregister.co.uk/2017/12/06/java_and_android_vulns/
http://www.wjdiankong.cn/android%E9%80%86%E5%90%91%E4%B9%8B%E6%97%85-%E5%8F%8D%E7%BC%96%E8%AF%91%E5%88%A9%E5%99%A8apktool%E5%92%8Cjadx%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%BB%A5%E5%8F%8A%E9%94%99%E8%AF%AF%E7%BA%A0/
本文由安全客原创发布
转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/89316
安全客 - 有思想的安全新媒体
漏洞分析 apktool XXE
77caikiki 官方小编 分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
2018安恒杯11月赛-Web&Crypto题解
2018-11-26 10:02:02
U2F安全协议分析
2018-11-24 10:00:48
二十年重回首——CIH病毒源码分析
2018-11-23 15:20:19
Cookie Maker:隐藏在Google Docs中的恶意网络
2018-11-23 14:30:40
|发表评论
发表你的评论吧
昵称
吃瓜群众
换一个
|评论列表
thinkthinkthink · 2017-12-16 23:53:08 回复
请问这个commit id是哪儿来的?在commit记录中并没有找到这个commit信息:84f49a5539f89dd92ae7ff22216416d9 https://github.com/iBotPeaches/Apktool/search?q=84f49a5539f89dd92ae7ff22216416d9&type=Commits&utf8=
熊猫烧香作者 · 2018-01-01 00:42:34 回复
84f494那个不是commit id吧,不知道从哪里乱入的。。。f19317那个才是commit id
thinkthinkthink · 2017-12-16 23:54:19 回复
根据前一次commit记录来diff,也可以看到相同的diff信息:https://github.com/iBotPeaches/Apktool/commit/f19317d87c316ed254aafa0a27eddd024e25ec6c#diff-2a351254412ed518c280f56b485115ff289509fb
77caikiki
这个人太懒了,签名都懒得写一个
文章
67
粉丝
10
TA的文章
1月14日安全热点–本周威胁汇总/CVE-2017-3737 openssl漏洞分析
2018-01-14 11:20:44
1月13日安全热点–Intel的AMT安全问题/DNS篡改恶软OSX/MaMi
2018-01-13 11:07:54
1月12日安全热点–补丁之后Intel芯片性能/D-Link路由器代码执行
2018-01-12 11:00:27
1月11日安全热点–Meltdown/Spectre漏洞补丁影响
2018-01-11 11:00:31
1月10日安全热点–微软一月安全公告解读
2018-01-10 11:10:51
输入关键字搜索内容
相关文章
【缺陷周话】第11期:释放后使用(UAF)
CVE-2018-16323:如何利用 ImageMagick内存泄漏
【缺陷周话】第10期:反射型 XSS
VBScript引擎远程代码执行漏洞之CVE-2018-8174分析与利用(更新)
活动 | 破壳学院《代码审计7天体验营》
漏洞预警 | Adobe ColdFusion远程命令执行漏洞预警(CVE-2018-15961)
被遗漏的0day ? —APT-C-06组织另一网络武器库分析揭秘
热门推荐
文章目录
简介
漏洞描述
演示
漏洞分析
代码追踪
已知受影响版本
给开发者和安全分析人员的建议
参考:
安全客Logo
安全客
安全客
关于我们
加入我们
联系我们
用户协议
商务合作
合作内容
联系方式
友情链接
内容须知
投稿须知
转载须知
合作单位
安全客
安全客
Copyright © 360网络攻防实验室 All Rights Reserved 京ICP备08010314号-66
Loading...0daybank
文章评论