首页
社区
课程
招聘
[求助] 大神救我。。CVE-2019-2215 root提权之人造页表,kernel代码区域依然只能读不能写
发表于: 2020-4-6 21:40 7361

[求助] 大神救我。。CVE-2019-2215 root提权之人造页表,kernel代码区域依然只能读不能写

2020-4-6 21:40
7361
近日研究 CVE-2019-2215 漏洞提权, 漏洞本身我并没有去关心,因为下了个利用代码,提权流程已经能跑到修改进程 Cred 结构成员了,
现在卡在了,过不了selinux(这中间有很多怪毛病:举例 patch
struct task_security_struct {
	u32 osid;		/* SID prior to last execve */
	u32 sid;		/* current SID */
	u32 exec_sid;		/* exec SID */
	u32 create_sid;		/* fscreate SID */
	u32 keycreate_sid;	/* keycreate SID */
	u32 sockcreate_sid;	/* fscreate SID */
};
成员后程序卡死;  执行 system("/system/bin/sh") 程序被Killed, 调用 pipe  write 修改内核代码一样被Killed等毛病 )。

翻阅了很多帖子教程,翻了很久的MMU 页表文档,修改selinux_enforcing  selinux_enabled这两个东西,此路不通,我的内核没有 selinux_enforcing这个全局变量,内核已被强制不允许 关闭selinux, 所以只能采取修改 selinux_enforcing 相关的函数, static noinline int avc_denied(u32 ssid, u32 tsid,u16 tclass, u32 requested,u8 driver, u8 xperm, unsigned flags,struct av_decision *avd) ,  经我用别的android 机器测试,采用 《KSMA -- Android 通用 Root 技术》  进行人造MMU 页表,然后patch 掉该函数是可以的。   现在悲剧的是,我这真正需要提权的设备,采用人造页表也不能 对kernel 代码区域进行内存修改。 你敢修改,程序就敢Killed

~~挤眉~~  大神 大神 求支个招哇, MMU 机制看了老久,kernel 的create_page_tables函数也看了很久, 头大
补充下,测试能成功提权的机器是 android 8.0 的已经root , 真正需要root的机器是android 8.1 
贴个链接:  https://hernan.de/blog/2019/10/15/tailoring-cve-2019-2215-to-achieve-root/
里边两个工具 droidimg miasm 好东西,在只有2进制 kernel 文件的时候,这工具可以把 内核符号和不考虑kasr的地址给遍历出来,方便后续分析




[注意]APP应用上架合规检测服务,协助应用顺利上架!

最后于 2020-4-7 11:18 被酒肉和尚编辑 ,原因:
上传的附件:
收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 444
活跃值: (2926)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
2
大神们不要潜水呀,多出来透透气
2020-4-7 10:54
0
雪    币: 7818
活跃值: (1073)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
你的问题是已经构造了人工页表,也不能对内核任意读写?看下系统崩溃日志,为什么程序会crash。反复检查和理解人工页表是否理解和使用正确。最后看下内核版本,是否该内核版本已经把内核镜像攻击这个洞给修复了。
2020-4-7 14:16
1
雪    币: 444
活跃值: (2926)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
4
仅仅只是代码区域不能写,全局变量什么的是可以写的,读是可以的, 看不了crash, logcat 这边没日志, dmsg 内核层日志没有root不让看
2020-4-7 15:55
0
雪    币: 16532
活跃值: (6589)
能力值: ( LV13,RANK:923 )
在线值:
发帖
回帖
粉丝
5
拿着root的8.0,刷入改了的8.1。不就可以了,不过我这只是嘴上说的轻巧
2020-4-7 16:24
0
雪    币: 444
活跃值: (2926)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
6
不能刷机哦, ~~挤眉~~
2020-4-7 16:51
0
雪    币: 232
活跃值: (929)
能力值: ( LV4,RANK:44 )
在线值:
发帖
回帖
粉丝
7
漏洞能触发不,2215之前适配过,有些内核结构体偏移是不一样的
2020-4-10 16:15
0
雪    币: 444
活跃值: (2926)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
8
湘北三井同学 漏洞能触发不,2215之前适配过,有些内核结构体偏移是不一样的
能触发,都能读内核内存了
2020-4-10 21:09
0
雪    币: 444
活跃值: (2926)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
9
湘北三井同学 漏洞能触发不,2215之前适配过,有些内核结构体偏移是不一样的
接下来只能看看 能不能通过avc_search_node 函数   修改avc_cache结构成员,使其权限审核为 允许。
2020-4-10 21:12
0
雪    币: 444
活跃值: (2926)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
10
湘北三井同学 漏洞能触发不,2215之前适配过,有些内核结构体偏移是不一样的
湘北三井同学 吾爱的帖子是你发的?
2020-4-12 15:29
0
雪    币: 232
活跃值: (929)
能力值: ( LV4,RANK:44 )
在线值:
发帖
回帖
粉丝
11
酒肉和尚 湘北三井同学 吾爱的帖子是你发的?
嗯,你到compute_sid_handle_invalid_context和selinux_is_enabled找selinux_enforcing ,selinux_enabled这两个变量看看,但应该不是这里的问题
2020-4-13 12:29
0
雪    币: 444
活跃值: (2926)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
12
  
没有哦~~~ 直接返回 -EACCES (0xFFFFFFFF3)了
2020-4-13 13:51
0
雪    币: 444
活跃值: (2926)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
13
   @ 湘北三井同学 。。。。。。。
2020-4-13 18:05
0
雪    币: 232
活跃值: (929)
能力值: ( LV4,RANK:44 )
在线值:
发帖
回帖
粉丝
14
如果内核改掉的化,那avc_denied里应该也没这变量,但不清楚patch不了的具体原因,前面伪造的页表已经写入成功了?直接用漏洞写可不可以
2020-4-14 10:51
0
雪    币: 444
活跃值: (2926)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
15
湘北三井同学 如果内核改掉的化,那avc_denied里应该也没这变量,但不清楚patch不了的具体原因,前面伪造的页表已经写入成功了?直接用漏洞写可不可以
伪造的也表写入成功了(代码区域,全局变量区域也不能改,前边说错了,能改的貌似只有堆栈内存),用漏洞写,尝试过一次,映像中也是 killed , 还有什么Bus error 的错误提示 

感觉只能熟读selinux代码,然后在内存里修改策略
最后于 2020-4-14 13:46 被酒肉和尚编辑 ,原因:
2020-4-14 13:43
0
雪    币: 28
活跃值: (51)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
三星?
2020-4-17 11:40
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
大佬后来有方法解决吗?小白也遇到同样问题了
2021-3-12 17:47
0
雪    币: 444
活跃值: (2926)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
18
kasa_ 大佬后来有方法解决吗?小白也遇到同样问题了[em_10]
你才是大佬,解决了告诉小白一下
2021-3-18 21:05
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
19

我这边遇到一样问题,也是bus error,最终你解决了嘛?

最后于 2021-3-19 15:34 被kasa_编辑 ,原因:
2021-3-19 15:34
0
游客
登录 | 注册 方可回帖
返回
//