通过代码注入或远程执行代码(RCE),攻击者可以通过以下方式执行恶意代码: 注射攻击。代码注入攻击与命令注入攻击不同。攻击者的能力取决于服务器端解释器的限制(例如,PHP,Python等)。在某些情况下,攻击者可能能够从代码注入升级为命令注入。

通常,代码注入发生在应用程序评估代码而不先验证代码时。以下是带有代码注入错误的示例PHP应用程序的源代码。

/**
* Get the code from a GET input
* Example - http://example.com/?code=phpinfo();
*/
$code = $_GET['code'];

/**
* Unsafely evaluate the code
* Example - phpinfo();
*/
eval("\$code;");

根据上面的示例,攻击者可以使用以下结构来执行任意PHP代码。结果,将显示PHP信息页面。

http://example.com/?code=phpinfo();

操作系统命令执行

攻击者甚至可以通过在服务器上执行任意操作系统命令来进一步升级代码注入漏洞。根据以上示例,攻击者可以执行 whoami 使用的shell命令 system() function in PHP.

http://example.com/?code=system('whoami');

一旦攻击者能够执行OS命令,他们便可以尝试使用 网页外壳 或安装其他恶意软件。从那里,攻击者甚至可能试图破坏其他内部系统。

查找和防止代码注入漏洞

幸运的是,通过使用Acunetix运行自动网络扫描,可以轻松测试您的网站或网络应用程序是否容易受到代码注入和其他漏洞的攻击 漏洞扫描器进行演示 并了解有关对您的网站或Web应用程序运行扫描的更多信息。

如果您发现代码注入漏洞,则消除它们的最有效方法是不惜一切代价避免代码评估,除非绝对明确地需要(即,没有代码评估就无法获得相同的结果)。通常,评估包含用户输入的代码是一种危险的方式,并且您几乎总是会遇到麻烦。 PHP eval函数甚至有一个共同的口头禅:“ eval()是邪恶的”。如果需要代码评估,则必须使用强大的用户输入验证。对于不受信任的数据,它需要尽可能多的限制。请记住,攻击者可能会使用许多方法来处理输入验证条件。注意  –一些消息来源使用该术语 代码注入 指将任何类型的代码注入Web应用程序的所有类型的攻击。根据这些消息来源,有很多类型的代码注入攻击,包括  SQL注入 attacks, 跨站点脚本(XSS) attacks (也被称为 HTML脚本注入 or JavaScript注入), 乃至 命令注入 attacks (也被称为 外壳注射)。与OWASP一样,Acunetix也使用术语 代码注入 to refer only to 远程执行代码 (also called 动态评估)。

Source://www.acunetix.com/blog/