• 分析activity安全检测实践


    在学习移动安全中的一些测试经验,记录一下

    以想看app为例

    https://app.mi.com/details?id=com.xiangkan.android&ref=search

    使用drozer测试暴露的activity

    run app.activity.info -a  com.xiangkan.android

    得到:

    Package: com.xiangkan.android
      com.bikan.reading.activity.SplashActivity
        Permission: null
      com.xiaomi.assemble.control.DistributeActivity
        Permission: null
      com.tencent.tauth.AuthActivity
        Permission: null
      com.bikan.reading.activity.DummyActivity
        Permission: null
      com.xiangkan.android.MiPushWakeActivityActivity
        Permission: null
      com.ledong.lib.leto.main.FunctionActivity
        Permission: null
      com.bikan.reading.social.SocialShareActivity
        Permission: null
      com.xiangkan.android.wxapi.WXEntryActivity
        Permission: null
        Target Activity: com.bikan.reading.social.SocialShareActivity
    

      

    反编译客户端后,由查找函数getStringExtra,为什么要这个函数?由于我们希望分析的是activity接收数据之后的安全,如果activity都没有接收任何参数,那顶多是去测测能不做客户端的绕过,运行下,如果对应的activity不敏感,那也就没啥卵用,但是如果接收参数,我们就可以分析下参数在客户端逻辑中都有哪些风险了。而getStringExtra就是接收String类型的参数,这种类型最容易出现风险。

    通过jd-gui全局搜索这个函数确认到com.bikan.reading.activity.DummyActivity,是暴露的,且接收参数数据的

    进入DummyActivity找打onCreate函数,是创建Activity的入口函数,他接收ref参数,为push值得时候,执行a函数

    a函数没有参数,所以找到它,它接收uri参数,然后接受两个a(String),a(Uri)函数的过滤,

    最后进入SplashActivity

    然后会启动SplashActivity,并为它传递url参数的值,也就是DummyActivity中Uri的值

    那么确认DummyActivity接收两个参数ref和uri

    adb测试:

    adb shell am start -n com.xiangkan.android/com.bikan.reading.activity.DummyActivity --es ref push --es uri https://www.baidu.com

    执行后,啥动静也没有。

    因为过滤了,刚才提到的两个过滤a函数。

    其中a(Uri paramUri)中WebRiskChecker类,限制了地址中域名的白名单

    adb shell am start -n com.xiangkan.android/com.bikan.reading.activity.DummyActivity --es ref push --es uri https://www..mi.com

    想看就打开了https://www..mi.com

    其实这样问题就不大了,主要问题就是域名的限制太大,因为不能保证这些域下的内容都是安全的,比如有url跳转,就可以配合使用。虽然问题不大,记录下分析过程。

  • 相关阅读:
    使用内部单向链表实现的一个简单堆栈
    通过反射调用内部类的隐藏方法
    动态代理生成空对象
    通过使用java.lang.reflect.Proxy实现动态代理
    简单代理模式
    暗色CSS,适用与Stylish, IE, FF, OPERA等.
    CWnd派生的控件处理MouseMove, MouseHover, MouseLeave
    _tcscpy_s的size应至少为src的长度+1(要把计算在内)
    用INET(CHttpFile)下载有重定向链接时获取最终URL的方法.
    GetDlgItem以及其他获得CWnd相关的函数要注意。。
  • 原文地址:https://www.cnblogs.com/fczlm/p/14382119.html
Copyright © 2020-2023  润新知