- 第一部分: 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
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
阻止泄露
我们简单的列出微软用于防止 Bitmap 泄露而实现的各种缓解机制,同时会说明它们分别该如何绕过。主版本在下面给出作为参考。
Windows 10 v1511
- 当前没有缓解措施。
- 利用从 PEB 中拿到的 GdiSharedHandleTable 句柄,找到正确的 GDI_CELL 结构体并读出 pKernelAddress,它揭示了 Bitmap SURFOBJ 的内核地址。可以在这里查看一个简单的示例 here .。
Windows 10 RS1 v1607
- 微软将 GDI_CELL 结构体中的 pKernelAddress 置空,老技术从此失效。
- 研究者发现了这样一些对象,它们和我们所垂涎的 Bitmap 放在相同的内存池中(分页内存池),且可以被泄露。可以通过利用 user32 来获取 gSharedInfo(一个全局变量)的地址,读取出 aheList HANDLEENTRY 数组的地址,找到正确的那个数组项并最终读出 phead 成员来获取该对象的内核地址。尽管我们无法直接读出 bitmap 对象的地址,但通过使用一个较大的尺寸(ensuring the would end up in a low entropy large pool) 精心构造/泄露对象并执行一个 UAF 风格的攻击,就可以使得 Bitmap 分配在被释放掉的原始对象的位置。可以在这里看到一个简单的示例 here 。
Windows 10 RS2 v1703
- 你不知道吗,微软把 phead 指针也置空了,上述方法也从此失效。
- 本文中我们将讨论如何利用用户映射的桌面堆来泄露 Windows 对象,和此前做法相似,执行一个 UAF 风格的攻击来重新溯源 Bitmap(primitive)!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论