Entry № 227
命令注入
命令注入 是什么?
命令注入用户输入未经过滤就传入操作系统 shell,导致应用程序执行攻击者提供命令的攻击。
命令注入(OS 命令注入)发生在应用程序将不可信输入拼接到系统命令并交由 shell 执行时。;、&、|、$() 或反引号等元字符允许攻击者追加额外命令,这些命令以应用进程的权限运行。其后果包括任意文件读写、横向移动、反向 shell,直至完整接管服务器。防御措施包括完全避开 shell、改用接受参数数组的语言 API、对可接受值进行白名单校验、使用经过验证的转义库、沙箱化、以最小权限用户运行服务,以及通过出站过滤限制被利用后的危害。
● 示例
- 01
拼接主机名参数的 ping 工具允许通过 127.0.0.1; cat /etc/shadow 暴露密码哈希。
- 02
图像处理接口调用 ImageMagick 时,精心构造的文件名触发攻击者命令执行。
● 常见问题
命令注入 是什么?
用户输入未经过滤就传入操作系统 shell,导致应用程序执行攻击者提供命令的攻击。 它属于网络安全的 攻击与威胁 分类。
命令注入 是什么意思?
用户输入未经过滤就传入操作系统 shell,导致应用程序执行攻击者提供命令的攻击。
如何防御 命令注入?
针对 命令注入 的防御通常结合技术控制与运营实践,详见上方完整定义。
命令注入 还有哪些其他名称?
常见的别称包括: OS 命令注入, Shell 注入。