记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

Android App安全测试[入门篇]

2014-01-02 23:15

    今天上一篇西门吹雪@yunday.org分享的andriod安全测试的文章,也欢迎大家给我投稿。

    学习了一段时间的android应用程序app安全,给自己小结一下。对于一款android的apk程序,我主要进行的测试分两部分,接口测试和android组件测试。接口测试实际上是常见的web安全测试,组件测试实际上是android应用程序内部使用组件的安全测试。如下描述:

0×01 接口测试

    我这里测试的是联网的android应用程序,即内部封装了一系列web应用操作接口,实际测试跟常规的web安全测试没有区别。只不过由于实际的不安全wifi环境,对于移动app调用web接口,涉及到敏感的用户信息,包括用户名,密码,微博的gisd等使用http明文传输,都会造成比较严重的信息泄露。

0×02 组件测试:

    对于android组件测试,就涉及到了apk反汇编的一些知识了,我主要使用的工具有小米人apk改之理以及drozer,通过这两个小工具来反编译apk是很方便滴。我们安全测试的会涉及的组件包括WebView,和android四大组件Activity、Service、Broadcast Receiver、Content Provider;

    测试WebView的方法用的是乌云知识库里面发表的那种方法,反编译apk文件,使用小米人apk改之理或者apktool都可以反编译成smali汇编,然后查找addJavascriptInterface,对导出接口进行测试,一般情况下,可以直接使用黑盒测试的方法,即让app访问:黑盒测试;关于webview的一个典型的漏洞细节你也可以查看乌云知识库

    测试四大组件就可以使用drozer这款工具,测试利用起来都非常方便,自我感觉drozer列举的apk的组件都是获取AndroidManifest.xml里面声明的,所以不是很全面,对于程序代码里面动态创建滴,还是需要反编译查看smali代码,或者还原smali成java代码,当然还原的java代码是也是jd-gui根据生成的smali自动生成的,存在一定的区别。下面大致讲讲如果测试组件的漏洞。这里实例是手机百度版本4.9,最新版是5.0。

    手机百度4.9使用Broadcast Receiver、Content Provider这两个组件存在一定的问题。使用drozer比较简单,进入了界面使用list,需要哪个就run哪个,怎么用help哪个,so easy!

0×03 测试Broadcast Receiver

首先查看一下手机百度使用的Receiver组件,如下:

123123这里测试的是com.baidu.searchbox.story.DownloadStoryReceiver 这个receiver组件,这里列举的receive主要是因为AndroidManifest.xml存在如下这段代码

<receiver android:name=".story.DownloadStoryReceiver" android:exported="true">

android:exported="true"表示能接收外部广播因为一看就是下载,然后跟进这个类里面,查看onReceive处理方法,直接查看还原的java代码,有如下片断:

public void onReceive(Context paramContext, Intent paramIntent)

  {

    this.b = paramContext;

    this.d = paramIntent.getStringExtra("download_url");

    this.c = paramIntent.getStringExtra("display_url");

    if ((TextUtils.isEmpty(this.d)) || (TextUtils.isEmpty(this.c)))

      if (g)

        Log.e(h, "Invalid param! download_url or display_url cannot be empty.");

    while (true)

    {

      return;

      String str1 = paramIntent.getStringExtra("filename");

      this.f = ("Content-Disposition","attachment; filename="" + str1 + """);

     ……………………

所以可以直接发广播测试:

1231231111111111然后就可以看到手机百度会跳转到 http://tea504.sinaapp.com 这个地址,并且后台下载http://tea504.sinaapp.com/xss.js地址的xss.js文件,本地保存为test.xxx

0×04 测试Content Provider

    这个是负责数据存储,使用的是sqlite数据库,基本上都存在sql注入,一般能够被外界调用都很危险,查看AndroidManifest.xml存在代码:

<provider android:name=".bookmark.BookmarkProvider" android:writePermission="com.baidu.permission.write_bookmark" android:exported="true" android:authorities="baidusearch_bookmark" />

又是android:exported=”true”,并且只限制了writePemission权限,所以可以恶意app还是可以获取这个读取这个数据库的信息,baidusearch_bookmark记录的是用户浏览历史记录和书签,如下:

这是我手机上的 /data/data/com.baidu.searchbox/databases/SearchBox.db 数据库里面的数据

333333333然后就可以访问这个uri获取数据测试,如下:

444

如上 第一次sql语句写错了,提示报错。第二次可以成功查询

当然对于这种组件安全,需要使用恶意app进行攻击,感觉危害略低!

0×05

    这里介绍的主要是一些入门的东西,后面将带来进阶篇,将会有更深入的分析,敬请期待~

 

————————————————–

AuthorID:西门吹雪@yunday.org

http://www.yunday.org

微信公共账号:G大调的安全

微信ID:Gsecurity

qrcode_for_gh_a14e70f09ba7_258

分享到:更多
知识来源: www.yunday.org/index.php/archives/81

阅读:651463 | 评论:1 | 标签:android安全

想收藏或者和大家分享这篇好文章→复制链接地址

“Android App安全测试[入门篇]”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云