Code区域:以上代码大家可以网上搜搜自己改改就可以了。

0×02 实验内容 克隆基本思路
User3手机
1、 当启动AppClone时,先判断shared_pfres下有没有用户登录的token,如果有则直接进行successactivity,如果没有则在mainactivity中输入用户名密码进行登录,登录成功保存token。这里使用zhangsan登录。
2、 启动attackapp,主要功能是下载hackserver上sendToken.htm并保存到/sdcard/Download/目录下,等下载完成,对appclone发起外部调用,让successactivity加载/sdcard/Download/sendToken.htm把token传输到hackserver上,hackserver收到token后保存到newfile.txt中。
User4手机
1、 启动AppClone并使用lisi账号登录。
2、 启动startclone,startclone会请求newfile.txt里的token值,然后使用这个token从外部调起APPClone,直接让successactivity接收到的token为zhangsan的token,进而登录张三的个人信息页,从而实现克隆。
0×03 实验步骤
1、启动两个虚拟机:
user3是被克隆的手机,装有两个app(AppClone,准备被克隆的APP,AttackAPP,发起攻击的APP)
user4是用来克隆的手机,装有两个app(AppClone,准备被克隆的APP,StartClone,开始克隆)

2、启动user3上的Appclone,并使用zhangsan登录,登录成功后会进入个人信息页面


3、启动user4上的Appclone,并使用lisi登录,登录成功可以看到张三和李四的个人信息页面里的钱是不一样的。

4、在user3上启动AttackAPP ,这里hackserver上的newfile中是没有数据的

点击开始攻击后数据被上传到hackserver,点击查看文件内容,可以看到被写入的token

5、运行startClone后,可以看到user4的手机也变成了张三的登录状态,克隆成功。

0×04 修改代码
1、如果不开启setJavaScriptEnabled,那么sendToken.htm将无法执行其中的js代码,也就无法将token发送到hackserver上。虚拟sd卡

2、本来看文章说是在js中访问 file:/// 要开启setAllowFileAccessFromFileURLs(true),但是实验下来不需要也可以。虚拟sd卡

3、如果把setAllowUniversalAccessFromFileURLs(true)也注释掉则token传输失败,也就是说不开启它则无法把数据传输给远程服务器。

0×05 实验中遇到的问题及解决思路
1、 sd卡写入权限问题,一开始使用的虚拟机是安卓8.0在AndroidManifest申请好权限,但是无论如何也写入不成功,后来一查发现安卓6.0后需要在代码中动态申请权限,经过尝试之后发现很程度很容易崩溃,一定是我不懂开发的原因,转而换成安卓5.1的虚拟机,直接在AndroidManifest申请权限就可以了。 2、 未开启js访问,无论如何token都不能发送成功,然后把js删除发现htm确实被加载了,想到很有可能是这个原因,于是补上了webSettings.setJavaScriptEnabled(true);问题解决了。 3、 网络访问(下载)需要异步请求,不然程序也会出问题。0×06 修复建议
通过实验发现做到以下几点,都可以防范:
1、webview不开启webSettings.setJavaScriptEnabled(true);
2、webview不开启setAllowUniversalAccessFromFileURLs(true)
还有之前文章中提到的:
1、 设置activity不可被导出
2、 禁止WebView 使用 File 协议,而且是明确禁止
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-85138-8.html
和平时期