1.6 命令执行漏洞(OS Exec/injection)
0x01 漏洞描述
命令执行/注入漏洞通常因为应用在服务器上拼接系统命令而造成的漏洞。攻击者通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。
0x02 常见应用场景
命令执行/注入漏洞通常出现在调用外部程序完成一些功能的情景下。
- 管理界面的配置主机名/IP/掩码/网关、查看系统信息等功能处
- 关闭、重启等功能处
- ping、nslookup等验证主机等功能处
- 提供发送邮件、转换图片等功能处
0x03 漏洞危害
攻击者可在服务器通过利用拼接、管道符、通配符等绕过手段来执行任意命令,写入后门,从而入侵服务器,获取服务器权限,直接导致服务器沦陷。
0x04 修复建议
- 在代码级调用shell时,对命令行中的特殊字符(比如
|
、&
、;
等)进行转义,防止执行其他非法命令。 - 根据业务逻辑进行白名单方式校验或使用正则表达式进行过滤。
- PHP中可使用
escapeshellarg
、escapeshellcmd
来转义对应敏感字符。 - 对于相关敏感的命令执行函数,做好参数校验和合法性验证,或者直接在配置文件中禁用该函数,不要让用户可以直接控制
eval
、system
、exec
、shell_exec
等函数的参数 。