-
-
[原创]NCSTISC Linux Kernel的另一种解法(浅析)
-
发表于:
2019-2-13 19:39
8119
-
[原创]NCSTISC Linux Kernel的另一种解法(浅析)
关于这个linux kernel pwn的细节不再赘述,网上已经有很多啦,感兴趣的小伙伴可以阅读,这里我提供一下我博客关于这道题的writeup地址:
https://whereisk0shl.top/NCSTISC%20Linux%20Kernel%20pwn450%20writeup.html
我会在帖子中简单讲解一下,同时会和real world中的漏洞做一些简单比对,这样相结合的分析,能对未来real world中漏洞挖掘有一些帮助。
之前看了很多小伙伴讨论了关于tty_struct的细节,我和ling在做这道题目的时候参考了0ctf的题目所以使用了tty_struct,后来和atum聊过之后发现用cred也是可以的,但并不是所有都适用,但因为这个题目的品相非常好,在real world中如果有这样的条件的,可以算是极品漏洞:1、申请内核空间的大小可控,2、object写入位置可控,在real world中如果有这样的条件,可以说无所不能,而且面对各种mitigation都是很有杀伤力的。
今天是熟悉的patch tuesday,下symbol很慢无聊就在我之前博客提供的exp代码基础上修改了一下,写了这道题用cred的解法,因为slab分配器可以用cred占用之前题目kfree之后留下的内存空洞,而我们可以打开两个设备A和设备B,通过close 设备A,让全局buffer调用kfree释放掉,这样相当于我们得到了一个dangling pointer,之后通过操作设备B达到一个UAF的效果,这里之所以我的博客中提到是一个伪条件竞争,因为这种情况是几乎不可能在real world中出现的,真正的real world中的条件竞争,是需要通过在某个时间窗内操作全局变量完成race,这道题目严格意义上来说只是一个UAF。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-2-14 09:09
被Keoyo编辑
,原因: