关于Android的root提权漏洞

这篇具有很好参考价值的文章主要介绍了关于Android的root提权漏洞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0x001 什么是root?


硬件root

刷有带su和superuser的rom
刷入定制内核/镜像等

软件root

利用漏洞提权
并将一个带有恰当set-uid权限的su文件移动到系统分区

两种都要突破NAND锁成为永久root

以下两个转自于知乎少仲哥 和flanker_hqd的回答:

0x02历史上已知的比较有代表提取漏洞


1.CVE-2009-2692(Wunderbar/asroot)

sock_sendpage()的空指针解引用.因为sock_sendpage 没有对 socket_file_ops 结构的 sendpage 字段做指针检查,有些模块不具备sendpage 功能,初始时赋为 NULL,这样,没有做检查的sock_sendpage 有可能直接调用空指针而导致出错并提升权限.

2.adbd setuid

ADB守护进程(adbd进程)以root权限开始启动,然后降权到shell用户.在Android2.2及以前的版本中,ADB守护进程在降权时不会检查setuid调用的返回值.在此之前,adb.c中的代码都是以root权限运行,以完成部分初始化工作.通过调用setuid()将用户从root切换回shell,但setuid()在shell用户进程数达到上限RLIMIT_NPROC时,会失败,因此adb.c继续以root身份运行,而没有报错.

3.CVE-2011-3874(zergRush)

漏洞的本质是”use after free”.具有root权限的vold进程使用了libsysutils.so,其中某个函数存在栈溢出的问题,因此可以控制root身份的vold执行system(),借以提权.

4.CVE-2012-0056(mempodroid)

Linux通过一个特殊字符设备/proc/$pid/mem把每个进程的虚拟内存暴露为一个文件.出于安全考虑,读写这个文件的权限被严格限制,拥有写入权限的只有内存的所属进程.但是攻击者可以打开目标进程的mem设备,把它复制到进程的stdout和stderr.当stdout重定向到与虚拟内存相关的字符设备时,攻击者可以写入其他程序内存,但是写入的地址是未知的.

5.CVE-2011-1823(GingerBreak)

在Android 3.0版本和2.3.4之前的2.x版本上的volume守护进程(vold)由于信任从PF_NETLINK套接字接收到的消息,因此允许以root权限执行任意代码,利用方法是通过一个负数索引绕过只针对最大值的有符号整数检测.

6.Exynos-abuse

早期的三星手机,经常是某些设备被chmod 755/666,造成了全局可读写,然后只要将这些设备mmap出来,就可以操作物理内存,之后可以通过patch相关参数或者构造payload函数达到提权的目的.

7.CVE-2012-4220(diag)

Android 2.3-4.2使用的QualcommInnovation Center (QuIC) Diagnostics内核模式驱动程序diagchar_core.c在实现上存在整数溢出漏洞,通过向diagchar_ioctl内传递特制的输入,远程攻击者可利用此漏洞执行任意代码或造成拒绝服务.

8.CVE-2013-6282

ARM v6/v7架构的Linux内核中的get_user/put_user接口没有验证目标地址,由于硬件架构的更迭,get_user/put_user最初用于实现和控制域切换的功能被弃用了,导致任何使用该API的内核代码都可能存在安全隐患.让任意应用来读写内核内存,造成权限泄漏.

9.CVE-2014-3153

漏洞利用了 futex_requeue,futex_lock_pi,futex_wait_requeue_pi三个函数存在的RELOCK漏洞和REQUEUE漏洞,造成了对内核栈上的数据修改,知名root工具towelroot就是利用了这个漏洞可以覆盖2014年6月以前的设备.

10.CVE-2015-3636

该漏洞是Linux kernel的ping套接字上存在的一个Use-After-Free漏洞.


Android 2.*时代,vold有多个溢出漏洞,都被用来exploit和poc.
Android 4.*时代,大部分的exploit都盯上了内核中的堆栈溢出和整数溢出等.
Android 5.*以后,更强悍的SELinux策略,想通过kernel漏洞提取更加困难.


0x03如何入门android内核挖掘?


Andriod平台漏洞也有很多种,分为不同的方向,比如内核漏洞挖掘/利用,用户态高权限进程漏洞挖掘/利用,浏览器漏洞挖掘/沙箱逃逸和针对Andriod自身结构的漏洞(权限泄漏、敏感信息泄漏等)。题主应该希望学习的是前两种。

Android是一个基于Linux的复杂系统,想要熟练挖掘Android漏洞必须要了解Linux系统本身(内核,驱动),以及Android在Linux架构上添加的各式各样的组件和功能(binder,media/graphics subsystem,zygote, chromium/skia和最上层的四大金刚等)。从问题中的角度来讲,对于不熟悉Windows平台的初学者,不建议将大量时间投入到Windows平台上的漏洞利用学习上,因为两个平台的漏洞虽然核心思想相通,但具体到利用的细节不太相同。这些精力时间投入到Linux平台和Android自身的研究学习上对于Android漏洞挖掘这个目的意义更大。并且从实际的角度出发,业界目前需要更多的也是Mobile系统方向上的人才。

基础的漏洞类型例如栈溢出、堆溢出、未初始化、OOB、UAF、条件竞争/TOCTOU漏洞等必须要熟练理解掌握,这些在各种CTF平台上在Linux平台下都可以练习到。但是需要注意的一点是CTF还是和实际有些区别。例如CTF上的堆溢出题目绝大部分都基于dlmalloc,而Android早在5.0就切换到了jemalloc。现代软件中最常见的条件竞争漏洞因为比赛平台的限制也很少在CTF中看到(利用比较耗费资源,很难支撑比赛中的大规模并发需求)。

在了解了基础知识之后,可以进一步学习Andriod自身的体系结构。
Binder方面可以学习调试几个经典漏洞(GitHub - flankerhqd/mediacodecoob: Infoleak and PC control poc for CVE-2015-6620 (24445127), I’ll add after conference, https://www.blackhat.com/asia-16/briefings.html#hey-your-parcel-looks-bad-fuzzing-and-exploiting-parcel-ization-vulnerabilities-in-android)

文件格式漏洞自然是经典的stagefright,https://www.exploit-db.com/docs/39527.pdf。

驱动/内核漏洞3636和1805(https://www.blackhat.com/docs/us-15/materials/us-15-Xu-Ah-Universal-Android-Rooting-Is-Back.pdf)。

Chrome V8相关:GitHub - 4B5F5F4B/Exploits

关注每个月的android security bulletin, 尝试从diff反推漏洞研究如何触发和利用。

代码审计:经典书籍 The art of software security assessment

fuzzing

当然,只要掌握了计算机体系结构,熟悉了程序的运作方式,到达一定境界之后那么各种漏洞、各种系统之间的界限也就渐渐模糊了。文章来源地址https://www.toymoban.com/news/detail-711260.html

到了这里,关于关于Android的root提权漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nacos提权漏洞修复

    Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。若您Nacos未修改 secret.key,则攻击者可利用默认secret.key生成JWT Token,从而造成权限绕过访问到相关API接口。 Nacos 官方于 2023年3月2日发布 2.2.0.1 版本。该版本移除了默认鉴权

    2024年02月04日
    浏览(24)
  • 系统漏洞利用与提权

    1.使用nmap扫描靶机系统,将靶机开放的端口号按从小到大的顺序作为FLAG(形式:[端口1,端口2…,端口n])提交;(1分) 首先第一道题目的思路就是使用nmap来进行扫描: Flag:[21,22,80] 2.通过上述端口访问靶机系统,使用弱口令进行登录,将正确的用户名和密码作为FLAG(形式:

    2024年02月07日
    浏览(35)
  • 权限提升:网站漏洞(提权思路.)

    权限提升简称 提权 ,由于 操作系统都是多用户操作系统 , 用户之间都有权限控制 ,比如通过 Web 漏洞拿到的是 Web 进程的权限,往往 Web 服务都是以一个权限很低的账号启动的,因此通过 Webshell 进行一些操作会受到限制,这就需要将其提升为管理甚至是 System 权限。通常通

    2024年02月05日
    浏览(32)
  • Windows系统内核溢出漏洞提权

    目录  Windows内核溢出漏洞原理 溢出漏洞简介 什么是缓冲区 缓冲区溢出 缓冲区溢出目的 Windows内核溢出漏洞利用流程 提权实战思路 手工提权测试 辅助提权 EXP如何寻找 使用MSF提权 关于提权时可能遇到的问题 如果提权的时候发现无法执行命令的话,可以上传一个cmd.exe到可读

    2024年02月07日
    浏览(34)
  • 【网络安全】本地提权漏洞分析

    CVE-2023-21752 是 2023 年开年微软第一个有 exploit 的漏洞,原本以为有利用代码会很好分析,但是结果花费了很长时间,难点主要了两个:漏洞点定位和漏洞利用代码分析,欢迎指正。 根据官方信息,该漏洞是 Windows Backup Service 中的权限提升漏洞,经过身份认证的攻击者可利用此

    2024年02月01日
    浏览(77)
  • Linux脏牛提权漏洞复现(DirtyCow)

    脏牛(DirtyCow)是Linux中的一个提权漏洞。主要产生的原因是Linux系统的内核中Copy-on-Write(COW)机制产生的竞争条件问题导致,攻击者可以破坏私有只读内存映射,并提升为本地管理员权限。 靶机:vulnhub——Lampiao 192.168.230.217 攻击机:Kali 192.168.230.128 1、对 192.168.230.0/24 这一个

    2024年03月21日
    浏览(41)
  • 本地提权漏洞分析【网络安全】

    CVE-2023-21752 是 2023 年开年微软第一个有 exploit 的漏洞,原本以为有利用代码会很好分析,但是结果花费了很长时间,难点主要了两个:漏洞点定位和漏洞利用代码分析,欢迎指正。 根据官方信息,该漏洞是 Windows Backup Service 中的权限提升漏洞,经过身份认证的攻击者可利用此

    2024年02月04日
    浏览(45)
  • 安全漏洞:Chkrootkit 0.49 本地提权漏洞的测试方法

    Chkrootkit =0.49 Local Root Vulnerability:小于等于0.49版的chrootkit本地提权漏洞。先来演示下吧:/p 可以查看自己安装的是不是升到最新版了,或者下载有漏洞的版本进行实验: wget wget http://www.exploit-db.com/wp-content/themes/exploit/applications/304d840d52840689e0ab0af56d6d3a18-chkrootkit-0.49.tar.gztar vfx

    2024年02月07日
    浏览(34)
  • Apache Struts2漏洞复现之s2-001漏洞复现

            仅供学习参考使用,请勿用作违法用途,否则后果自负。         Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java ServletAPI,鼓励开发者采用MVC架构。         缘起于Apache Struts的WebWork框架,旨在提供相对

    2024年02月16日
    浏览(26)
  • Linux提权—脏牛漏洞(CVE-2016-5195)复现

    脏牛漏洞:         脏牛漏洞,又叫Dirty COW,存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞。Linux kernel团队在2016年10月18日已经对此进行了修复。 漏洞范围:        【影响版本】:该漏洞在全版本Linux系统(Linux kernel = 2.6.22)均可

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包