Exploit 和 Payload 有什么区别?

信息安全 应用安全 开发 术语
2021-08-13 02:56:19

在计算机安全中,我们知道软件中的弱点称为漏洞(如果与安全相关)。一旦发现漏洞,理论上它需要一段代码作为概念证明(这称为漏洞利用)。在这种情况下,还提到了术语有效载荷

那么,“payload”和“exploit”有什么区别呢?

3个回答

漏洞利用是传递有效载荷的原因。以导弹为例。你有火箭和燃料以及火箭中的所有其他东西,然后你有造成实际伤害的弹头。没有弹头,导弹击中时不会做太多事情。此外,如果弹头在没有火箭发射的情况下在您的掩体中爆炸,它就没有多大用处。

发射系统(导弹)是漏洞利用,有效载荷(弹头)是实际执行某些操作的代码。

漏洞利用使您能够“弹出外壳/运行有效负载代码”。

示例有效负载是木马/RAT、键盘记录器、反向 shell 等。

只有在可以执行代码时才引用有效负载,而不是在使用诸如拒绝服务漏洞之类的东西时。

流程图 Bunker Buster 漏洞利用

您已经知道什么是漏洞。

漏洞利用是为利用特定漏洞而编写的一段代码。有效负载是通过所述漏洞执行的一段代码。

看看 Metasploit 框架。它只是漏洞利用和有效负载的集合。每个漏洞利用都可以附加各种有效负载,例如反向或绑定 shell、meterpreter shell 等。

Metasploit 框架的美妙之处在于它是模块化的。您可以混合和匹配不同的有效负载和漏洞利用来实现所需的结果。

我准备了一个更易于阅读的图表版本(我相信)。它遵循与@D3C4FF 的出色答案相同的基本原则我很想先用他的比喻,但由于最近发生的事件和当前的全球政治气候,我认为这不合适。

目标(黑冠黑猕猴自画像)很可爱,而香蕉正是我认为适合该场合的类比。两者都不是令人反感的。

显然,单个漏洞利用可以将多个有效负载传递给单个或多个目标。在后一种情况下,一箱香蕉与一只猿,或一箱香蕉在动物园中用于多个目标,可用于描述参与开发过程的各个实体(在这种情况下,板条箱将成为漏洞,而香蕉在它有效载荷)。;)

漏洞利用 -> 有效负载 -> 漏洞 -> 目标

单独的实体用颜色编码;)

虽然这个示例图可能看起来有点奇怪,但我实际上相信它不仅是有争议的(正如当前对这篇文章的投票所示)。香蕉,在其他明显的用途中,实际上已经被建议作为药物的传递机制,而普通的疫苗接种不会那么有效。

香蕉皮也完美地表示了一个漏洞利用,因为它后来就像漏洞利用一样被丢弃,而有效载荷目标通过漏洞(或者在我们的例子中,可爱的猕猴的嘴)消耗和消化。