如果必须描述这三个术语(即代码注入、命令注入和远程代码执行)之间的根本区别,那会是什么?
它们在执行攻击的方法及其在目标机器上的行为方面有何不同?
如果必须描述这三个术语(即代码注入、命令注入和远程代码执行)之间的根本区别,那会是什么?
它们在执行攻击的方法及其在目标机器上的行为方面有何不同?
嗯,让我试试:
代码注入包括修改可执行文件/编译单元/脚本,使其在预期功能之上包含恶意代码。代码可以在本地注入,然后可以上传到互联网、论坛、新闻服务器等。这是一种相当简单的漏洞利用形式,类似于特洛伊木马。早期的病毒就是这样制作的,并通过共享可执行文件的用户传播。您可能今天仍然在“密钥生成器”和其他非法软件中发现这一点,以及在臭名昭著的 Windows sreensavers“.scr”等数据文件和其他本身不是可执行文件但可以加载执行代码的格式中.
恕我直言,命令注入是利用未受保护系统的弱点来允许执行任意命令来修改或损坏目标系统。例如,这可能是通过 Web URL 注入指令并让远程服务器执行它们。无保护的 SQL 字符串因此而闻名。他们要么破坏数据库,要么甚至在底层操作系统上执行代码。
远程代码执行实际上是再次制作恶意代码,但这次它没有附加到二进制单元,而是通过网络发送。与命令注入的区别在于,除了恶意代码/脚本之外,它还需要接收进程的弱点或故障,例如您会发送错误的指令,使进程崩溃,然后利用崩溃处理程序来执行与您的“崩溃数据包”一起交付的代码。大多数现代“零日”漏洞都是这样工作的。
我认为该术语的使用方式很模糊,因此其他人可能会有所不同。
代码注入:当恶意应用程序利用漏洞利用已经运行的应用程序将恶意代码插入被利用的应用程序时;改变执行路径。
命令注入:当您使用某种类型的系统输入来运行系统命令时。当输入未正确清理或检查时,可能会发生这种情况。维基百科有一个很好的例子
远程代码执行:当代码可以在系统上执行它想要的任何指令时。那里有很多漏洞,但并非所有漏洞都允许攻击者在系统上执行任意代码。获得远程代码执行是利用系统的最后一步。
把它们放在一起。 漏洞用于利用系统执行代码或命令注入以获得远程代码执行。 应该注意的是,您不需要代码/命令注入来获得远程代码执行。它们只是可能如何使用恶意代码的示例。