这是一个令人讨厌的漏洞,与Dangling Pointer非常相似。简而言之,它允许远程攻击者读取和/或写入任意内存地址。这比简单的基于堆栈的缓冲区溢出更有价值,尤其是在利用现代系统时。针对此漏洞的可靠远程代码执行漏洞尚未公开。然而,著名的漏洞利用经销商 Vupen 可能已经开发了这样的漏洞利用。
因为这也是一个内存泄露漏洞,所以您不必使用蛮力绕过 ASLR。已编写了一个利用程序来读取有效负载在内存中的 ASLR 内存地址。
仍然存在控制EIP的问题。我还没有看到这样做的漏洞利用,但它看起来可能是可能的,可能是 GOT 覆盖或损坏堆栈帧。
在您完成 EIP/RIP 之后,您有几个选择。一种选择是使用面向返回的编程(ROP 链)来执行任意代码。ROP 链由有用的“小工具”或应用程序中执行有用任务的汇编程序段组成,这些任务被链接在一起。一个常见的 ROP 小工具是使用jmp edx. 另一个有用的 ROP 小工具是对 的调用system(),请记住,由于 ASLR,ret2libc 调用system()将失败,因为您不知道此函数的地址,因此需要 ROP 小工具。这些是一些简单的示例,但是 ROP 链也可能非常复杂。ROP 链很有用,因为它们由必须可执行且非随机的代码组成。在目标应用程序中。在像 Apache 这样的应用程序中,必然会有许多有用的 ROP 小工具。
或者另一种选择是泄漏内存以找到可以放置有效负载的内存地址。然后击败 NX 位(可能需要 ROP 链)以使您的有效负载可执行并将 EIP/RIP 指向您的有效负载。
繁荣。