- 第一部分: Introduction to Exploit Development
- 第二部分:Saved Return Pointer Overflows
- 第三部分:Structured Exception Handler (SEH)
- 第四部分:Egg Hunters
- 第五部分:Unicode 0x00410041
- 第六部分:WIN32 shellcode 编写
- 第七部分:返回导向编程(ROP)
- 第八部分:堆喷射第一节【覆写 EIP】
- 第九部分:堆喷射[第二章:UAF]
- 第十部分:内核利用程序之栈溢出
- 第十一部分:内核利用程序之任意位置任意写
- 第十二部分:内核利用程序之空指针引用
- 第十三部分:内核利用程序之未初始化栈变量
- 第十四部分:内核利用程序之整数溢出
- 第十五部分:内核利用程序之 UAF
- 第十六部分:内核利用程序之池溢出
- 第十七部分:内核利用程序之任意位置任意写
- 第十八篇:内核利用程序之 RS2 Bitmap 巫术
- 第十九篇:内核利用程序之 Razer
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第十九篇:内核利用程序之 Razer
fuzzySecurity 于 16 年更新了数篇 Windows 内核 exp 的教程,本文是内核篇的第十篇,也是目前为止的最后一篇。 点击查看原文 。
欢迎回到另一个 Windows 内核 exp 开发系列教程!今天我们看些不同寻常的东西。不久前 @zeroSteiner 在 rzpnk.sys 中挖掘出了两个 bug( CVE-2017-9770 & CVE-2017-9769 ),该驱动由 Razer Synapse 所用。此后不久我决定看看这两个 bug 并且。。。我还发现了可以本地提权的另外一个逻辑 bug( CVE-2017-14398 )!
本文我们将简要的阐述 CVE-2017-9769,此后我们会针对我发现的 bug CVE-2017-14398 写一个 exp。开始之前我想大声疾呼 @aionescu ,他总是说我根本不知道我在做什么,但这一次我可以挺直腰板了!我也曾一度在玩 Binary Ninja,截图就是从那里获取的,如果有人对此感兴趣的话。
Resources:
- Razer Rzpnk.Sys IOCTL 0x226048 OOB Read (CVE-2017-9770) ( @zeroSteiner ) - here
- Razer Rzpnk.Sys IOCTL 0x22a050 ZwOpenProcess (CVE-2017-9769) ( @zeroSteiner ) - here
- MSI ntiolib.sys/winio.sys local privilege escalation ( @rwfpl ) - here
##永不屈服
在开始之前我想先快速的展示一下,这些漏洞函数在调用图示上有多么的接近。对于分发函数来说,它们字面上是相邻的。

这些调用分支源于上面同一个决策点,我们可以看到它从 IOCTL 中减掉了 0x10,当该值是 0 的时候,就跳转到 ZwOpenProcess 调用处,如果值为 0x14 的话,就跳转到 ZwMapViewOfSection 调用处。
同时注意到该驱动会检查输入和输出缓冲区的尺寸,如果提供的输入参数不够或输出缓冲区不够大的话,分支会落入失败的情景。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论