最新版本 (mm/dd/yy): 04/23/2009
翻译至Special Element Injection
概述
特殊元素注入是一种注入攻击,利用与保留字和特殊字符有关的弱点。
每种编程语言和操作系统都有特殊的字符作为保留字。但是,当应用程序接收到用户输入等数据时,可能会在解析此信息时观察应用程序中的意外行为。这可能导致信息泄露,访问控制和授权绕过,代码注入以及许多其他变体。
根据使用的字符,特殊元素注入攻击可以使用宏符号,参数分隔符和空字符/空字节等来执行。
风险因素
待定(TBD)
实例
实例1–宏 标记
可以通过在输入字段或在用户配置文件中插入宏符号来执行基于宏符号的特殊元素注入攻击。这种攻击的一个已知例子可以通过Quake II服务器3.20和3.21上的漏洞利用来表示。此漏洞允许远程用户访问服务器控制台变量(cvar)、目录列表并由Quake II服务器上的客户端执行管理命令。
在此应用程序中,客户端和服务器使用cvars来存储配置和状态信息。可以通过“$ name”语法访问cvar,其中“name”是要扩展的控制台变量的名称。
但是,可以修改客户端控制台向服务器发送恶意命令,例如“say $ rcon_password”以尝试发现内容服务器$ rcon_password变量。
通过发现密码,可以在服务器上执行进一步的操作,例如发现目录结构,命令执行和文件内容的可视化。
实例2–参数分隔符
参数分隔符是特殊元素注入的另一个变体。下面的示例说明了如何使用PHP发布系统Poster version.two上的漏洞执行此攻击。
此应用程序具有一个危险的漏洞,允许将数据插入到“mem.php”文件的字段(用户名,密码,电子邮件地址和权限)中。该文件负责管理应用程序用户。
下面显示了“mem.php”文件的一个示例,其中用户Jose具有管理权限,Alice只具有用户访问权限:
<?
Jose|12345678|jose@attack.com|admin|
Alice|87654321|alice@attack.com|normal|
?>
当用户想要编辑他的个人资料时,他必须在“index.php”页面中使用“编辑帐户”选项并输入他的登录信息。但是,使用“|”作为电子邮件字段后跟“admin”配置文件的参数分隔符,用户可以将其权限提升为管理员。例:
Username: Alice
Password: 87654321
Email: alice@attack.com |admin|
这些信息将被记录在“mem.php”文件中,如下所示:
Alice|87654321|alice@attack.com|admin|normal|
用户Alice下次登录时,应用程序将获取参数“| admin |”作为用户配置文件,从而将其权限提升为管理员配置文件。
相关的威胁代理
- 命令执行(Command Execution)
- 授权(Authorization)
相关攻击
- 注入攻击(Injection Attack)
相关漏洞
- 输入验证漏洞(Input Validation Vulnerability)
相关控件
- 输入验证漏洞(Input Validation Vulnerability)
参考文献
- http://cwe.mitre.org/data/definitions/75.html– 特殊元素注入
- http://cwe.mitre.org/data/definitions/76.html -等效元素注入
- http://cwe.mitre.org/data/definitions/141.html -参数分隔符
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=2002-0770 -Quake II服务器漏洞
- http://www.kb.cert.org/vuls/id/970915 – Quake II Server在客户端提供的输入值上执行控制台变量扩展
- http://archives.neohapsis.com/archives/bugtraq/2002-05/0118.html-Quaker II服务器问题
- http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-0307 – 攻击者将字段分隔符插入输入以得到管理员权限