Day1

老师要我们去pull华为的所有系统应用。。。

检查AdnroidManifest.xml文件里的Service和Broadcast Receiver的权限

这里记录一下一些操作

1
2
3
4
adb shell pm list packages#列出包名
adb shell pm path com.huawei.android.karaoke#得到路径
$package:/hw_product/app/HwKaraoke/HwKaraoke.apk
adb pull /hw_product/app/HwKaraoke/HwKaraoke.apk $电脑路径 #拉出安装包

截屏2020-01-14下午10.29.34

截屏2020-01-14下午10.29.18

emm无功而返,甚至学了点python和shell文件处理

1
2
3
4
while read line
do
$line >> /Users/zrzz/Programme/CTF/XMan/check/123.txt
done < /Users/zrzz/Programme/CTF/XMan/check/.txt
1
2
3
4
5
6
from os import system
fp = open('/Users/zrzz/Programme/CTF/XMan/check/123.txt','r')
for i in fp.readlines():
i = i[9:]
system('cd /Users/zrzz/Programme/CTF/XMan/check/2; adb pull ' + str(i))
fp.close()

Day2

老师有点看不下去了。。。给我们换了方向,不用去检查漏洞了,目标是让我们通过app或者浏览器链接的方式拉起系统应用

首先做了一个示范,用百度的app(baidusearch)

基础知识

  1. Browsable属性(拖到vscode里还真好用)

    image-20200114224612069

    如果想利用browsable接口的话,要满足两个条件:

    1. <action android:name="android.intent.action.VIEW"/>
    2. 在上方的activity中有android:exported="true"即是可以导出的组件
  2. 用html的连接唤醒

    在上面那张图里面可以看到有个android:scheme="bdbox"那么bdbox就是入口image-20200114232018357

  3. 构建mac本地服务器

    1. 在设置->共享->互联网共享里面勾选

      image-20200114232752056

    2. 终端输入sudo apachectl start

      (关闭使用stop重启用restart)

      (这里补一个手机截屏的命令)

      1
      adb shell /system/bin/screencap -p /sdcard/1.png; adb pull /sdcard/1.png ~/Desktop; open Desktop/1.png
    3. 将要访问的.html文件放到/Library/WebServer/Documents/下

    4. 将电脑和要访问的客户端连接到同一局域网下

    5. 输入$电脑的WiFi ip地址/xxx.html即可访问

      1

      1

    6. 之后老师还跟进去检查到bdbox是一个host,那么在后面加上参数可以实现访问网页的操作(百度太大了懒得跑就不复现了)

实操

老师给了方向:相机,那么就拿它开刀

一顿操作,发现有很多安装包,拿base开刀(事实上证明了也只有base-master.apk)里面有这个漏洞。

  1. 首先看AndroidManifest.xml

    截屏2020-01-15下午7.23.36

    可以看到有一个browsable,这个的activity的host格式也出来了

  2. 根据1,编写一个简单的网页,唤起相机成功

    image-20200115192640875

    1

  3. 那么先逆向分析->三个入口:getdata、getintent和oncreate

  4. image-20200115191351366由于在java源码里搜索不到,所以采用logcat(pidcat)可以看到使用的是onCreateTasks函数,找getIntent()

  5. 截屏2020-01-15下午7.18.16可以找到一个由华为语音助手的坑

  6. 跟进去看

    image-20200115192001856280行,继续进去

  7. image-20200115192043747

    321行看到,检查的是MODE_NAME那么逻辑就出来了

  8. 去用语音助手拍张照弄到logimage-20200115192740029

    试试这个

  9. image-20200115192824554

    emm。。。不太行,回去代码里面仔细看看

    还记得.8里面的query函数传参吗,进去看看

    截屏2020-01-15下午11.37.19

    可以看到是VoiceCaptureDeepLinkData这个new了个next对象

  10. 找到这个类image-20200115234134936

image-20200115234201692

可以看到它是把“PHOTO”作为参数传进去的,而第二个参数就是modeName,搞定

  1. 在第9步里看到实际上是mode_name不是大写截屏2020-01-16上午12.21.18所以最终就是?modename=PHOTO不过这里试了一下还是不行,那么继续往下走

    image-20200115235545881

    回到这张图里面可以看到有四个参数那么逐个试试

  2. image-20200116000013029emm我懒得去log了借大佬图一用,左边是我们唤醒的,右边是小艺唤醒的,countDownTime看起来是默认的不用调,那么只有startTime和左边第14行image-20200116000759208

    对应一下就是第四个参数

  3. startTime不太好找啊,直接找第四个isopencameraonly,对比发现这个bool值应该是false

    image-20200116001346718要false就只能在最后面return false了,那么它应该就直接等于false或者0都试一下

  4. 成功image-20200116001517155

Day3

今天自习,补了一下昨天的记录

学习一下python更改文件吧

Day4

今天要找一下service和receiver的漏洞

service找onBind()、receiver找onReceive()

那我就试着用receiver找了

先学习一下广播格式

https://www.wandouip.com/t5i365913/

借着大佬的excel找到试试HwOUC类名是com.huawei.android.hwouc.para.push.RemotePushReceiver

进去看看

image-20200116221830985

看onReceiver

这里getAction的话基本就是一些固定的action,要找一些getxxxExtra的东西

最终只剩下两个

image-20200118005202319

走了很多弯路才到这里,同时也是自己对组件不太了解吧。。。还学习了下intent的一些操作

感觉其中的HwSystemManager的漏洞可以关闭任意的应用

先看到Manifest

image-20200118221814591

找到这个receiver

image-20200118222231037

尝试REMOVED模式,看到uri,getData跟进去传一个package就行,

am broadcast -a android.intent.action.PACKAGE_REMOVED -d 包名

尝试了一下通过am可以让应用关闭,但是如果用app发送广播的话会有权限限制image-20200118234914563

搜了一下

image-20200118235449691

这应该不算漏洞吧

am broadcast -a android.intent.action.PACKAGE_REMOVED -d com.xman.fladdybird -ez “true”