代码注入或远程代码执行(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();

OS命令执行

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

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

一旦攻击者能够执行操作系统命令,他们就可以尝试使用a 网壳 或安装其他恶意软件。从那里,攻击者甚至可能会尝试危及其他内部系统。

查找和预防代码注入漏洞

幸运的是,如果您的网站或Web应用程序易于使用Acunetix运行自动Web扫描,您的网站或Web应用程序易受代码注入和其他漏洞,这很容易测试 漏洞扫描仪拿一个演示 并详细了解对您的网站或Web应用程序运行扫描的更多信息。

如果您发现代码注入漏洞,则消除它们的最有效方法是避免所有成本的代码评估,除非绝对和明确必需通常,含有用户输入的评估代码是一种危险的方式,您几乎总是陷入困境。甚至有一个常见的口头禅,用于php eval函数:“eval()是邪恶的”。如果需要代码评估,则必须使用强大的用户输入验证。它需要尽可能多地限制不受信任的数据。请记住,攻击者可能会使用许多方法来围绕输入验证条件。笔记  - 一些来源使用该术语 代码注入 请参考将任何类型的代码注入Web应用程序的所有类型的攻击。根据这些来源,有许多类型的代码注入攻击,包括  SQL注入 attacks, 跨站点脚本(XSS) attacks (also called HTML脚本注入 or JavaScript注入), 乃至 命令注射 attacks (also called 壳注射)。 Acunetix,如OWASP,使用该术语 代码注入 to refer only to 远程代码执行 (also called 动态评估)。

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