11.12 命令/代码执行

命令执行和代码执行功能通常都在系统后台,相比来说,命令执行的功能使用的更多一点,代码执行功能在特殊应用上面才会存在,而命令执行在类似Zabbix、WDCP等大量运维系统上都存在,如图11-23所示。

图 11-23

该功能可以直接在服务器上执行系统命令,危害性自然不言而喻,命令执行和代码执行功能再加上前面提及的文件管理和数据库管理功能,目前的webshell功能也不过如此了。

一旦这个功能被拿下,基本上服务器就沦陷了,所以在设计这类功能时应该注意以下几点:

1)严格控制该功能访问权限,建议高权限才能访问。

2)在满足业务需求的情况下,可以设置命令白名单,可使用escapeshellcmd()以及escapeshellarg()函数进行过滤,命令直接写死在代码中更好。

3)给命令及代码执行功能设置独立密码。

4)代码执行功能限制脚本可访问的路径。

5)在满足需求的情况下限制当前执行命令的系统用户权限。