代码改变世界

一身冷汗,PHP应该禁用的函数

2011-10-01 00:09  游乐场123  阅读(245)  评论(0编辑  收藏  举报

有些PHP函数应该禁用的,否则您服务器会受到万劫不复的攻击

如果你的IIS下的IUSR_YOURPC因为某种特殊的原因不得不开放“执行”权限
而你的FTP用户上传一段PHP代码到你的服务器
试想一下,下面的代码会给你的服务器带来什么后果


echo `echo HAHA,I'm in your server! HOHO`; //注意十五用的是反引号
shell_exec("tree d:"); //这些都是安全命令,在Win CMD环境下
system("format d: /x /FS:NTFS"); //参数/x表示强行卸下该卷,这个命令大家应该知道,是完全格式化硬盘,还有一个参数是全部填0的,十五就不卖弄了
echo `echo.`; //echo.在DOS下是换行,十五当年看了精通DOS6.22,感受良多
echo `echo Now I'am going to left!88`; //十五英语不太好,语法有错的话请见谅


这段代码强了!

如果IUSR_YOURPC没有权限,会提示
unable to fork 或 unable to exec...
如果IUSR_YOURPC有权限
并且没有disable_functions
那就执行如下DOS命令了

HAHA,I'm in your server! HOHO
然后列表文件
然后就强行格式化D盘了
Now I'am going to left!88



在unix和linux环境下也有类似的安全隐患,小到改个密码,大到玩转硬盘,虽然很多OS以及硬件措施对服务器的数据都有保护机制,但是我们绝对不能给破坏者这样的机会,所以在服务器上您的PHP环境应该在php.ini中加入

  1. disable_functions=set_time_limit,system,exec,shell_exec,passthru,proc_open,proc_close,proc_get_status,checkdnsrr,getmxrr,getservbyname,getservbyport,syslog,popen,show_source,highlight_file,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname,dl,socket_listen,socket_create,socket_bind,socket_accept,socket_connect,stream_socket_server,stream_socket_accept,stream_socket_client,ftp_connect,ftp_login,ftp_pasv,ftp_get,zlib.compress,gzopen,gzpassthru,gzcompress
复制代码



然后,重启你的IIS或APACHE

这里没有禁用phpinfo,这个函数可以把服务器信息透露给破坏者,如果服务器没有及时补上某些漏洞也会因此招来破坏者,但很多信息可以用PHP编程得到,十五认为,如非必要可以禁止。

PS:出于对黑客事业的尊重,这里并没有用黑客这个名词,十五喜欢用破坏者这个词。也许跟十五经常干与黑客类似的事情有关。比如告诉别人你家后门开着啊,狗洞可以钻进一个人之类的,呵呵,玩笑……