Parcel Bundle漏洞学习
Bundle的序列化细节看上去还是有些复杂的,在之前已经讨论过,一般我们使用Parcel的时候,都是严格的write和read相对应。一些疏漏,不对应,竟然就可以成为漏洞,
https://xz.aliyun.com/t/2364 里介绍了Bundle漏洞的情况,详情可以去查看,
这里补充一些理解,
引用里面的原理图,
Bundle可以存储map键值对,存储 key-value数量 key1 value1 key2 value2 ...
根据key-value数量来控制读的次数,来进行反序列化。
当恶意bundle中存的data有<key, intent>
第一个key-value存储的是有bug的对象,这里是PeriodicAdvertisingReport
@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeInt(syncHandle);dest.writeLong(txPower);dest.writeInt(rssi);dest.writeInt(dataStatus);if (data != null) {dest.writeInt(1);dest.writeByteArray(data.getBytes());} else {dest.writeInt(0);}}private void readFromParcel(Parcel in) {syncHandle = in.readInt();txPower = in.readInt();rssi = in.readInt();dataStatus = in.readInt();if (in.readInt() == 1) {data = ScanRecord.parseFromBytes(in.createByteArray());}}
txPower的读写类型不一致,会造成错位。
系统中的这样有漏洞的Parcelable对象会被这样利用起来作为错位工具。
构造恶意Bundle,使用了特意的组装,而不是调用Parcelable对象里定义的构造方法。
pcelData.writeString("mismatch");pcelData.writeInt(4); // VAL_PACELABLEpcelData.writeString("android.bluetooth.le.PeriodicAdvertisingReport"); // name of Class LoaderpcelData.writeInt(1);//syncHandlepcelData.writeInt(1);//txPowerpcelData.writeInt(1);//rssipcelData.writeInt(1);//dataStatuspcelData.writeInt(1);// flag for data
就这样,错位后的结构中,原内容里的 <key, intent>数据 就冒充了Bundle中的第2个键值对来进行使用。
<key, intent>逃脱了权限检查。
如同这样一个命令字串,
aaaabb'2.cccc
dddd
第一条数据是aaaabb'2.cccc
第二条数据是dddd
当解析错位,以为2.cccc 是第二行,就会以为第二条数据是cccc
这个和sql注入有些相似。
一些不经意的漏洞,就会被别有用心的人利用,甚至做出更加卑劣的行为。
这里可以看出,Parce的读写要规范,不遵守规范,各种机缘巧合或者机关算尽下,就会出现匪夷所思的问题,如下面这个汽车上树。
参考资料
https://xz.aliyun.com/t/2364
https://blog.csdn.net/u010206565/article/details/129020951
Parcel Bundle漏洞学习相关推荐
- Hacking Team Flash 0day漏洞学习笔记
周日的夜晚,与囧桑下载下来Hacking Team之前爆出的flash 0day漏洞,怀着紧张激动的心情,在自己的机子上做了实验,经测试,在我的虚拟机(一个sp3的XP,貌似没装Flash)上根本跑不 ...
- log4j2远程代码执行漏洞学习总结
log4j2远程代码执行漏洞学习总结 背景 近期log4j2的漏洞闹得沸沸扬扬,在工作之余也是找了一些资料看一下相关的内容,到现在网上的总结已经很全了,B站上有各种漏洞复现,各大博客类网站关于JNDI ...
- WEB安全全基础漏洞学习
本文省略了SQL注入和xss漏洞,需要的可以网上找资料,资料非常多 web安全全基础漏洞学习 CSRF 简介 跨站请求伪造 (Cross-Site Request Forgery, CSRF),也被称 ...
- 苹果2017年漏洞学习总结
苹果2017年漏洞学习总结 一. 漏洞资料列举: 1. Yalu102 漏洞编号:CVE-2017-2370 作者:kpwn https://github.com/kpwn/yalu ...
- APP安全漏洞学习笔记
APP安全漏洞学习笔记 本文首先明确了APP安全的目标,然后对常见的APP漏洞进行了整理分析,并研究学习了APK的静态分析与动态分析技术,最后介绍了安卓的渗透测试技术和常见的安全评估工具.附录处整理了 ...
- 漏洞学习之:MS17-010
郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责,共同维护网络文明和谐. 漏洞 ...
- SSRF 漏洞学习实战
3x05 SSRF 漏洞学习实战 文章目录 3x05 `SSRF` 漏洞学习实战 一.ssrf漏洞概念 二.原理 三.SSRF漏洞的危害 四.漏洞检测点 五.ssrf漏洞绕过 六.ssrf漏洞的利用 ...
- %3c xml 和php冲突,[原创]WEB安全第五章 漏洞学习与利用11 xml实体注入
WEB安全第五章 漏洞学习与利用11 xml实体注入 XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击.漏洞是在对非安全的外部实体数 ...
- 个php反序列化漏洞,PHP反序列化漏洞学习(一)
前言:PHP反序列化也是web安全中常见的一种漏洞,这次就先来大致了解一下PHP反序列化漏洞的基础知识. 一.PHP序列化和反序列化 在学习PHP反序列化漏洞时,先来了解一下基础的知识. (一)PHP ...
最新文章
- COALESCE语句解救sql的sum问题
- 如何使用Java中的UTC或GMT获取当前日期和时间?
- Android之 AndroidManifest xml 文件解析
- C++中的对象_纪要(二)
- 神经网络激活函数链接
- 京东商品详情页碎碎念
- java 视频监控 分屏ui_视频监控网页ActiveX视频分屏播放控件开发
- 一个女程序员的创业人生:胆识也是一种能力 作者:秋镇菜
- adapt和adopt的区别_adopt和adapt的区别
- Java常量设计与常量池
- html5之Canvas坐标变换应用-时钟实例
- 你知道 Google X 神秘实验室创始人的故事么?
- [CSS3] :nth-child的用法
- 易语言获取硬盘特征字序列号加密特征字
- 《未来世界的幸存者》笔记
- golang常量与逻辑运算基本语法
- hp服务器u盘安装系统进不了安装界面,hp笔记本开机无法从u盘安装系统
- 联想服务器网卡显示不全,ThinkSystem系列服务器板载1Gb网口及LOM网卡接入100Mb交换机显示无连接...
- 批量添加联系人的方法
- 以太坊宠物商店 - 记录第一个Dapp