禁用方法如下:
開啟/etc/php.ini檔案,
搜尋定位到這行
1.disable_functions =
添加需禁用的函數名,比如:
代碼如下 |
複製代碼 |
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen |
相反的如果要運行php運行某個函數刪除相應的函數即可。但文章有個“eval”函數,這個不是系統函數所以無法禁止不信大家可試下。
以上只是列了部分不叫常用的檔案處理函數,你也可以把上面執行命令函數和這個函數結合,
就能夠抵制大部分的phpshell了。
但是我後來看一文章告訴我們這樣做不是萬能的在linux中可以直接突破Disable_functions執行Linux命令
代碼如下 |
複製代碼 |
<?php //PHP4調用方法 dl('../../../../../home/apache/htdocs/php4.so'); biguanspider('uname -a');//調用函數 ?> www.111cn.net <?php //PHP5調用方法 dl('../../../../../home/apache/htdocs/php5.so'); spiderbiguan('uname -a');//調用函數 ?> |
很多管理員在封殺PHP危險函數的時候一般都是這樣的:disable_functions = proc_open,exec,passthru,shell_exec,system,popen
但是如果編譯PHP時帶–enable-pcntl參數就危險了,可以用pcntl_exec函數執行指定程式,也可以反彈一個SHELL,在PHPINFO裡查看編譯參數。
描述:pcntl_exec — 在當前進程空間執行指定程式,具體的做法我就不寫了,所以linux安全還是得從本身設定不要想到php這樣配置就KO了。