前言:
最近遇到个allowbackup-true的漏洞。在此做一个详细的记录,以下以某app为例,详细描述该漏洞的定义,复现过程及利用方式。
一、定义:
Android官方对于这个属性的定义是,Android API Level 8及其以上Android系统提供了为应用程序数据的备份和恢复功能,此功能的开关决定于该应用程序中AndroidManifest.xml文件中的allowBackup属性的值。当allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险。例如通讯录、通话记录、聊天记录、锁屏密码、应用登录账号和密码等。
二、复现过程:
1.通过Apktool反编译,获取AndroidManifest.xml;
2.分析AndroidManifest.xml文件,查询关键字“allowBackup”,如果存在“android:allowBackup="true"”,则说明该app存在漏洞。
三、利用方式:
1、通过还原备份的数据,窃取用户信息:
① 测试机A(小米2)登录该app,并在其IM 功能中发送信息(主要便于证明漏洞的危害);
② 连上adb, 键入指令:
adb backup -f backhxs.ab -noapk 包名
手机会弹出备份界面,点击备份,等待手机备份完成;
③ 连上测试机B(reno6),且安装测试app;
④ 还原数据:
adb restore backhxs.ab
手机弹出恢复界面,点击恢复数据,等待手机恢复完成;
⑤ B手机打开app查看,发现已经使用A 的账号成功登录,且保留了A 的聊天记录。
2、通过解析备份文件, 窃取用户信息:
adb backup -f backhxs.ab -noapk 包名
Java -jar abe.jar unpack back.ab back.rar
在文件目录中减压back.rar,获取备份文件,逐一阅读文件,获取用户信息,减压后的文件目录如下:
在sp文件夹找到了用户的手机号码,userid,sess_token.
四、总结
用到的相关知识:
1、使用apktool反编译app,获取包名,AndroidManifest.xml等相关信息;
2、使用adb指令备份,还原数据;
3、使用abe工具解析.ab 文件。