文中的情形是利用PHP的漏洞远程执行代码下载文件写入服务器并执行.
而正常情况下运行PHP的用户(一般就是Web服务器运行用户)对 Web目录是没有写权限的(除了缓存目录),而为了安全一般都用disable_functions在php.ini里禁用了PHP执行Shell的函数 (也就无法通过运行PHP WebShell回弹Shell执行Shell命令),另外open_basedir也会限制PHP的文件操作目录,明确隔离了Web目录和系统目录.就算是缓存目录,一般也会配置为不解析PHP,所以即使上传PHP WebShell到缓存目录也无法执行.如果你非要chmod -R 777 /var/www/html和允许PHP调用Shell命令,那只能说是自己的问题了.安全的Web目录权限设置:find -type d -exec chmod 755 {} \;find -type f -exec chmod 644 {} \;注意:Web目录用户不能是Web服务器运行用户,一般通过yum/apt-get安装服务的情况下是这样的.编译安装LAMP服务的注意要自己新建用户并指定用户运行Apache或者Nginx.在php.ini里禁用执行Shell的函数和限制PHP文件操作目录:disable_functions = passthru,exec,system,shell_exec,chroot,chgrp,chown,proc_open,proc_get_status,ini_alter,ini_restore,ini_set,dl,pfsockopen,symlink,popen,putenvopen_basedir=/var/www/html/:/tmp/更多"安全禁用函数"参考:http://help.aliyun.com/manual?helpId=87因 为默认情况下PHP的会话文件存放在/tmp下,上传的文件也会临时存放在/tmp下,所以需要open_basedir里设置了/tmp目录,不过无论 是会话文件存放目录还是临时上传目录,都可以在php.ini里自定义,也可以为每个虚拟主机进行自定义,隔离虚拟主机间的文件操作.