漏洞利用和有效载荷如何协同工作?

信息安全 网络 开发 元数据
2021-09-01 13:07:38

我知道 Metasploit 框架已有几年了,但我从未真正深入了解它。我对网络有一些了解,但我不是专业人士。我用 Metasploit 测试了一些东西,我对一件事感到好奇。(如果我错了请纠正我)

假设 Microsoft 正在发布新版本的 Internet Explorer。有人发现了一个漏洞(缓冲区溢出),并且使用 Metasploit(不仅是 Metasploit,而且是的),我设置了漏洞利用,设置了有效负载,设置了参数,输入了漏洞利用,然后我得到了一个 Meterpreter shell。

好的,Internet Explorer 有一个漏洞,但是漏洞利用有效负载之间的连接是如何建立的据我所知,缓冲区溢出只是导致应用程序崩溃的原因,但它是如何从应用程序崩溃到连接回黑客计算机的呢?

4个回答

该漏洞只是软件中允许攻击者获得控制权的弱点。例如(因为您提到缓冲区溢出),通过 strcpy 进行未经检查的缓冲区副本,或使用具有攻击者控制长度的 memcpy。

漏洞利用是利用漏洞的实际过程。对于缓冲区溢出,这是覆盖堆栈上保存的 EIP 的过程,或覆盖函数指针,或任何其他实际让您控制应用程序的过程。

有效载荷是您想要对漏洞利用执行的操作:它可以运行命令(例如 shell)、打开网络端口并侦听(bindshell)、连接回您(反向 shell),或者通常您可以执行的任何其他操作可能想做。通常,如果您使用 Metasploit,您想启动 Meterpreter,因为 Meterpreter 旨在让您利用它来执行各种不同的任务(屏幕截图、执行命令、泄露数据等)

您似乎对什么是 apayload和什么是 a 感到困惑exploit

  • 漏洞利用:将漏洞利用视为利用特定漏洞的一种方式。例如,在缓冲区溢出的情况下,exploit 是一个程序或工具,它将payload向该易受攻击的应用程序注入一个程序或工具,以便您访问。

示例:Metasploit 的漏洞利用库

  • 有效负载:现在考虑在成功后要执行的Payload字节代码\x12\x64\x23\xABexploit

示例:生成 shell 的 shellcode:\xeb\x12\x31\xc9\x5e\x56\x5f\xb1\x15\x8a\x06\xfe\xc8\x88\x06\x46\xe2 \xf7\xff\xe7\xe8\xe9\xff\xff\xff\x32\xc1\x32\xca\x52\x69\x30\x74\x69 \x01\x69\x30\x63\x6a\x6f\x8a\xe4\xb1\x0c\xce\x81

漏洞利用诸如缓冲区溢出之类的错误来使目标软件执行您的代码,即有效负载

基本上,目标运行他自己的软件,然后漏洞利用出现并被执行,最后漏洞利用运行您的有效负载。根据错误,可以限制有效负载的大小。

漏洞利用可能会使目标软件崩溃,但并非必须如此。这取决于您正在利用的错误。一些漏洞利用使软件在没有任何反应的情况下继续运行。

可以这样想:

假设一个小偷想要抢劫任何被居民锁上并外出度假的房子等。

现在小偷在前门看到了一把锁,经过分析发现这把锁很容易受到重复钥匙的攻击。

请注意,“重复密钥”是 Metasploit 中的漏洞利用。因为当您进行端口扫描时,您发现该服务容易受到此漏洞的攻击。所以这是一样的。

当小偷进屋时,他决定做什么,我应该偷什么?

这里注意“要做的事情”是 Metasploit 中的有效载荷,它告诉利用系统后要做什么。因此,在通过使用 Exploit 来利用系统之后,我们通过指定有效负载来决定下一步该做什么。

所以这就是我理解 Exploit 和 Payload 如何在 Metasploit 中协同工作的方式。