EMUI预装组件攻击(提权攻击)
Day1
老师要我们去pull华为的所有系统应用。。。
检查AdnroidManifest.xml文件里的Service和Broadcast Receiver的权限
这里记录一下一些操作
1 | adb shell pm list packages#列出包名 |
emm无功而返,甚至学了点python和shell文件处理
1 | while read line |
1 | from os import system |
Day2
老师有点看不下去了。。。给我们换了方向,不用去检查漏洞了,目标是让我们通过app或者浏览器链接的方式拉起系统应用
首先做了一个示范,用百度的app(baidusearch)
基础知识
-
Browsable属性(拖到vscode里还真好用)
如果想利用browsable接口的话,要满足两个条件:
<action android:name="android.intent.action.VIEW"/>
- 在上方的activity中有
android:exported="true"
即是可以导出的组件
-
用html的连接唤醒
在上面那张图里面可以看到有个
android:scheme="bdbox"
那么bdbox就是入口 -
构建mac本地服务器
-
在设置->共享->互联网共享里面勾选
-
终端输入
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
-
将要访问的.html文件放到/Library/WebServer/Documents/下
-
将电脑和要访问的客户端连接到同一局域网下
-
输入$电脑的WiFi ip地址/xxx.html即可访问
-
之后老师还跟进去检查到bdbox是一个host,那么在后面加上参数可以实现访问网页的操作(百度太大了懒得跑就不复现了)
-
实操
老师给了方向:相机,那么就拿它开刀
一顿操作,发现有很多安装包,拿base开刀(事实上证明了也只有base-master.apk)里面有这个漏洞。
-
首先看AndroidManifest.xml
可以看到有一个browsable,这个的activity的host格式也出来了
-
根据1,编写一个简单的网页,唤起相机成功
-
那么先逆向分析->三个入口:getdata、getintent和oncreate
-
由于在java源码里搜索不到,所以采用logcat(pidcat)可以看到使用的是onCreateTasks函数,找getIntent()
-
可以找到一个由华为语音助手的坑
-
跟进去看
280行,继续进去
-
321行看到,检查的是MODE_NAME那么逻辑就出来了
-
去用语音助手拍张照弄到log
试试这个
-
emm。。。不太行,回去代码里面仔细看看
还记得.8里面的query函数传参吗,进去看看
可以看到是VoiceCaptureDeepLinkData这个new了个next对象
-
找到这个类
可以看到它是把“PHOTO”作为参数传进去的,而第二个参数就是modeName,搞定
-
在第9步里看到实际上是mode_name不是大写
所以最终就是
?modename=PHOTO
不过这里试了一下还是不行,那么继续往下走回到这张图里面可以看到有四个参数那么逐个试试
-
emm我懒得去log了借大佬图一用,左边是我们唤醒的,右边是小艺唤醒的,countDownTime看起来是默认的不用调,那么只有startTime和左边第14行
对应一下就是第四个参数
-
startTime不太好找啊,直接找第四个isopencameraonly,对比发现这个bool值应该是false
要false就只能在最后面return false了,那么它应该就直接等于false或者0都试一下
-
成功
Day3
今天自习,补了一下昨天的记录
学习一下python更改文件吧
Day4
今天要找一下service和receiver的漏洞
service找onBind()、receiver找onReceive()
那我就试着用receiver找了
先学习一下广播格式
https://www.wandouip.com/t5i365913/
借着大佬的excel找到试试HwOUC类名是com.huawei.android.hwouc.para.push.RemotePushReceiver
进去看看
看onReceiver
这里getAction的话基本就是一些固定的action,要找一些getxxxExtra的东西
最终只剩下两个
走了很多弯路才到这里,同时也是自己对组件不太了解吧。。。还学习了下intent的一些操作
感觉其中的HwSystemManager的漏洞可以关闭任意的应用
先看到Manifest
找到这个receiver
尝试REMOVED模式,看到uri,getData跟进去传一个package就行,
am broadcast -a android.intent.action.PACKAGE_REMOVED -d 包名
尝试了一下通过am可以让应用关闭,但是如果用app发送广播的话会有权限限制
搜了一下
这应该不算漏洞吧
am broadcast -a android.intent.action.PACKAGE_REMOVED -d com.xman.fladdybird -ez “true”