学习了一段工夫的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组件,如下:
这里测试的是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 + """);
……………………
所以可能间接发广播测试:
然后就可能看到手机百度会跳转到 这个地址,并且后台下载地址的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" />