3.1 数据存储漏洞

用户经常会把敏感数据交给app,比如:
用户名and密码
认证令牌
联系人记录
通信记录
历史使用记录
.....

只要愿意,app可以收集这些用户的隐私和个人信息明文存储或明文传输,通常保存在本地,也不排除上传到网络
• 本地保存
• 网络保存

本地保存

• SharedPreferences
data/data/程序包名/shared_prefs/*.xml
创建配置文件时没有使用MODE_PRIVATE模式,导致其他程序可以读取配置文件,root用户可读

• SQLiteDatabases

data/data/程序包名/database/*.db
创建数据库时没有使用MODE_PRIVATE模式

• InternalStorage

data/data/程序包名/files/*
没有使用MODE_PRIVATE模式

• ExternalStorage

/mnt/sdcard/*

扩展阅读
http://www.droidsec.cn/android-database配置模式安全风险浅析/
http://www.droidsec.cn/android本地数据存储:internal-storage安全风险浅析/

3.2 组件暴露漏洞

1、android:exported

四大组件中都有的一个属性:android:exported
export为true,表示可以被外部调用;export如果为false,表示不可以被外部调用
<activity
android:name=".PartActivity"
android:theme="@android:style/Theme.Dialog"
android:export="true">
</activity>

在定义四大组件时,经常是不写export这个标签的,系统默认的export是什么?
如果四大组件包含intent-filter,那么Android系统认为这个组件可以被外部通过隐式调用,所以默认export为true
如果四大组件不包含intent-filter,那么Android系统认为这个组件值只可以被内部通过显式调用,所以默认export为false

2、简单测试

adb forward tcp:31415 tcp:31415
drozer console connect

确定攻击面
run app.package.attacksurface 包名
获取activity信息
run app.activity.info –a包名
启动activity
run app.activity.start --component包名 包名.XXActivity

绕过认证
activity暴露后被第三方调用,可能在没有密码的情况下登录/重置密码

越权行为
低权限程序通过调用高权限程序暴露的组件,执行高权限动作

3、组件的权限控制

为了增加四大组件的安全,可以定义访问某个组件需要某个权限
<activity
android:name=".PartActivity"
android:theme="@android:style/Theme.Dialog" >
android:permission="com.example.test.permission"
</activity>

<permission android:name="com.example.test.permission"
android:protectionLevel="dangerous"
android:label="test"
android:description="test_permission" />

如果需要使用必须在AndroidManifest.xml,通过申请权限
调用组件者声明:<uses-permission android:name="com.example.test.permission" />
android:protectionLevel,如果是Signature,那么只有和这个应用使用相同私钥签名的应用才可以申请这个权限。

扩展阅读
https://bugs.secquan.org/bugs/WooYun-2014-48501
http://www.droidsec.cn/content-provider文件目录遍历漏洞浅析/

3.3 APP中的SQL注入漏洞

连接上模拟器/真机

nox_adb.exe connect 127.0.0.1:62001

端口转发,转发到Drozer使用的端口31415
adb forward tcp:31415 tcp:31415

开启Drozer console
drozer console connect

获取Content Provider信息
run app.provider.info -a com.qijia.o2o

定位到small代码com.qijia.o2o.provider.CityProvider
content://com.qijia.o2o

检测sql注入
run scanner.provider.injection -a com.qijia.o2o
Not Vulnerable:
content://com.tencent.mm.sdk.plugin.provider/sharedpref/
content://com.sina.weibo.sdkProvider/query/package
content://com.tencent.mm.sdk.comm.provider/jumpToBizProfile
content://downloads.com.qijia.o2o
content://telephony/carriers/preferapn/
content://com.tencent.mm.sdk.comm.provider/openRankList
content://com.tencent.mm.sdk.comm.provider/joinChatroom/
content://com.tencent.mm.sdk.comm.provider/createChatroom/
content://downloads./
content://com.tencent.mm.sdk.comm.provider/addCardToWX/
content://com.qijia.o2o/full/
content://com.qijia.o2o/children
content://com.qijia.o2o/children/
content://com.qijia.o2o/
content://com.sina.weibo.sdkProvider/query/package/
content://telephony/carriers/preferapn
content://com.tencent.mm.sdk.comm.provider/openBusiLuckyMoney
content://downloads.com.qijia.o2o/
content://com.tencent.mm.sdk.comm.provider/jumpToBizTempSession/
content://com.tencent.mm.sdk.comm.provider/jumpToBizProfile/
content://orm
content://com.qijia.o2o/full
content://com.tencent.mm.sdk.comm.provider/addCardToWX
content://com.tencent.mm.sdk.comm.provider/joinChatroom
content://orm/
content://com.tencent.mm.sdk.comm.provider/jumpToBizTempSession
content://com.tencent.mm.sdk.plugin.provider/sharedpref
content://com.tencent.mm.sdk.comm.provider/createChatroom
content://com.tencent.mm.sdk.comm.provider/openWebview/
content://com.qijia.o2o
content://com.tencent.mm.sdk.comm.provider/openRankList/
content://com.tencent.mm.sdk.comm.provider/openWebview
content://downloads.
content://com.tencent.mm.sdk.comm.provider/openBusiLuckyMoney/

Injection in Projection:
content://com.qijia.o2o/provinces
content://com.qijia.o2o/provinces/

Injection in Selection:
content://com.qijia.o2o/provinces
content://com.qijia.o2o/provinces/

使sql语句报错
run app.provider.query content://com.qijia.o2o/provinces --projection "'"
unrecognized token: "' FROM areas WHERE parent = ''" (code 1): , while compilin
g: SELECT ' FROM areas WHERE parent = ''

开启一个web服务,可以和手机上的content provider连接,还可以和sqlmap联合使用
run auxiliary.webcontentresolver

http://localhost:8080/query?uri=content://com.qijia.o2o/provinces&projection='
SELECT ' FROM areas WHERE parent =

http://localhost:8080/query?uri=content://com.qijia.o2o/provinces&projection=*#
SELECT ‘ FROM areas WHERE parent =

SELECT * FROM areas WHERE parent =

3.4 本地拒绝服务攻击漏洞

Android应用本地拒绝服务漏洞源于程序没有对Intent.getXXXExtra()获取的异常或者畸形数据处理时没有进行异常捕获

攻击者通过intent发送空数据、异常或畸形数据给受害者应用,导致其崩溃

本地拒绝服务漏洞不仅可以导致安全防护等应用的防护功能被绕过或失效(如杀毒应用、安全卫士、防盗锁屏等)

而且也可被竞争方应用利用来攻击,使得自己的应用崩溃,造成不同程度的经济利益损失

测试
确定攻击面
dz> run app.package.attacksurface 包名
获取activity信息
dz> run app.activity.info -a com.nineteenlou.nineteenlou
启动activity
dz> run app.activity.start --component com.nineteenlou.nineteenlou com.tencent.tauth.TAuthView
获取广播组件信息
run app.broadcast.info -a 包名
向广播组件发送空action
dz> run app.broadcast.send --component包名 广播组件名

详细分析和修复
Android客户端信息泄露以及拒绝服务漏洞
https://bugs.secquan.org/bugs/WooYun-2015-119959

https://www.secpulse.com/archives/3859.html

3.5 allowbackup备份风险

AndroidManifest.xml 配置文件中显式配置了android:allowBackup=true
备份
adb backup -f E:\back.ab -noapk 包名
可以输入密码也可以不输入

使用android-backup-extractor(abe)工具来解析ab文件
https://github.com/nelenkov/android-backup-extractor/releases

java -jar abe.jar unpack back.ab applock.tar

SmartLockConfig.xml

实际案例:
某密码锁未root备份:https://blog.csdn.net/qq_31387043/article/details/51452782
微博app备份:https://blog.csdn.net/chuyouyinghe/article/details/53609806

3.6 activity 劫持

用户打开安卓手机上的某一应用,进入到登陆页面
这时,恶意软件侦测到用户的这一动作,立即弹出一个与该应用界面相同的Activity,覆盖掉了合法的Activity
用户几乎无法察觉,该用户接下来输入用户名和密码的操作其实是在恶意软件的Activity上进行的

Activity劫持实例与防护手段
http://blog.chinaunix.net/uid-29170659-id-4930737.html

3.7 webview明文存储,代码执行,同源策略等其他漏洞

WebView

现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等

功能是由 Android的WebView 实现的
WebView 使用过程中存在许多漏洞,容易造成用户数据泄露等等危险

webview-file域同源策略

http://www.droidsec.cn/webview-file域同源策略绕过漏洞浅析/

WebView 明文存储

案例:https://bugs.secquan.org/bugs/WooYun-2013-20246
WebView默认开启密码保存功能 :

myWebView.setSavePassword(true)

WebView代码执行

https://www.52pojie.cn/thread-322022-1-1.html
https://blog.csdn.net/u012195899/article/details/68942725

WormHole虫洞漏洞

https://blog.csdn.net/jltxgcy/article/details/50686858

应用克隆漏洞分析 https://blog.csdn.net/xwh_1230/article/details/79045251

3. 移动安全渗透测试-(Android基础漏洞)的更多相关文章

  1. Android渗透测试Android渗透测试入门教程大学霸

    Android渗透测试Android渗透测试入门教程大学霸 第1章  Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...

  2. python渗透测试入门——基础的网络编程工具

    <Python黑帽子--黑客与渗透测试编程之道学习>这本书是我在学习安全的过程中发现的在我看来十分优秀的一本书,业内也拥有很高的评价,所以在这里将自己的学习内容分享出来. 1.基础的网络编 ...

  3. 2019-10-9:渗透测试,基础学习the-backdoor-factory-master(后门工厂)初接触

    该文章仅供学习,利用方法来自网络文章,仅供参考 the-backdoor-factory-master(后门工制造厂)原理:可执行二进制文件中有大量的00,这些00是不包含数据的,将这些数据替换成pa ...

  4. 2019-9-28:渗透测试,基础学习,pgp常量,逻辑运算,DNS投毒,笔记

    sunny.exe clientid 隧道ID route -n 查看网关netstat -rn 查看网关 DNS劫持ettercap用来内网渗透测试使用,可以嗅探内网,DNS劫持等攻击1,在攻击者电 ...

  5. 2019-9-25:渗透测试,基础学习,medusa爆破学习

    Medusa(美杜莎)暴力破解使用 该文章仅供学习,利用方法来自网络文章,仅供参考 一.简介 medusa(美杜莎)是一个速度快,支持大规模并行,模块化,爆破登陆,可以同时对多个主机,用户或是密码执行 ...

  6. 2019-9-20:渗透测试,基础学习,笔记,metasploit的基础使用

    使用kali下metasploit生成木马,控制windows系统 kali基于debin的数字取证系统,上面集成了很多渗透测试工具,前身为bt r3(BrackTrack) Metasploit,是 ...

  7. 【入门推荐】SQL注入进行WebShell渗透测试的基础概览

    作者:zero 本文为SQL基本注入的进阶文章,如有任何疑问请查看: SQL基本注入演示:https://www.cnblogs.com/anbus/p/10082452.html 导语: 利用SQL ...

  8. metasploit 渗透测试笔记(基础篇)

    0x00 背景 笔记在kali linux(32bit)环境下完成,涵盖了笔者对于metasploit 框架的认识.理解.学习. 这篇为基础篇,并没有太多技巧性的东西,但还是请大家认真看啦. 如果在阅 ...

  9. Web渗透测试(xss漏洞)

    Xss介绍—— XSS (cross-site script) 跨站脚本自1996年诞生以来,一直被OWASP(open web application security project) 评为十大安 ...

随机推荐

  1. 1_Swift概况

    Swift 标准库 解决复杂的问题并编写高性能,可读的代码 概况 Swift标准库定义了用于编写Swift程序的基本功能,其中包括 1.如基本数据类型Int,Double以及String 2.共同的数 ...

  2. INSTALL_FAILED_TEST_ONLY

    查看博客:http://www.enjoytoday.cn/posts/159 Android studio安装apk无法安装,报错误,网上搜索可以看到都说是:* 调用者不被允许测试的测试程序*,但具 ...

  3. 一文解读AI芯片之间的战争 (转)

    2015年的秋天,北京的雨水比往年要多些,温度却不算太冷.这一年里,年仅23岁的姚颂刚刚拿到清华大学的毕业证书;32岁的陈天石博士毕业后已在中科院计算所待了整整8年;而在芯片界摸爬滚打了14年的老将何 ...

  4. Linux 查看端口机服务

    Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 2.2.netstat -tunlp |grep 端口号,用于查 ...

  5. client-go向controller进发---手动实现

    参考URL: https://www.jianshu.com/p/49f741492874 完全靠手动实现,不用code-generator,kubebuilder或是operator-sdk. 要注 ...

  6. 【洛谷P3329】 [ZJOI2011]最小割(最小割树)

    洛谷 题意: 给出一个无向图,之后有\(q,q\leq 30\)组询问,每组询问有一个\(x\),回答有多少点对\((a,b)\)其\(a-b\)最小割不超过\(x\). 思路: 这个题做法要最小割树 ...

  7. 用Python打印九九乘法表与金字塔(*)星号

    ''' 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 ...

  8. tcp 和UDP

      文章目录前言1. UDP2. TCP2.1 TCP 的三次握手2.2 TCP 四次挥手2.3 累计确认2.4 顺序问题和丢包问题2.5 流量控制的问题2.6 拥塞控制的问题总结及面试问题前言前端的 ...

  9. k-means实战-RFM客户价值分群

    数据挖掘的十大算法 基本概念 导入数据集到mysql数据库中 总共有940个独立消费数据 K-Means 算法 K-Means 算法是一个聚类算法.你可以这么理解,最终我想把物体划分成 K 类.假设每 ...

  10. 使用Python对ElasticSearch获取数据及操作

    #!/usr/bin/env python# -*- coding: utf-8 -*-""" @Time : 2018/7/4 @Author : LiuXueWen ...